Matlab并行编程方法1
相信很多朋友在利用matlab進行計算時,會遇到循環次數過大,或者是單次計算量過大的問題,比如需要計算的數值陣列數據量過大,利用傳統的編程方式,跑一次程序幾個小時,都要等的急死了是不是呢?如果遇到這種情況,則可以嘗試一下MATLAB并行計算,傳統的計算方式都是串行計算。并行計算之所以可行,取決于兩方面因素:a)現在大家的計算機是多核的,至少也是雙核了吧,有的可能8核都有,這是很重要的硬件基礎。b)MATLAB本身提供了很好的并行計算函數,加上你的聰明智慧,設計合理的軟件,這樣就有了軟件基礎了。
-
并行計算的優勢是什么?
以自己的經驗來看,MATLAB并行計算真是很厲害的,通過對原始程序很簡單的改動,就能節省很多時間。我給出一個很簡單的例子,說明并行計算的優勢所在。例如一個遺傳算法的MATLAB程序,通常的計算運行方式需要2個小時得到結果,那如果用一臺雙核的機器并行計算呢?理論上1個小時就可以跑完。那如果是用一臺8核的計算機,就只是一刻鐘(15分鐘)了。而且并行計算可以配合分布式計算服務,同時調動若干臺計算機同時工作,把剛才的程序計算時間縮短到分分鐘絕對不是難事啊。
-
如何啟動MATLAB并行計算?
以單臺雙核計算機為例。首先打開MATLAB命令窗口,輸入matlabpool open就OK了。如圖所示:
這樣,就相當于將一臺計算機的兩個核心,當做兩臺機器用啦。接下來是編程序實現的方法。
-
MATLAB并行計算的模式有幾種?
主要是兩種:parfor模式和spmd模式。兩種模式的應用都很簡單。第一個中,parfor其實就是parallel+for簡化而來,顧名思義啊,就是把原來程序中的for循環中的關鍵字forg改為parfor就OK啦。不過這是很初步的介紹,限于篇幅不能詳細展開了,詳細的可以用輸入命令help parfor查看,如圖:
-
同樣地,可以適用于spmd模式。
-
程序舉例:例如很簡單的一個程序:
tic
%傳統方式計算
c1=1;
for i = 1:500
? ?c1 = c1+max(eig(rand(i,i)));
end
t1 = toc;
matlabpool open;
%parfor并行方式計算
tic
c2=1;
parfor ii = 1:500
? c2 = c2+max(eig(rand(ii,ii)));
end
t2 = toc;
matlabpool close;
display(strcat('parfor并行計算時間:',num2str(t2),'秒'));
display(strcat('客戶端串行計算時間:',num2str(t1),'秒'));
分別用傳統方式算和parfor算,時間區別如下圖所示:
這只是用雙核計算的效果,如果是4核心8核心,效果要好的多啦,需要用MATLAB的童鞋不妨試試看咯。
-
關閉并行計算模式。
不想用了?送一個命令進去就關了,估計你已經猜到那即是:matlabpool close.如圖所示:
早日學會哦!
轉載于:https://www.cnblogs.com/qqhfeng/p/5139680.html
總結
以上是生活随笔為你收集整理的Matlab并行编程方法1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hibernate分页
- 下一篇: 他想去追是什么歌?