转:改变matlab的数学库

MATLAB使用Basic Linear Algebra Subprograms (BLAS)来优化它的矢量内积、矩阵矢量乘积、矩阵乘积等运算。在Intel处理器运行的WINDOWS下的MATLAB可使用的BLAS库有两种:MKL(The Intel Math Kernel Library)和Automatically Tuned Linear Algebra Software(ATLAS)

    MKL库中有些函数使用了多线程并行, 用户可用环境变量 OMP_NUM_THREADS
控制MKL运行时的线程数。MKL库中除了快速BLAS库外还包括LAPACK(Linear Algebra Package), FFT等。ATLAS有单线程C BLAS库、单线程Fortran BLAS库、多线程C BLAS库、多线程Fortran BLAS库等几种;单线程与多线程库的区别在于使用单线程库时, ATLAS函数内部是串行的(相当于MKL中OMP_NUM_THREADS=1), 而使用多线程库时, ATLAS的
部分函数中使用了多线程SMP并行(相当于MKL中OMP_NUM_THREADS=2)。ATLAS的资料可从 http://math-atlas.sourceforge.net/处获得。
    综合比较,MKL库比ATLAS库性能稍好一点,在多数的运算上两者打成平手,只有在需要ABS基本运算的运算中MKL比ATLAS性能好,这是因为MKL可以使用SSE预读技术来提高速度。
   
    WINDOWS上运行的MATLAB,一直到R14版本(MATLAB7.0)仍然缺省使用ATLAS库,如果电脑是使用Intel处理器的,可以通过配置改用MKL库,在一定程度上优化运算性能。我们只需要在“系统”对话框的“高级”面板中点击环境变量按键,弹出“环境变量”对话框,在“系统变量”中增加一个环境变量BLAS_VERSION,设值为MKL库文件名mkl.dll。这样MATLAB启动时就会使用MKL作为BLAS库,并自动根据你的CPU情况选择具体的MKL库。当然,你如果对自己的CPU很熟悉,也可不需要MATLAB判断你CPU情况,在MATLAB安装目录/bin/win32/有很多mkl打头的dll文件,选择一个你认为正确的(比如mkl_p4.dll),把文件名设为环境变量BLAS_VERSION的值即可。
 
    对于单处理器电脑,多线程运算是没有什么好处的,可能还会降低性能。但是现在DUAL CORE双核电脑已开始普及,而MATLAB实际上仍然默认使用单线程,不能利用双核的优势;在WINDOWS中可以通过增加一个环境变量OMP_NUM_THREADS,设值为2,即可使MATLAB使用双线程,利用双核的计算优势。当然,这样也只能部分提高MATLAB的运算速度,因为目前使用的R14版中还有很多是基于单线程的程序,不能利用双核的优势,这只能期望下一版本的MATLAB中加入的并行计算功能来解决了。

你可能感兴趣的:(多线程,windows,matlab,library,fortran,fft)