当我测试模块的循环次数时,每次测试的结果都是完全不同的。

问题描述 投票:0回答:1

当我测试模块的循环次数时,每次测试的结果都大不相同?

1781344-->First test

1264558-->Second test

1388058-->Third test

use __rdtsc()记录周期,并使用AVX512内在。

有没有什么方法可以使每个测试的循环次数基本一致?

benchmarking intel avx2 avx512 rdtsc
1个回答
3
投票

完全保证一致的RDTSC计数是不切实际的。例如您必须禁用中断以及禁用turbo等通常的操作,以便CPU在空闲后以恒定速度运行。

(请注意,现代CPU上的RDTSC会计算参考周期,而不是实际的核心时钟周期.Get CPU cycle count?

并且你必须预热缓存+分支预测+所有内容并在第一次定时测试之前使CPU达到最大时钟速度。如果您是单独进行计时测试,那么将第一个计时为“冷”状态实际上是有用的。

在实践中,人们不会禁用中断,并且假设在测试运行期间发生了中断或某些事情,就忽略高异常值。无论如何,您无法禁用SMM或NMI。

© www.soinside.com 2019 - 2024. All rights reserved.