这种问题看到了很多,大部分情况是,自己用C/C++手写了一个矩阵运算的程序,与MATLAB一对比,发现速度差的不是一点半点。然后跑来提问,为啥MATLAB的矩阵运算这么快?
一句话回答,MATLAB使用了BLAS,LAPACK等高度优化的数学矩阵运算库。而这些数学计算库,又经过了CPU制造商(Intel/AMD)、操作系统开发商(Sun)的高度优化实现,实现了线程优化、并行计算、分布式计算等等,运算速度当然不能与普通人手写的C/C++程序相比。
对于Intel CPU,使用的是Intel Math Kernel Library(MKL)数学运算库。在矩阵运算方面,MKL底层使用的是BLAS, LAPACK等等。
https://software.intel.com/en-us/mkl-windows-developer-guide对于AMD CPU,使用的是AMD Core Math Library (ACML)数学运算库,在矩阵运算方面,ACML底层使用的也是BLAS,LAPACK等等。
Building with ACML - AMD在Solar系统中,MATLAB使用Sun Performance Library运算库,底层使用的也是BLAS,LAPACK等等。
Sun Performance Library |