如何测量FLOPS或IOPS?如果我确实测量普通浮点加法/乘法的时间,是否等于FLOPS?
最佳答案
FLOPS是每秒的浮点操作。要测量FLOPS,您首先需要执行此类操作的代码。如果您有这样的代码,则可以衡量的是它的执行时间。您还需要对所有浮点运算进行汇总或估算(而不是测量!),并将其除以测得的墙时间。您应该算出所有普通的运算,例如加法,减法,乘法,除法(是的,尽管它们较慢且更好地避免了,但它们仍然是FLOP。)。小心点数!在所有优化之后,您在源代码中看到的内容很可能不是编译器生成的。确保您可能必须查看装配。
FLOPS与每秒操作数不同。因此,即使某些体系结构只有一条MAD(乘法和加法)指令,它们仍然算作两个FLOP。与SSE指令类似。尽管它们执行多个FLOP,但您将它们视为一条指令。
FLOPS并非完全没有意义,但是将FLOPS与sb比较时需要小心。 FLOPS,尤其是硬件供应商。例如。假设采用MAD操作,NVIDIA会为其卡提供最高的FLOPS性能。因此,除非您的代码具有这些功能,否则您将永远无法获得这种性能。您可以重新考虑算法,或者以正确的因子修改峰值硬件FLOPS,您需要为自己的算法弄清楚!例如,如果您的代码仅执行乘法,则可以将其除以2。正确计数可能会使您的代码从次优变为非常有效,而无需更改一行代码。