如何利用多核電腦實現matlab的並行運算

時間 2021-06-18 12:43:10

1樓:匿名使用者

matlab並行運算

目前,新購置的電腦大部分都是多核的了,使用matlab進行大量計算時如何有效利用多核呢?matlab目前版本已經比較好的支援多核並行運算了。是用的matlab版本是r2007b。

電腦是雙核的。

先簡單試試:

>> matlabpool local 2

submitted parallel job to the scheduler, waiting for it to start.

connected to a matlabpool session with 2 labs.

顯示正在進行多核配置,然後,提示連線到2個“實驗室”(labs)。我這也理解的:本地虛擬出2臺可以執行matlab的工作站,這樣用分散式計算工具箱可以進行平行計算(matlabpool這個命令好像是在平行計算工具箱裡的)。

>> testparallel

elapsed 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%左右了。

>> matlabpool close

sending a stop signal to all the labs...

waiting for parallel job to finish...

performing parallel job cleanup...

done.

當要關閉開闢的2個labs時,使用matlabpool close關閉即可。

**及使用時間對比如下表:

function testparallel

%非並行

% matlabpool local 2

tictotal=10^5;

for (i=1:total)

ss(i)=insum;

endplot(ss);

toc% matlabpool close

function [s]=insum

x=abs(round(normrnd(50,40,1,1000)));

s=sum(x);

function testparallel

%並行matlabpool local 2

tictotal=10^5;

parfor (i=1:total)

ss(i)=insum;

endplot(ss);

tocmatlabpool close

function [s]=insum

x=abs(round(normrnd(50,40,1,1000)));

s=sum(x);

elapsed time is 70.471469 seconds.elapsed time is 7.750534 seconds.

70.471469/7.750534 = 9.0925,並行與否的時間比竟然是9倍,足以表明,在matlab中使用多核並行運算給我們帶來很多好處。

如何利用flash中的as實現畫筆功能

as2.0這我們提供了一些繪圖方法,利用這些方法,我們可以繪製一些圖形。下面來認識一下這些方法。首先是畫直線,要畫線應先確定線的型別等,as提供的是 linestyle 方法 該方法確定線條的型別。常用格式 mc.linestyle 粗細,顏色,透明度 該方法還有其它一些引數,本文就不介紹了。比如 ...

如何利用課堂績效表實現課堂激勵

利用課堂績效表實現課堂激勵首先,老師應該充分的備好課,在備好課的基礎上鼓勵學生積極動腦給予獎勵,這樣課堂的氣氛就提高起來了,學生的效率就提公升了。課堂績效表任務是激發學生的學習動力,充分調動學生的積 極性,但是它還不僅僅是在學生的積極性上而是實現乙個更 深層次的教育目標。最有效的激勵方式就是和金錢掛...

如何利用ERP軟體實現訂單成本核算

正航erp軟體 訂單成本核算,上圖。清晰明了了。成本算清楚,利潤也可以根據訂單一筆筆算清楚。往下繼續分解,找出成本差異點,為成本優化提供資料依據。利用erp怎麼計算成本核算 你好,我們用的是臺台階erp 1.因為各個行業成本計算的方法和側重點都不同,可以說是千差萬別。所以本文以機械製造業為例 成本計...