-1

例如,在这里计算数学运算:

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

我们应该在我们的总 gflops 中计算诸如++i, i*xcol+jetc 之类的操作(在你指出这里明显的错误之前,让我们暂时忘记 flops 的严格定义)计数还是我们只需要 count Y[i]*Z[j]?我问这个的原因是我读了一些论文,他们在这里只把最后一篇算作 gflops/maths ops。

4

1 回答 1

2

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

我不在乎您是否必须进行许多数组索引计算,或者您是否找到了一些解决方法。例如,假设有一天你做了 20,000 次总算术运算来给我 5,000 次乘法,这花了你一秒钟(对于现代计算机来说太慢了)。对我来说,这是每秒 5,000 次失败。第二天,你想出了一个更好的方法来编写你的代码,你只需要 10,000 次算术运算就可以给我 5,000 次乘法,而且只需要半秒钟。即每秒 10,000 次失败。

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

于 2012-12-16T04:09:21.820 回答