BLAS在MKL库中的sdot操作实现

时间:2012-02-20 11:54:26

标签: math numeric blas

我测试了BLAS sdot接口以进行单精确浮点运算。我发现英特尔MKL库的结果与http://netlib.org/blas/中给出的BLAS fortran代码略有不同。 MKL似乎更准确。

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

1 个答案:

答案 0 :(得分:1)

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

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

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