c++ - 当我们计算Gflop时,我们需要考虑索引计算吗?

标签 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];
             }
           }

我们是否应该将诸如 ++ii*xcol+j 等操作计入我们的总 gflops 中(在您指出这里明显的错误之前,让我们忘记暂时对触发器进行严格定义)计数还是我们只需要计数Y[i]*Z[j]?我之所以问这个问题是因为我读了一些论文,其中他们只将最后一个算作 gflops/数学运算。

最佳答案

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

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

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

关于c++ - 当我们计算Gflop时,我们需要考虑索引计算吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13898404/

相关文章:

c - 使用不同数据类型定义同一变量时 C 代码的工作方式

c - 如何从文本文件中分离二进制字符串并将它们存储在一维或二维字符数组中?

javascript - 在一段时间内增加值 JS

c++ - 如何在 C++ 中捕获整数溢出?

c++ - 从 QFormLayout 中创建的 QSpinBox 获取值

c++ - 通过 MS RPC 发送 wstring 和 ptime

python - 根据用户在 Python 3 中选择的链接输入来计算网站中 p 标签 (<p>) 的数量

c++ - 将 DLL 链接到 DLL

c++ - 在没有/proc/self/exe 的情况下查找当前可执行文件的路径

python - 问题是,您必须检查字符串列表,并且每个项目都必须比前一个项目长