void SynchronousEngine<algorithm_t>::start(){ iteration_counter_ = 0; runSynchronous( &SynchronousEngine::executeInits); while ( iteration_counter_ < max_iterations_ ){ // mark vertex which has message as active in this superstep, no it is // not parallized receiveMessages(); clearMessages(); countActiveVertices(); runSynchronous( &SynchronousEngine::executeGathers); runSynchronous( &SynchronousEngine::executeApplys); runSynchronous( &SynchronousEngine::executeScatters); runSynchronous( &SynchronousEngine::executeAggregate); ++iteration_counter_; } }
void SynchronousEngine<algorithm_t>::start(){ runSynchronous( &SynchronousEngine::executeInits); aggregator->start(); while(true){ // mark vertex which has message as active in this superstep, no it is // not parallized receiveMessages(); clearMessages(); countActiveVertices(); if(num_active_vertices_ == 0){ break; } runSynchronous( &SynchronousEngine::executeGathers); runSynchronous( &SynchronousEngine::executeApplys); runSynchronous( &SynchronousEngine::executeScatters); // probe the aggregator aggregator->tick_synchronous(); ++iteration_counter_; } }