这真的很花我的时间。我找不到一种简单的方法来估计以下代码(循环)的 FLOPS,循环的单次迭代有多少 FLOPS:
float func(float * atominfo, float energygridItem, int xindex, int yindex)
{
...
for (atomid=0; atomid<numatoms*4; atomid+=4)
{
float dy = coory - atominfo[atomid+2];
float dysqpdzsq = (dy * dy) + atominfo[atomid+3];
float dx1 = coorx1 - atominfo[atomid+1];
float s, y, t;
s = atominfo[atomid] * (1.0f / sqrtf(dx1*dx1 + dysqpdzsq));
y = s - energycomp1;
t = energyvalx1 + y;
energycomp1 = (t - energyvalx1) - y;
energyvalx1 = t;
}
...
}
它看起来很简单,但我对之前给出的其他一些数字感到困惑,所以如果有人能给出确切的数字那就太好了。
Thanks.
我看到(按照复杂性增加的顺序):
- 8 个加法(包括减法)
- 3 次乘法
- 1 平方根的倒数
它们之间的关系在很大程度上取决于 CPU 系列。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)