如何跟踪 MPI 集合例程的单个点对点事件?

How to trace individual point-to-point events of MPI collective routines?

提问人:Vishal Deka 提问时间:5/6/2023 更新时间:5/6/2023 访问量:27

问:

MPI 集合体例程是使用 p2p 例程实现的。我试图找出哪些 p2p 事件(就发送者、接收者、消息大小而言)构成了集体例程。换句话说,我想知道在集体中哪些等级正在与哪些其他等级进行通信。
有没有可以跟踪此类事件的工具?如果没有,是否有可能以某种方式这样做?

MPI 集群计算 HPC MPICH 英特尔-MPI

评论

1赞 Gilles Gouaillardet 5/6/2023
MPI 集合不必在 p2p 之上实现。为了弄清楚这一点,您最好查看 OSS 实现的源代码。

答:

1赞 Victor Eijkhout 5/6/2023 #1

MPI 允许您定义自己的约简运算符。你可以写一个打印出其输入和输出的。给定处理器上一组足够不同的元素,这将允许您重建约简。

警告 #1:好的 MPI 实现使用多种算法,并根据消息大小在算法之间动态切换。最好阅读文档。算法的选择通常由环境变量控制。

警告 #2:如果您定义自己的减少,很可能是它使用与默认值不同的路由。例如,您的硬件可能支持短集合操作。例如,IBM BlueGene 有一个单独的集合网络,其中 1.使其无法追踪和 2.不是 P2P 操作的序列。