CPU浮点运算成本

7

我对现代桌面CPU上某些浮点运算的时间成本感兴趣,以便优化数学计算。特别是我对复杂操作(如explog)和简单操作(如+*/)之间的比较感兴趣。

我尝试搜索这些信息,但找不到来源。

浮点运算的成本是多少?


为什么不直接编写一个循环来执行10,000个*和10,000个exp,并收集数据呢? - S.Lott
什么CPU?x86系列?32位还是64位? - Peter Mortensen
1个回答

2

现代CPU可以在几个时钟周期内完成浮点加减运算。许多CPU可以在少量时钟周期内完成乘法,但比加减运算要慢。除法通常比乘法慢得多。超越函数的速度比除法还要慢。

您可以通过查阅英特尔优化手册来了解一些速度方面的想法。


1
是的,这就是我需要的:英特尔优化手册C-25页。 - Ruggero Turra
为什么我能找到sin/cos/tan的指令,但找不到log/exp的指令? - Ruggero Turra
它们在英特尔指令集中。我不确定它直接计算这些;如果我没记错,它会计算一些中间结果,从而可以很容易地计算出这些结果。仔细阅读FP指令集。 - Ira Baxter
1
wiso,Fog Agner的网站上有许多CPU的表格:http://www.agner.org/optimize/instruction_tables.pdf 例如,在Sandy Bridge中,计算log(FYL2X)将需要近500个微操作(该指令是微码化的),并且需要700多个时钟周期。 - osgx
2
@wiso:请注意,好的数学库不会使用单精度或双精度的硬件超越运算,而是使用软件实现,这些实现比优化手册中列出的指令时序快得多(有时快一个数量级)。 - Stephen Canon
@StephenCanon 请进一步阐述。 - Ahmed Fasih

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接