MCPcopy Create free account
hub / github.com/BirolLab/abyss / controlPopBubbles

Method controlPopBubbles

Parallel/NetworkSequenceCollection.cpp:1103–1131  ·  view source on GitHub ↗

Pop the bubbles discovered previously. */

Source from the content-addressed store, hash-verified

1101
1102/** Pop the bubbles discovered previously. */
1103size_t NetworkSequenceCollection::controlPopBubbles(ostream& out)
1104{
1105 controlDiscoverBubbles();
1106 m_comm.sendControlMessage(APC_BARRIER);
1107 m_comm.barrier();
1108 pumpNetwork();
1109
1110 // Perform a round-robin bubble pop to avoid concurrency issues
1111 SetState(NAS_POPBUBBLE);
1112 m_checkpointSum = performNetworkPopBubbles(out);
1113 EndState();
1114
1115 // Now tell all the slave nodes to perform the pop one by one
1116 for(int i = 1; i < opt::numProc; i++) {
1117 m_comm.sendControlMessage(APC_BARRIER);
1118 m_comm.barrier();
1119 m_numReachedCheckpoint = 0;
1120 m_comm.sendControlMessageToNode(i, APC_POPBUBBLE,
1121 m_numPopped + m_checkpointSum);
1122 while (!checkpointReached(1))
1123 pumpNetwork();
1124 }
1125
1126 size_t numPopped = m_checkpointSum;
1127 m_numPopped += numPopped;
1128 if (numPopped > 0)
1129 cout << "Removed " << numPopped << " bubbles.\n";
1130 return numPopped;
1131}
1132
1133/** Mark ambiguous branches. */
1134size_t NetworkSequenceCollection::controlMarkAmbiguous()

Callers

nothing calls this directly

Calls 3

barrierMethod · 0.80
sendControlMessageMethod · 0.45

Tested by

no test coverage detected