Skip to content

Commit 881dd0b

Browse files
committed
Merge pull request #100 from erikzenker/topic-vaddr-iter
VAddr Iterator
2 parents cb753b7 + 326709d commit 881dd0b

File tree

11 files changed

+208
-678
lines changed

11 files changed

+208
-678
lines changed

include/graybat/Cage.hpp

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,12 @@
2323

2424
namespace graybat {
2525

26-
27-
28-
2926
/************************************************************************//**
3027
* @class Cage
3128
*
3229
* @brief The Communication And Graph Environment enables to communicate
33-
* on basis of a graph with methods of a user defined communication
34-
* library.
30+
* on basis of a graph with methods provided by a communication
31+
* policy.
3532
*
3633
* A cage is defined by its Communication and Graph policy. The communication
3734
* policy provides methods for point to point and collective operations.
@@ -310,14 +307,14 @@ namespace graybat {
310307
std::for_each(vertices.begin(), vertices.end(), [&vertexIDs](Vertex v){vertexIDs.push_back(v.id);});
311308

312309
// Send hostedVertices to all other peers
313-
for(unsigned vAddr = 0; vAddr < graphContext.size(); ++vAddr){
310+
for(auto const &vAddr : graphContext){
314311
assert(nVertices[0] != 0);
315312
comm.asyncSend(vAddr, 0, graphContext, nVertices);
316313
comm.asyncSend(vAddr, 0, graphContext, vertexIDs);
317314
}
318315

319316
// Recv hostedVertices from all other peers
320-
for(unsigned vAddr = 0; vAddr < graphContext.size(); ++vAddr){
317+
for(auto const &vAddr : graphContext){
321318
std::vector<Vertex> remoteVertices;
322319
std::array<unsigned, 1> nVertices {{ 0 }};
323320
comm.recv(vAddr, 0, graphContext, nVertices);
@@ -335,14 +332,15 @@ namespace graybat {
335332

336333
}
337334

338-
template <typename T>
339-
struct maximum {
335+
336+
// template <typename T>
337+
// struct maximum {
340338

341-
T operator()(const T a, const T b){
342-
return std::max(a, b);
343-
}
339+
// T operator()(const T a, const T b){
340+
// return std::max(a, b);
341+
// }
344342

345-
};
343+
// };
346344

347345

348346
/**
@@ -776,7 +774,7 @@ namespace graybat {
776774

777775
utils::exclusivePrefixSum(recvCount.begin(), recvCount.end(), prefixsum.begin());
778776

779-
for(unsigned vAddr = 0; vAddr < graphContext.size(); vAddr++){
777+
for(auto const &vAddr : graphContext){
780778
const std::vector<Vertex> hostedVertices = getHostedVertices(vAddr);
781779
const unsigned nElementsPerVertex = recvCount.at(vAddr) / hostedVertices.size();
782780

include/graybat/communicationPolicy/BMPI.hpp

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ namespace graybat {
5050

5151
template<>
5252
struct ContextType<BMPI> {
53-
using type = graybat::communicationPolicy::bmpi::Context;
53+
using type = graybat::communicationPolicy::bmpi::Context<BMPI>;
5454
};
5555

5656
template<>
@@ -83,8 +83,8 @@ namespace graybat {
8383

8484
uriMap.push_back(std::vector<Uri>());
8585

86-
for(unsigned i = 0; i < initialContext.size(); ++i){
87-
uriMap.back().push_back(i);
86+
for(auto const &vAddr : initialContext){
87+
uriMap.back().push_back(vAddr);
8888
}
8989

9090
}
@@ -263,9 +263,9 @@ namespace graybat {
263263

264264
// Create offset map
265265
unsigned offset = 0;
266-
for (unsigned i=0; i < context.size(); ++i) {
267-
rdispls[i] = offset;
268-
offset += recvCount[i];
266+
for(auto const &vAddr : context){
267+
rdispls[vAddr] = offset;
268+
offset += recvCount[vAddr];
269269

270270
}
271271

@@ -482,15 +482,14 @@ namespace graybat {
482482

483483
std::vector<Event> events;
484484

485-
for(unsigned i = 0; i < newContext.size(); ++i){
486-
events.push_back(Event(newContext.comm.isend(i, 0, uri.data(), 1)));
487-
485+
for(auto const &vAddr : newContext){
486+
events.push_back(Event(newContext.comm.isend(vAddr, 0, uri.data(), 1)));
488487
}
489488

490-
for(unsigned i = 0; i < newContext.size(); ++i){
489+
for(auto const &vAddr : newContext){
491490
std::array<Uri, 1> otherUri {{ 0 }};
492-
newContext.comm.recv(i, 0, otherUri.data(), 1);
493-
uriMap.at(newContext.getID()).at(i) = otherUri[0];
491+
newContext.comm.recv(vAddr, 0, otherUri.data(), 1);
492+
uriMap.at(newContext.getID()).at(vAddr) = otherUri[0];
494493

495494
}
496495

include/graybat/communicationPolicy/Base.hpp

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ namespace graybat {
254254
Event e = static_cast<CommunicationPolicy*>(this)->asyncSend(rootVAddr, 0, context, sendData);
255255

256256
if(rootVAddr == context.getVAddr()){
257-
for(VAddr vAddr = 0; vAddr < context.size(); vAddr++){
257+
for(auto const &vAddr : context){
258258
size_t recvOffset = vAddr * sendData.size();
259259
std::vector<RecvValueType> tmpData(sendData.size());
260260
static_cast<CommunicationPolicy*>(this)->recv(vAddr, 0, context, tmpData);
@@ -284,7 +284,7 @@ namespace graybat {
284284

285285
if(rootVAddr == context.getVAddr()){
286286
size_t recvOffset = 0;
287-
for(VAddr vAddr = 0; vAddr < context.size(); vAddr++){
287+
for(auto const &vAddr : context){
288288
std::vector<RecvValueType> tmpData(recvCount.at(vAddr));
289289
static_cast<CommunicationPolicy*>(this)->recv(vAddr, 0, context, tmpData);
290290
std::copy(tmpData.begin(), tmpData.end(), recvData.begin() + recvOffset);
@@ -309,12 +309,12 @@ namespace graybat {
309309

310310
std::vector<Event> events;
311311

312-
for(VAddr vAddr = 0; vAddr < context.size(); vAddr++){
312+
for(auto const &vAddr : context){
313313
events.push_back(static_cast<CommunicationPolicy*>(this)->asyncSend(vAddr, 0, context, sendData));
314314

315315
}
316316

317-
for(VAddr vAddr = 0; vAddr < context.size(); vAddr++){
317+
for(auto const &vAddr : context){
318318
size_t recvOffset = vAddr * sendData.size();
319319
std::vector<RecvValueType> tmpData(sendData.size());
320320
static_cast<CommunicationPolicy*>(this)->recv(vAddr, 0, context, tmpData);
@@ -343,12 +343,12 @@ namespace graybat {
343343
static_cast<CommunicationPolicy*>(this)->allGather(context, nElements, recvCount);
344344
recvData.resize(std::accumulate(recvCount.begin(), recvCount.end(), 0U));
345345

346-
for(VAddr vAddr = 0; vAddr < context.size(); vAddr++){
346+
for(auto const &vAddr : context){
347347
events.push_back(static_cast<CommunicationPolicy*>(this)->asyncSend(vAddr, 0, context, sendData));
348348
}
349349

350350
size_t recvOffset = 0;
351-
for(VAddr vAddr = 0; vAddr < context.size(); vAddr++){
351+
for(auto const &vAddr : context){
352352
std::vector<RecvValueType> tmpData(recvCount.at(vAddr));
353353
static_cast<CommunicationPolicy*>(this)->recv(vAddr, 0, context, tmpData);
354354
std::copy(tmpData.begin(), tmpData.end(), recvData.begin() + recvOffset);
@@ -373,7 +373,7 @@ namespace graybat {
373373
std::vector<Event> events;
374374

375375
if(rootVAddr == context.getVAddr()){
376-
for(VAddr vAddr = 0; vAddr < context.size(); vAddr++){
376+
for(auto const &vAddr : context){
377377
size_t sendOffset = vAddr * recvData.size();
378378
std::vector<SendValueType> tmpData(sendData.begin() + sendOffset,
379379
sendData.begin() + sendOffset + recvData.size());
@@ -402,15 +402,15 @@ namespace graybat {
402402
std::vector<Event> events;
403403
size_t nElementsPerPeer = static_cast<size_t>(recvData.size() / context.size());
404404

405-
for(VAddr vAddr = 0; vAddr < context.size(); vAddr++){
405+
for(auto const &vAddr : context){
406406
size_t sendOffset = vAddr * nElementsPerPeer;
407407
std::vector<SendValueType> tmpData(sendData.begin() + sendOffset,
408408
sendData.begin() + sendOffset + nElementsPerPeer);
409409
events.push_back(static_cast<CommunicationPolicy*>(this)->asyncSend(vAddr, 0, context, tmpData));
410410

411411
}
412412

413-
for(VAddr vAddr = 0; vAddr < context.size(); vAddr++){
413+
for(auto const &vAddr : context){
414414
size_t recvOffset = vAddr * nElementsPerPeer;
415415
std::vector<SendValueType> tmpData(nElementsPerPeer);
416416
static_cast<CommunicationPolicy*>(this)->recv(vAddr, 0, context, tmpData);
@@ -436,9 +436,7 @@ namespace graybat {
436436
Event e = static_cast<CommunicationPolicy*>(this)->asyncSend(rootVAddr, 0, context, sendData);
437437

438438
if(rootVAddr == context.getVAddr()){
439-
static_cast<CommunicationPolicy*>(this)->recv(0, 0, context, recvData);
440-
441-
for(VAddr vAddr = 1; vAddr < context.size(); vAddr++){
439+
for(auto const &vAddr : context){
442440
std::vector<RecvValueType> tmpData(recvData.size());
443441
static_cast<CommunicationPolicy*>(this)->recv(vAddr, 0, context, tmpData);
444442

@@ -463,13 +461,11 @@ namespace graybat {
463461
using Event = Base<CommunicationPolicy>::Event;
464462

465463
std::vector<Event> events;
466-
for(VAddr vAddr = 1; vAddr < context.size(); vAddr++){
464+
for(auto const &vAddr : context){
467465
Event e = static_cast<CommunicationPolicy*>(this)->asyncSend(vAddr, 0, context, sendData);
468466
}
469467

470-
static_cast<CommunicationPolicy*>(this)->recv(0, 0, context, recvData);
471-
472-
for(VAddr vAddr = 1; vAddr < context.size(); vAddr++){
468+
for(auto const &vAddr : context){
473469
std::vector<RecvValueType> tmpData(recvData.size());
474470
static_cast<CommunicationPolicy*>(this)->recv(vAddr, 0, context, tmpData);
475471

@@ -495,7 +491,7 @@ namespace graybat {
495491
std::vector<Event> events;
496492

497493
if(rootVAddr == context.getVAddr()){
498-
for(VAddr vAddr = 0; vAddr < context.size(); vAddr++){
494+
for(auto const &vAddr : context){
499495
static_cast<CommunicationPolicy*>(this)->asyncSend(vAddr, 0, context, data);
500496

501497
}
@@ -517,11 +513,14 @@ namespace graybat {
517513
std::array<char, 0> null;
518514

519515
if(context.getVAddr() == 0){
520-
for(VAddr vAddr = 0; vAddr < context.size(); vAddr++){
516+
for(auto const &vAddr : context){
521517
static_cast<CommunicationPolicy*>(this)->recv(vAddr, 0, context, null);
518+
522519
}
523-
for(VAddr vAddr = 0; vAddr < context.size(); vAddr++){
520+
521+
for(auto const &vAddr : context){
524522
static_cast<CommunicationPolicy*>(this)->send(vAddr, 0, context, null);
523+
525524
}
526525

527526
}

0 commit comments

Comments
 (0)