gpt4 book ai didi

计算触发器

转载 作者:太空宇宙 更新时间:2023-11-03 23:47:44 25 4
gpt4 key购买 nike

我正在编写一个程序来计算我的 CPU 执行一个“FLops”所花费的持续时间。为此,我写了下面的代码

before = clock();
y= 4.8;
x= 2.3;
z= 0;
for (i = 0; i < MAX; ++i){
z=x*y+z;
}
printf("%1.20f\n", ( (clock()-before )/CLOCKS_PER_SEC )/MAX);

重复相同操作的问题。编译器不会优化这种“东西”吗?如果是这样,我必须做什么才能获得正确的结果?

我没有使用“rand”函数,所以它不会与我的结果冲突。

最佳答案

这有一个循环携带的依赖性并且没有足够的东西可以并行执行,所以即使有任何东西被执行,它也不会是你正在测量的 FLOPs,你可能会测量 float 的延迟添加。循环携带的依赖链序列化所有这些添加。该链有一些带有乘法的小侧链,但它们不依赖于任何东西,所以只有它们的吞吐量很重要。但在任何合理的处理器上,该吞吐量将优于添加的延迟。

要实际测量 FLOP,没有单一的方法。最佳条件在很大程度上取决于微体系结构。你需要的独立依赖链的数量,最佳的加/乘比,你是否应该使用 FMA,这一切都取决于。通常你必须做一些比你写的更复杂的事情,如果你开始使用高级语言,你必须以某种方式欺骗它实际做任何事情。

有关灵感,请参阅 how do I achieve the theoretical maximum of 4 FLOPs per cycle?

关于计算触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28840271/

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