如何解决MPI 单面消息时代
我们正在调整依赖于 MPI 窗口和单方面消息的基准。我们发现了一些关于基准的相当奇怪的行为,作为我们使用 MPI_Win_fence 调用微调窗口时期的频率的函数。是否有标准方法来调整围栏窗口的频率?
考虑以下伪代码:
MPI_Win_fence(0,AWin);
for( i=0; i<iters; i++ ){
MPI_Compare_and_swap(...)
if( (i%Foo) == 0 ){
MPI_Win_fence(0,AWin);
}
}
MPI_Win_fence(0,AWin);
在这种情况下,有没有办法根据 MPI 等级数推导出最佳 Foo
?假设为 MPI_COMM_WORLD
启用了此窗口,并且所有等级都参与同一个循环。在这种情况下,iters
是 >= 100,000(并且增长到 1M+)。我们发现,对于在节点之间唯一分布的少量行列(纯分布式内存),基准测试会挂在窗口上并且永远不会完成。我们已经尝试将 Foo
的模数设为 10、50、100、1000 等。当使用跨两个节点的两个等级时,所有这些都会挂起。但是,在三个节点上运行相同的基准测试(相同的算法,Foo
的相同值),该基准测试运行完成。我们目前使用的是使用 GCC 7.5.0 编译的 OpenMPI 4.1.0,在 1GbE 上运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。