使用MPICH2库的CRAY超级计算机。每个节点有32个CPU。
我在N个不同的MPI等级上有一个浮点数,其中每个等级都在不同的节点上。我需要对这组浮子执行还原操作。我想知道MPI_Reduce是否比根据任何N值计算的减少的MPI_Gather更快。请假设根等级的减少将使用可以利用N个线程的良好并行减少算法完成
如果N的任何值都不快,那么对于较小的N,如16或更大的N,它是否会成立?
如果是真的,为什么? (例如,MPI_Reduce是否会使用树通信模式,该模式往往会隐藏缩减操作在用于与树的下一级通信的方法中的时间?)
答案 0 :(得分:2)
假设MPI_Reduce
总是比MPI_Gather
+本地减少更快。
即使存在N减少比收集慢的情况,MPI实现也可以在聚集+本地减少方面轻松实现减少。
MPI_Reduce
仅优于MPI_Gather
+本地缩减:
MPI_Reduce
是更高级别的操作,为实施提供了更多优化机会。MPI_Reduce
需要分配更少的内存MPI_Reduce
需要通过相同的链接传递更少的数据(如果使用树)或更少的数据(如果使用直接的一对一)MPI_Reduce
可以跨越更多资源分配计算(例如,使用树通信模式)那说: 永远不要假设任何表现。测量