【问题标题】:Calculating FLOPS (Floating-point Operations per Seconds)计算 FLOPS(每秒浮点运算)
【发布时间】:2012-09-21 12:29:06
【问题描述】:

如何计算我的应用程序的 FLOPS? 如果我有执行指令的总数,我可以将它除以执行时间。但是,如何计算执行指令的数量?

我的问题很笼统,非常感谢任何语言的回答。但我希望为我的应用程序找到一个由 C/C++ 和 CUDA 开发的解决方案。

我不知道标签是否正确,如果我错了,请纠正我。

【问题讨论】:

  • 我知道这个问题!我的问题很笼统。如何计算 FLOPS?甚至多核。答案也可能对我的案例“CUDA”有所帮助。
  • 我在Calculating Achieved Bandwidth and FLOPS ... 中发布了有关如何使用 NVIDIA 工具收集 FLOP 的文章。对于 x86,有几个用于计算 FLOP 的 Linux 库。 x86 性能监视器支持计数 FLOP,但您必须阅读手册才能了解细节(推测性说明、计数的内容......)

标签: c++ c cuda gdb gpu


【解决方案1】:

如果浮点运算的数量不容易建模,我要做的是生成两个可执行文件:一个是生产版本并给我执行时间,另一个是在执行浮点运算时计算所有浮点运算(当然这会很慢,但这对我们的目的无关紧要)。然后我可以通过将第二个可执行文件的浮点操作数除以第一个可执行文件的时间来计算 FLOP/s 值。

这甚至可能是自动化的,但到目前为止我还没有需要。

【讨论】:

    【解决方案2】:

    您应该对数据的处理方式进行数学建模。隔离一个循环迭代。然后计算所有简单的浮点加法、乘法、除法等。例如, y = x * 2 * (y + z*w) 是 4 个浮点运算。将结果数乘以迭代次数。结果将是您要搜索的指令数。

    【讨论】:

    • 适用于连贯的控制流和确定性分支。它不适用于具有依赖于输入的条件分支的代码(动态运行时决定执行多少 FP)。
    • 你会忽略 if (i
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2016-08-23
    相关资源
    最近更新 更多