gpt4 book ai didi

performance - "Fast"衡量代码执行时间的方法

转载 作者:行者123 更新时间:2023-12-04 02:33:04 25 4
gpt4 key购买 nike

我的代码中有一些子例程,我需要测量它们的执行时间。让我们假设例程在极端情况下每秒被调用 10-100 次。在 Fortran 中有许多方法可以测量时间,但由于调用的频率,我需要一种开销最低的方法。

时间测量本身不需要非常准确,因为我对子程序花费几毫秒或更短时间的情况不感兴趣,而是当它们达到 50 毫秒或更多时(这是我需要的时候)采取反击行动并在内部重新平衡一些东西)。

代码是使用 MPI+OpenMP 并行化的,所以 MPI_Wtime() 将是最简单的方法,但我猜这有相当大的相关成本?我猜测一个好的解决方案是 system_clock()。有谁知道每秒调用 50-100 次是否“安全”(性能方面)?

最佳答案

system_clock 可能比 cpu_time 便宜得多,而且精度更高。

对于 Linux 上的 GFortran,我依稀记得我曾经通过在循环中调用它进行测试,并且 system_clock 每次调用大约需要 50 ns。

对于 Linux 上的 GFortran,system_clockclock_gettime(CLOCK_MONOTONIC, ...) 的包装器,(在 Linux 上使用 vDSO 而不是真正的系统调用,因此它是非常非常快),libgomp(GFortran 使用的 OpenMP 运行时库)中的 omp_get_wtime 也是如此,因此这两者的性能应该大致相同。

我不确定 MPI_Wtime 是如何在常见的 MPI 实现上实现的,但如果它是相同的,我不会感到惊讶。

关于performance - "Fast"衡量代码执行时间的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53723955/

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