gpt4 book ai didi

c++ - 有没有办法在运行时分析 MPI 应用程序? - 在运行时使用 MPI 调用所花费的时间

转载 作者:行者123 更新时间:2023-12-02 10:32:43 24 4
gpt4 key购买 nike

我想知道是否有一种方法可以测量运行时 MPI 调用所花费的时间。因此,我可以使用它来计算新的负载平衡。

我知道如何使用 OpenMPI 或 Intel 的一些工具来分析和跟踪程序,但这些都是在运行后使用的。此外,我尝试过 FPMPI,但没有成功,因为无法构建最后一个版本。

“手动”测量在我的应用程序中没有任何意义,因为它太大了:/

最佳答案

首先,你真的需要对 MPI 等低级通信进行概要分析吗?你不能简单地为你的高级程序计时吗?

无论如何,编写自己的 MPI 分析器非常容易。几乎所有 MPI 库(包括 Open MPI)都将其函数(例如 MPI_Send)导出为具有前缀 P 的相同函数符号的弱别名(例如,PMPI_Send)。您需要做的就是使用与 MPI 库中的原型(prototype)相同的原型(prototype)定义自己的函数。在内部,更新您的调用计数器,启动计时器,然后使用 P 调用原始 MPI 函数前缀,并在返回时停止计时器:

extern "C"
int MPI_Send(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm) {
// Update call counters and start the timer
calls["MPI_Send"]++;
timers["MPI_Send"].start();

// Call the original MPI function
int result = PMPI_Send(buf, count, dtype, dest, tag, comm);

// Stop the timer
timers["MPI_Send"].stop();

return result;
}
extern "C"部分很重要,否则如果您用 C++ 编写,您将不会覆盖正确的弱符号。

这种覆盖 MPI 库中符号的能力是标准化的 - 参见 current version of the standard 中的 #14.2 Profiling Interface。 .

关于c++ - 有没有办法在运行时分析 MPI 应用程序? - 在运行时使用 MPI 调用所花费的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61687137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com