计算代码的失败次数!

2024-01-04

这真的很花我的时间。我找不到一种简单的方法来估计以下代码(循环)的 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(使用前将#替换为@)

计算代码的失败次数! 的相关文章

随机推荐