如何计算我的应用程序的 FLOPS?如果我有执行指令的总数,我可以将它除以执行时间。但是,如何计算执行指令的数量?
我的问题是一般性的,任何语言的答案都受到高度赞赏。但我希望为我的应用程序找到一个由 C/C++ 和 CUDA 开发的解决方案。
我不知道标签是否正确,如果我错了,请纠正我。
您应该对您的数据所做的事情进行数学建模。隔离一个循环迭代。然后统计所有简单的浮点加法、乘法、除法等。例如
y = x * 2 * (y + z*w)
是4次浮点运算。将结果数乘以迭代次数。结果将是您正在搜索的指令的数量。
如果浮点运算的数量不容易建模,我要做的是生成两个可执行文件:一个是生产版本,给我执行时间,另一个是在执行浮点运算时计算所有浮点运算(肯定会慢一点,但这对我们的目的无关紧要)。然后我可以通过将第二个可执行文件的浮点操作数除以第一个可执行文件的时间来计算 FLOP/s 值。
这甚至可能是自动化的,但到目前为止我还没有这个需求。