Intell TBB性能

时间:2017-01-09 14:07:31

标签: c++ performance c++11 intel tbb

我从here

获取了TBB矩阵乘法

此示例对parallel_for循环使用blocked_range的概念。我还使用英特尔MKL和特征库运行了几个程序。当我比较这些实现所花费的时间时,MKL是最快的,而对于各种矩阵大小(2-4096),TBB是最慢的(平均比特征慢10倍)。这是正常还是我做错了什么? TBB不应该至少比本征表现更好吗?

2 个答案:

答案 0 :(得分:2)

这看起来像一个非常基本的矩阵乘法算法,仅仅是关于如何使用TBB的一个例子。有更好的,我相当肯定英特尔MKL也将使用SSE / AVX / FMA指令。

换句话说,如果您可以使用20行代码复制其性能,那么英特尔MKL就不会有任何意义。所以是的,你得到的东西似乎很正常。

至少,对于大型矩阵,算法需要考虑缓存和内存子系统的其他细节。

答案 1 :(得分:2)

  

是否正常

是的,一个程序比另一个程序慢10倍是正常的。

  

TBB不应该至少比本征表现更好吗?

我认为没有任何理由说明使用TBB进行矩阵乘法的天真实现会表现得更好,甚至接近专为快速线性代数设计的专用优化库的性能。