0

由于 MPI_Reduce 和 MPI_Barrier 是昂贵的命令,所以我必须减少线程之间的一些通信。我知道 MPI_Reduce 和 MPI_Barrier 的主要工作。有时我观察到 MPI_Reduce 正在减少一个线程中的所有值,并且它也在做 MPI_Barrier 的工作。如果我必须使用 mpi_Reduce 那么我可以跳过 MPI_Barrier 吗?

4

1 回答 1

3

不,MPI_Reduce()不会隐式执行MPI_Barrier()

话虽如此,MPI_Allreduce()(使用非零大小的数据)执行隐式MPI_Barrier(),因此这可能适合您的算法。

我不太清楚你的意思MPI_Barrier()是昂贵的操作。假设你有一个不错的互连,屏障本身应该很快,而且大部分时间应该是由进程不平衡引起的。

于 2020-01-13T07:33:59.783 回答