当我们计算Gflop时,我们是否需要考虑索引计算?

时间:2012-12-16 03:41:19

标签: c++ c counter flops

例如,计算数学操作:

          for (int i = 0; i < 100; ++i)
          {
            for (int j = 0; j < 50; ++j)
            {
              X[i*xcol+j] = Y[i] * Z[j];
             }
           }

我们应该在我们的总gflops中计算++ii*xcol+j等操作(在你指出这里明显的错误之前,让我们暂时忘记对flops的严格定义)或者我们只计算需要数Y[i]*Z[j]?我之所以这么说的原因是我读了一些文章,他们只计算最后一篇文章,这里是gflops / maths ops。

1 个答案:

答案 0 :(得分:2)

当你为我做一份工作时,我所关心的只是计算我想要的东西。我不在乎计算你的开销。在这种情况下,目标是将每个Y乘以Z中的每一个。所以问题是,你每秒可以给我多少次乘法?

我不在乎你是否需要做很多数组索引计算,或者你找到了解决它们的方法。例如,假设有一天你做了20,000次算术运算,给了我5000次乘法,这花了你一秒钟(太慢而不能成为现代计算机)。对我来说,这是每秒5000次。第二天,你想出了一个更好的编写代码的方法,它只需要10,000次算术运算就可以给我5000次乘法,它需要你半秒钟。那是每秒10,000次触发。

显然,我宁愿在半秒内完成5,000次操作。这是唯一重要的操作。