Matlab並行運算目前,新購置的電腦大部分都是多核的了,使用Matlab進行大量計算時如何有效利用多核呢?Matlab目前版本已經比較好的支援多核並行運算了。是用的Matlab版本是R2007b。電腦是雙核的。先簡單試試:>> matlabpool local 2Submitted parallel job to the scheduler, waiting for it to start.Connected to a matlabpool session with 2 labs.顯示正在進行多核配置,然後,提示連線到2個“實驗室”(labs)。我這也理解的:本地虛擬出2臺可以執行matlab的工作站,這樣用分散式計算工具箱可以進行平行計算(matlabpool這個命令好像是在平行計算工具箱裡的)。>> testParallelElapsed time is 7.750534 seconds.這裡執行testParallel函式,已經開闢了2個labs,為了進行多核並行運算,testParallel中,要用parfor代替原來的for迴圈。在執行這個時,觀察windows任務管理器,可以發現一共有3個MATLAB.exe程序。其中一個佔記憶體較多的,應該是主控的,他基本不幹活,只負責分配,進行計算時他的cpu佔用率只有1~2%,剩下兩個程序專門用來計算的,跑起來各佔cpu 49%左右。看上去還是每個matlab程序單核運算,但是一下開2個程序,所以能把cpu用滿。當執行完testParallel後,三個程序的cpu都立刻降為1%左右了。
Matlab並行運算目前,新購置的電腦大部分都是多核的了,使用Matlab進行大量計算時如何有效利用多核呢?Matlab目前版本已經比較好的支援多核並行運算了。是用的Matlab版本是R2007b。電腦是雙核的。先簡單試試:>> matlabpool local 2Submitted parallel job to the scheduler, waiting for it to start.Connected to a matlabpool session with 2 labs.顯示正在進行多核配置,然後,提示連線到2個“實驗室”(labs)。我這也理解的:本地虛擬出2臺可以執行matlab的工作站,這樣用分散式計算工具箱可以進行平行計算(matlabpool這個命令好像是在平行計算工具箱裡的)。>> testParallelElapsed time is 7.750534 seconds.這裡執行testParallel函式,已經開闢了2個labs,為了進行多核並行運算,testParallel中,要用parfor代替原來的for迴圈。在執行這個時,觀察windows任務管理器,可以發現一共有3個MATLAB.exe程序。其中一個佔記憶體較多的,應該是主控的,他基本不幹活,只負責分配,進行計算時他的cpu佔用率只有1~2%,剩下兩個程序專門用來計算的,跑起來各佔cpu 49%左右。看上去還是每個matlab程序單核運算,但是一下開2個程序,所以能把cpu用滿。當執行完testParallel後,三個程序的cpu都立刻降為1%左右了。