从阅读文档,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