void start(CmiUInt8 root) { CkCallback startCb(CkIndex_BFSMultiVertex::foo(), g[root / (N / CmiNumPes())]); CkCallback endCb(CkIndex_TestDriver::startVerificationPhase(), driverProxy); aggregator.init(g.ckGetArrayID(), startCb, endCb, -1, true); CkStartQD(CkCallbackResumeThread()); g[root / (N / CmiNumPes())].make_root(root); }
void prepare() { if (testType == usingTram) { CkCallback startCb(CkIndex_Main::start(), thisProxy); CkCallback endCb(CkIndex_Main::allDone(), thisProxy); aggregator.init(1, startCb, endCb, INT_MIN, false); } else { start(); } }
void start() { starttime = CkWallTimer(); CkCallback startCb(CkIndex_Updater::generateUpdates(), updater_array); CkCallback endCb(CkIndex_TestDriver::startVerificationPhase(), thisProxy); updater_array.generateUpdates(); CkStartQD(CkIndex_TestDriver::startVerificationPhase(), &thishandle); // Initialize the communication library, which, upon readiness, // will initiate the test via startCb //aggregator.init(updater_array.ckGetArrayID(), startCb, endCb, -1, false); }
void startVerificationPhase() { double update_walltime = CkWallTimer() - starttime; double gups = 1e-9 * tableSize * 4.0/update_walltime; CkPrintf("[Final] CPU time used = %.6f seconds, %.9f GUPS\n", update_walltime, gups); CkPrintf("%.9f Billion(10^9) Updates per second [GUP/s]\n", gups); CkPrintf("%.9f Billion(10^9) Updates/PE per second [GUP/s]\n", gups / CkNumPes()); // Repeat the update process to verify // At the end of the second update phase, check the global table // for errors in Updater::checkErrors() CkCallback startCb(CkIndex_Updater::generateUpdates(), updater_array); CkCallback endCb(CkIndex_Updater::checkErrors(), updater_array); // Initialize the communication library, which, upon readiness, // will initiate the verification via startCb //aggregator.init(updater_array.ckGetArrayID(), startCb, endCb, -1, false); checkErrors(); }