我从here进行了TBB矩阵乘法
本示例对parallel_for循环使用blocked_range的概念。我还使用英特尔MKL和特征库运行了几个程序。当我比较这些实现所花费的时间时,对于各种矩阵大小(2-4096),MKL最快,而TBB最慢(平均比本征慢10倍)。是正常现象还是我做错了什么? TBB是否至少应比本征更好?
最佳答案
这看起来像是一个非常基本的矩阵乘法算法,只不过是有关如何使用TBB的示例而已。有更好的,我可以肯定的是,英特尔MKL也将使用SSE / AVX / FMA指令。
换句话说,如果您可以用20行代码复制其性能,那么对英特尔MKL毫无意义。是的,您得到的似乎是正常的。
至少对于大型矩阵,该算法需要考虑缓存和内存子系统的其他详细信息。
关于c++ - 英特尔TBB性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41549795/