assembly - 浮点指令和浮点运算有什么区别?
问题描述
我一直在研究计算机性能指标,我对 MFLOPS 有疑问。根据定义,MFLOPS 是 (NumberOfFloatingPointOperations/ExecutionTime*10 6 )。起初,我认为操作和指令是相同的。但是,我在 PDF 中发现了这一点:
“......因为它是基于程序中的操作而不是指令,所以 MFLOPS 比 MIPS 更有力地声称可以在不同计算机之间进行公平比较。这种声称的关键是,在不同计算机上运行的相同程序可能执行不同数量的指令,但总是执行相同数量的浮点运算......”
看来操作和指令是不一样的。有什么区别?
解决方案
FP 域中最典型的运算是加法和乘法。Arm64 Neon 指令集 OTOH 实现了融合乘法累加,在一条指令中能够执行 2 个最基本的浮点运算。
SIMD 通常还可以并行执行 2、4、8、16 次加法、乘法,甚至可能是融合乘法累加,从而增加每条指令(或每个时钟周期)的浮点操作数。
此外,随着机器学习推理引擎中广泛使用的 FP16 的引入,每条指令可以挤出两倍的运算量——事实上的行业标准仍然将浮点运算等同于单精度运算,迫使一些制造商使用其他首字母缩写词,例如每秒神经操作。
推荐阅读
- python - 如何加载 .h5 文件并使用 fastai 进行迁移学习?
- algorithm - 如何计算do while的时间复杂度?
- haskell - Lambda 函数在 Haskell 中的工作原理
- javascript - JS中通过生成器函数的最佳实践
- c - 如何定义一个从用户获取输入并将其存储到程序中进一步使用的变量的函数?
- colors - 在 Paint.net 中更改透明度值也会自动更改颜色
- python - 获取发送消息的频道的ID
- python - 基于分发过程中条件变化的Dataframe任务分发
- reactjs - Laravel API + React SPA,仅 http cookie 未设置
- css - flex box 什么是维护孩子周围空白空间的正确方法