2

ドキュメントを読むと、MPI_Bcast はブロッキング呼び出しです (したがって、boost::mpi::broadcast) も同様です。ルート ノードがブロードキャストするのにかかる時間を測定して、ルート ノードから他のすべてのノードにデータを取得するのにかかる時間を適切に測定していますか?

いえ

int64_t t1 = Utility::picosecondTime(); //exactly what it sounds like; utility that measures current time in picoseconds
boost::mpi::broadcast(communicator, variable, 0);
std::cout << "Broadcast took " << Utility::picosecondTime()-t1 << std::endl;

または、単純な OpenMPI の場合:

MPI_Comm comm; 
int array[100]; 
...
int64_t t1 = Utility::picosecondTime(); 
MPI_Bcast( array, 100, MPI_INT, 0, comm); 
std::cout << "Broadcast took " << Utility::picosecondTime()-t1 << std::endl;
4

2 に答える 2