整数与浮点乘法性能,现代 CPU
计算科学
参考请求
迭代法
表现
基准测试
2021-12-11 16:02:18
1个回答
一般来说,答案是否定的。
现代 CPU 擅长处理具有高算术强度并使用浮点算术实现的问题。
一些数字将有助于解释这种差异。
在 Haswell 芯片上,MULPS 指令执行 8 次单精度浮点乘法。延迟为 5 个 CPU 周期,倒数吞吐量为 0.5。这意味着您必须等待 5 个周期才能完成第一条指令,但是如果您有一个独立的操作数流,那么您最终可以退出 2 条指令 pr。循环。这产生了 16 个单精度乘法 pr 的峰值速率。循环。相比之下,IMUL 指令将一对 32 位整数相乘。延迟是 3 个周期,倒数吞吐量是 1。如果你有一个独立的操作数流,那么峰值速率是 1 乘法 pr。循环。
只有少数非常专业的计算类型才能实现峰值翻转率,例如对适合单核 L1 缓存的向量进行内积。矩阵-矩阵乘法,用于高斯消元的所有阻塞实现的内核在 Top500 计算机上经常达到理论峰值的 70-80%。
稀疏算术通常具有非常低的算术强度并且与现代计算机体系结构不兼容。Top500 列表中的计算机以大约 2% 的峰值失败率执行稀疏基准(共轭梯度)。列表中最好的计算机的性能不到 20%。
您可以使一些稀疏算法以峰值失败率的高比例运行,但它需要针对手头的特定任务量身定制的极其激进的优化。尝试通过整数计算来提高计算速度只会进一步降低算术强度。
可以通过返回结果的巧妙算法来提高双精度浮点计算的准确性,就好像它是使用较小的单位舍入误差计算出来的,然后舍入到双精度一样。如果需要极高的准确性,那么这种方法更有可能成功。
其它你可能感兴趣的问题