form https://www.zhihu.com/question/19706331
(一) MKL库问题
作者:过拟合
链接:https://www.zhihu.com/question/19706331/answer/25255444
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
链接:https://www.zhihu.com/question/19706331/answer/25255444
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
MATLAB的矩阵计算使用的是Intel自己出的Math kernel library(MKL),这个库远比其他的blas/lapack库要快。C快在循环,要想矩阵计算也和MATLAB一样快,那就得链接MKL,写起来免不了各种折腾。而且,即使你链接上了,编译时各种优化选项之类的还是比不上人家专业的设定,速度很难接近MATLAB。
我自己在Gentoo上试过源里的所有blas/lapack库,无一能与MKL匹敌,而且连接近都不可能。甚至我把python的NumPy库链接上MKL后,速度也只是勉强接近。由于Gentoo的MKL库永远是最新的,而每一个新版本的MKL库对矩阵计算都有略微提升,导致可能暂时NumPy与MATLAB可以匹敌。但是一旦更新版本的MATLAB出来后,它会使用上更新的MKL库,这种领先优势就又丧失殆尽。你可以在MATLAB文档搜索中输入MKL,这样会被定位到MATLAB release notes,而里面就会含有这么一句话“Upgrade to Intel Math Kernel Libraries”,这就是每一个版本MATLAB矩阵计算都越发变态快的原因。
当然&#
我自己在Gentoo上试过源里的所有blas/lapack库,无一能与MKL匹敌,而且连接近都不可能。甚至我把python的NumPy库链接上MKL后,速度也只是勉强接近。由于Gentoo的MKL库永远是最新的,而每一个新版本的MKL库对矩阵计算都有略微提升,导致可能暂时NumPy与MATLAB可以匹敌。但是一旦更新版本的MATLAB出来后,它会使用上更新的MKL库,这种领先优势就又丧失殆尽。你可以在MATLAB文档搜索中输入MKL,这样会被定位到MATLAB release notes,而里面就会含有这么一句话“Upgrade to Intel Math Kernel Libraries”,这就是每一个版本MATLAB矩阵计算都越发变态快的原因。
当然&#