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中使用多核並行運算給我們帶來很多好處。
如何提高Matlab計算效率,多核處理器平行計算怎麼弄啊
如果cpu利用率低,而計算慢的話,說明你的程式處理的資料量並不大,但是處理流程很複雜,裡面肯定涉及了很多的類似於for迴圈的語句,使得程式的時間複雜度一下子就上去了。看了下面你的補充回答,好像和多核處理平行計算沒關係的。雖然最新版的matlab支援這種執行方式,但感覺你似乎還用不到這麼做。建議你還是...
如何利用雜交優勢,如何正確利用雜交優勢
中國農業出版社 雜交是指不同群體中個體間的交配。雜交的目的是使各親本的基因配合在一起,造成新的更為有利的基因型,以豐富動物的遺傳型別,導致羊群雜合基因型頻率增加,純合基因型頻率減少。通過雜交能將不同品種的特性結合在一起,創造出親本原來所不具備的特性,並能提高後代的生活力。級進雜交示意圖 如果以提高生...
如何利用vba對操作自動評分,如何利用vba對word操作自動評分
南京新華電腦專修學院 工具 巨集 設定成低 to crazy0ball 你的問題我在網上查了好多資料,但是到目前為止,還沒有辦法直接解決這個問題的辦法,估計是很難,或者說沒有辦法直接解決,因為,在你之前,在好幾個office專業論壇上已經有人就這問題進行了 沒有一個最終的解決方案.其實,說到低,就是...