Esempio n. 1
0
    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_;
		}
    }
Esempio n. 2
0
    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_;
        }
    }