并行 OpenMP 应用程序的执行时间是多少?

What is the execution time of a parallel OpenMP application?

提问人:Athanasios Margaris 提问时间:11/16/2023 更新时间:11/20/2023 访问量:30

问:

假设我们运行一个具有 N 个线程的 OpenMP 应用程序,对于每个线程,我们使用 omp_get_wtime 记录其执行时间。通过这种方式,我们得到了 N 个执行时间,每个线程一次。这些时间中的哪一个可以用作并行应用程序的执行时间,以便用于例如,在估计加速值时?最小的一个?最大的一个?所有这些时间的平均值?保留所有这些时间是不切实际的,我想知道是否有一个简单的值可以代替它们。

并行处理 openmp

评论

2赞 Gilles 11/16/2023
为什么要在平行部分内记录时间?我会说,最好在他们之前和之后录制它。
1赞 paleonix 11/16/2023
@AthanasiosMargaris 请将您的问题作为实际的 SO 问题提出,而不是在其他问题(或答案)下面的评论中提出。

答:

1赞 Jim Cownie 11/20/2023 #1

执行时间就是这样。这是从程序开始执行到执行结束所花费的时间。您可以测量它(在 Linux 上,使用 time 命令,无需对代码进行任何内部检测)。

对单个线程或特定代码区域的执行时间进行任何内部测量都可能有助于理解负载不平衡和扩展不良的其他原因,但执行整个代码的绝对时间(即挂钟)才是最重要的。

p.s. 如果你要绘制缩放性能,我的 CpuFun 博客“呈现并行性能”可能会很有趣。