Tuesday, June 19, 2007

Parallel Matlab

Matlab這個工程上常用的軟體過去最為人詬病的就是不支援多執行緒(multithread)跟多CPU,Mathworks(Matlab的開發商)還曾聲明Matlab的記憶體架構與平行處理不合,且Matlab的程式運作很少可以自動地平行化。前年開始,Matlab推出Distributed Computing Toolbox,可以將所有的函式執行平行化,可是$$代價不低。不過,從最新版的Matlab (R2007a或7.3版)開始,Matlab終於正視多核心處理器普及的現況。


從這個版本開始,部分的Matlab函式將支援mutlithread,這主要是透過mutlithread的Intel Math Kernel Library來處理線性代數的運算,如矩陣的運算就可以加速20% (2 thread)至60% (4 thread)。當然,要從更多執行緒得到好處,在同一台電腦上要至少有同樣多的CPU或核心,一旦使用的thread數量超過CPU/core數目,就會造成額外的負載而使速度變慢。至於其他的運算,如算FFT、解方程式、迴圈等,都還不支援multithread。

要啟動multithread(預設是關閉),要在File > Preferences > General > Multithreading裡面設定。

當然,還有個免費的辦法讓Matlab能運用多核心,使用multicore這個網友自製的程式,就可以把程式改寫成能在multicore執行的版本。

資料來源:The MathWorks News & Notes, p. 26-8, June 2007.

No comments: