MPI: Commands channel is now used only for job level informations, messages channels for data used in a job.

This commit is contained in:
Benjamin Bouvier 2012-08-02 16:46:00 +02:00
commit d48f045451
3 changed files with 12 additions and 12 deletions

View file

@ -668,7 +668,7 @@ namespace eo
timerStat.start("master_wait_for_all_responses"); timerStat.start("master_wait_for_all_responses");
while( assignmentAlgo.availableWorkers() != totalWorkers ) while( assignmentAlgo.availableWorkers() != totalWorkers )
{ {
bmpi::status status = comm.probe( bmpi::any_source, bmpi::any_tag ); bmpi::status status = comm.probe( bmpi::any_source, eo::mpi::Channel::Messages );
int wrkRank = status.source(); int wrkRank = status.source();
that.handleResponse( wrkRank ); that.handleResponse( wrkRank );
comm.send( wrkRank, Channel::Commands, Message::Finish ); comm.send( wrkRank, Channel::Commands, Message::Finish );
@ -716,7 +716,7 @@ namespace eo
# ifndef NDEBUG # ifndef NDEBUG
eo::log << "[M" << comm.rank() << "] Waitin' for node..." << std::endl; eo::log << "[M" << comm.rank() << "] Waitin' for node..." << std::endl;
# endif # endif
bmpi::status status = comm.probe( bmpi::any_source, bmpi::any_tag ); bmpi::status status = comm.probe( bmpi::any_source, eo::mpi::Channel::Messages );
int wrkRank = status.source(); int wrkRank = status.source();
# ifndef NDEBUG # ifndef NDEBUG
eo::log << "[M" << comm.rank() << "] Node " << wrkRank << " just terminated." << std::endl; eo::log << "[M" << comm.rank() << "] Node " << wrkRank << " just terminated." << std::endl;

View file

@ -138,7 +138,7 @@ namespace eo
{ {
EOT individual; EOT individual;
MultiStartData< EOT >& d = *_data; MultiStartData< EOT >& d = *_data;
d.comm.recv( wrkRank, 1, individual ); d.comm.recv( wrkRank, eo::mpi::Channel::Messages, individual );
d.bests.push_back( individual ); d.bests.push_back( individual );
} }
}; };
@ -159,7 +159,7 @@ namespace eo
{ {
_data->resetAlgo( _data->pop ); _data->resetAlgo( _data->pop );
_data->algo( _data->pop ); _data->algo( _data->pop );
_data->comm.send( _data->masterRank, 1, _data->pop.best_element() ); _data->comm.send( _data->masterRank, eo::mpi::Channel::Messages, _data->pop.best_element() );
} }
}; };
@ -265,12 +265,12 @@ namespace eo
for( unsigned i = 0 ; i < nbWorkers ; ++i ) for( unsigned i = 0 ; i < nbWorkers ; ++i )
{ {
int wrkRank = workers[i]; int wrkRank = workers[i];
eo::mpi::Node::comm().send( wrkRank, 1, seeds[ i ] ); eo::mpi::Node::comm().send( wrkRank, eo::mpi::Channel::Commands, seeds[ i ] );
} }
} else } else
{ {
int seed; int seed;
eo::mpi::Node::comm().recv( _masterRank, 1, seed ); eo::mpi::Node::comm().recv( _masterRank, eo::mpi::Channel::Commands, seed );
eo::log << eo::debug << eo::mpi::Node::comm().rank() << "- Seed: " << seed << std::endl; eo::log << eo::debug << eo::mpi::Node::comm().rank() << "- Seed: " << seed << std::endl;
eo::rng.reseed( seed ); eo::rng.reseed( seed );
} }

View file

@ -173,14 +173,14 @@ namespace eo
int sentSize = futureIndex - _data->index ; int sentSize = futureIndex - _data->index ;
_data->comm.send( wrkRank, 1, sentSize ); _data->comm.send( wrkRank, eo::mpi::Channel::Messages, sentSize );
eo::log << eo::progress << "Evaluating individual " << _data->index << std::endl; eo::log << eo::progress << "Evaluating individual " << _data->index << std::endl;
_data->assignedTasks[ wrkRank ].index = _data->index; _data->assignedTasks[ wrkRank ].index = _data->index;
_data->assignedTasks[ wrkRank ].size = sentSize; _data->assignedTasks[ wrkRank ].size = sentSize;
_data->comm.send( wrkRank, 1, & ( (_data->table())[ _data->index ] ) , sentSize ); _data->comm.send( wrkRank, eo::mpi::Channel::Messages, & ( (_data->table())[ _data->index ] ) , sentSize );
_data->index = futureIndex; _data->index = futureIndex;
} }
}; };
@ -203,7 +203,7 @@ namespace eo
void operator()(int wrkRank) void operator()(int wrkRank)
{ {
_data->comm.recv( wrkRank, 1, & (_data->table()[ _data->assignedTasks[wrkRank].index ] ), _data->assignedTasks[wrkRank].size ); _data->comm.recv( wrkRank, eo::mpi::Channel::Messages, & (_data->table()[ _data->assignedTasks[wrkRank].index ] ), _data->assignedTasks[wrkRank].size );
} }
}; };
@ -230,16 +230,16 @@ namespace eo
{ {
int recvSize; int recvSize;
_data->comm.recv( _data->masterRank, 1, recvSize ); _data->comm.recv( _data->masterRank, eo::mpi::Channel::Messages, recvSize );
_data->tempArray.resize( recvSize ); _data->tempArray.resize( recvSize );
_data->comm.recv( _data->masterRank, 1, & _data->tempArray[0] , recvSize ); _data->comm.recv( _data->masterRank, eo::mpi::Channel::Messages, & _data->tempArray[0] , recvSize );
timerStat.start("worker_processes"); timerStat.start("worker_processes");
for( int i = 0; i < recvSize ; ++i ) for( int i = 0; i < recvSize ; ++i )
{ {
_data->func( _data->tempArray[ i ] ); _data->func( _data->tempArray[ i ] );
} }
timerStat.stop("worker_processes"); timerStat.stop("worker_processes");
_data->comm.send( _data->masterRank, 1, & _data->tempArray[0], recvSize ); _data->comm.send( _data->masterRank, eo::mpi::Channel::Messages, & _data->tempArray[0], recvSize );
} }
}; };