Matlab/NumPy/C++Eigen 速度差距为什么很大?

测试了一个算例:两个10000 X 10000矩阵做乘法,只计算做乘法那一步,发现Python速度比其他两个快一倍? 硬件环境:AMD Threadr…
关注者
428
被浏览
454,228
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

比较新的版本 MATLAB 底层数学库是 MKL ,而老版本反而会根据处理器为你配置 ACML (AMD Core Math Library),所以根据反应(我没有亲自测试过),在 AMD 平台上老版本 MATLAB 反而在矩阵乘法上性能更高。

如果以当前版本来看,Intel 平台上,以默频 9900k 为例,MATLAB 2019a 做两个 10000 X 10000 的矩阵乘法时间在 4 秒左右。

另外,如果有必要,其实你可以自行为 MATLAB 编译 BLAS 的,也就是说你可以使用 openBLAS 替换 MKL,应该可以达到和其他调用 openBLAS 的库(例如你这里提到的 Numpy)相近的性能。


另外,根据这里的方法可以降低 MKL 对 AMD CPU 的“削弱”:

不过尚不清楚是否会有其他副作用

2020a 版本 MATLAB 已经不需要做任何设置就能在 Ryzen 处理器上正常发挥了