轉:改變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中加入的並行計算功能來解決了。
發佈了32 篇原創文章 · 獲贊 5 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章