從閱讀文檔,MPI_Bcast是一個阻塞調用(因此boost :: mpi :: broadcast)也是如此。衡量根節點廣播花費的時間量是衡量數據從根節點到所有其他節點所花費的時間的一個很好的衡量標準嗎?打開MPI廣播延遲測量
即
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;
謝謝,簡潔明白的答案。這個技巧也幫助我們找出了一個我們不知道的節點同步問題。 – jekelija