1

我测试了 BLASsdot接口以进行单个精确浮点点操作。我发现英特尔 MKL 库的结果与http://netlib.org/blas/中给出的 BLAS fortran 代码的结果略有不同。MKL 看起来更准确。

我只是想知道 MKL 是否进行了任何优化?或者 MKL 如何实现它以使其更准确?

4

1 回答 1

1

好吧,由于 MKL 是由特定的 CPU 供应商专门为他们自己的产品编写的,我想他们可以使用比参考实现更多的关于底层机器的知识。

首先的想法可能是他们使用优化的汇编并且始终将运行总和保留在 x87 80 位浮点堆栈上,而不会在每次迭代中将其舍入到 32 位。或者他们可能使用 SSE(2) 并以双精度计算整个总和(这对于加法和乘法来说应该不会有太大的不同,性能方面)。或者,也许他们使用了完全不同的计算方法,或者曾经使用过什么黑魔法机器。

关键是这些例程比基本参考实现更针对特定硬件进行了优化,但是如果没有看到它们的实现,我们不能说是哪种方式。上面提到的想法只是简单的方法。

于 2012-02-20T14:03:32.127 回答