计算 FLOPS(每秒浮点运算次数)

问题描述 投票:0回答:3

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

我的问题很笼统,非常感谢任何语言的答案。但我正在寻找适合我的应用程序的解决方案,该解决方案是由 C/C++ 和 CUDA 开发的。

不知道标签是否正确,如有错误请指正。

c++ c cuda gdb gpu
3个回答
8
投票

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

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


8
投票

您应该对数据的处理方式进行数学建模。隔离一个循环迭代。然后计算所有简单的浮点加法、乘法、除法等。例如,

y = x * 2 * (y + z*w)
是 4 个浮点运算。将结果数字乘以迭代次数。结果将是您正在搜索的指令数量。


0
投票

FLOPS = 芯片工作频率。 (MHz)x 核心数 x FP

GFLOPS = FLOPS/1GHz

© www.soinside.com 2019 - 2024. All rights reserved.