使用Linux的时间实用程序来衡量MPI程序的性能

时间:2016-12-17 13:51:40

标签: mpi benchmarking

我正在使用不同的编译器设置对MPI程序进行基准测试。

现在我使用Linux的time来执行此操作:

$> $(which time) mpirun -v [executable]

根据我的预期,我看到的价值看起来不错。

为此使用time是否有任何理由?

测量所需的CPU时间是这里的主要关注点。

我知道在一台机器上进行基准测试不一定与集群上发生的情况一致,但这超出了范围。

1 个答案:

答案 0 :(得分:1)

你应该使用time来获取MPI程序的CPU时间。

首先,这不适用于分布式设置。现在你的问题不清楚你是针对单个节点还是集群,但这并不重要。 MPI实现可以使用任何机制来甚至在单个节点上启动。因此,时间可能包括也可能不包括实际应用程序进程的CPU时间。

但是还有更多的概念问题:MPI程序的CPU时间是什么意思?这将是所有进程的CPU时间总和。这对于基准测试来说是一个糟糕的指标:它没有量化改进,也与整体运行时无关。例如,代码的非常不平衡的版本可能使用更少的CPU时间,但比平衡的更长的时间。或者启用忙等待而不是阻塞可以改善整体运行时间,但也会增加使用的CPU时间。要真正了解发生了什么,以及哪个流程使用了哪种资源,您应该使用proper parallel performance analysis tool

在HPC中,您不会按CPU时间预算,而是按预留的CPU *壁时间预算。因此,如果您必须使用一维度量标准,那么壁挂时间就是您的选择。现在你可以使用time mpirun ...来获得它,虽然准确性对于短期运行的应用程序来说不会很好。