From d48f045451460dbf25cb8d01f393bebe7627e66b Mon Sep 17 00:00:00 2001 From: Benjamin Bouvier Date: Thu, 2 Aug 2012 16:46:00 +0200 Subject: [PATCH] MPI: Commands channel is now used only for job level informations, messages channels for data used in a job. --- eo/src/mpi/eoMpi.h | 4 ++-- eo/src/mpi/eoMultiStart.h | 8 ++++---- eo/src/mpi/eoParallelApply.h | 12 ++++++------ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/eo/src/mpi/eoMpi.h b/eo/src/mpi/eoMpi.h index ae004fa1..1fe15822 100644 --- a/eo/src/mpi/eoMpi.h +++ b/eo/src/mpi/eoMpi.h @@ -668,7 +668,7 @@ namespace eo timerStat.start("master_wait_for_all_responses"); 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(); that.handleResponse( wrkRank ); comm.send( wrkRank, Channel::Commands, Message::Finish ); @@ -716,7 +716,7 @@ namespace eo # ifndef NDEBUG eo::log << "[M" << comm.rank() << "] Waitin' for node..." << std::endl; # 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(); # ifndef NDEBUG eo::log << "[M" << comm.rank() << "] Node " << wrkRank << " just terminated." << std::endl; diff --git a/eo/src/mpi/eoMultiStart.h b/eo/src/mpi/eoMultiStart.h index 5be5fd68..e4665c51 100644 --- a/eo/src/mpi/eoMultiStart.h +++ b/eo/src/mpi/eoMultiStart.h @@ -138,7 +138,7 @@ namespace eo { EOT individual; MultiStartData< EOT >& d = *_data; - d.comm.recv( wrkRank, 1, individual ); + d.comm.recv( wrkRank, eo::mpi::Channel::Messages, individual ); d.bests.push_back( individual ); } }; @@ -159,7 +159,7 @@ namespace eo { _data->resetAlgo( _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 ) { 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 { 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::rng.reseed( seed ); } diff --git a/eo/src/mpi/eoParallelApply.h b/eo/src/mpi/eoParallelApply.h index 6b58aaf1..8e379fce 100644 --- a/eo/src/mpi/eoParallelApply.h +++ b/eo/src/mpi/eoParallelApply.h @@ -173,14 +173,14 @@ namespace eo 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; _data->assignedTasks[ wrkRank ].index = _data->index; _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; } }; @@ -203,7 +203,7 @@ namespace eo 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; - _data->comm.recv( _data->masterRank, 1, recvSize ); + _data->comm.recv( _data->masterRank, eo::mpi::Channel::Messages, 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"); for( int i = 0; i < recvSize ; ++i ) { _data->func( _data->tempArray[ i ] ); } 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 ); } };