2014-08-28 92 views
0

林使用Matpower - matlab工具箱並行計算和建立計算機集羣來模擬其在下面示出的方案:這可以並行實現Matlabpool嗎?

matlabpool open job1 5 % matlabpool means computer cluster 

spmd %the statement from the Parallel computing toolbox 
    % Run all the statements in parallel 
    % first part of code 
    if labindex==1 
     runopf('casea'); 
    end 
    % second part of code 
    if labindex==2 
     runopf('caseb'); 
    end 
end 

matlabpool close; 

當labindex是1的代碼在此程序中的第一部分是在運行「計算機1「,當labindex爲2時,則程序中的第二部分代碼」正在計算機2中運行「。我的問題是上面顯示的主代碼依次或並行運行?

我的意思是,第二部分代碼是否必須等待執行,直到執行代碼的第一部分,或者可以在集羣中的兩臺不同計算機上並行執行兩部分代碼?

回答

0

spmd和相應end之間的代碼發送到所有工人(在你的情況5),他們在並行執行這些指令。然後,在您的代碼中,您指示工人#1執行runopf('casea');和工人#2 runopf('caseb');。工人#3到#5將無效。

從技術上說,工人#2會稍後執行runopf('caseb');。出現延遲是因爲工號2還將檢查第一個if語句(但不會執行其中的代碼)。

+0

工作者#2的這個延遲是否直到工人#1執行或僅僅是由於if語句? – 2014-08-28 02:06:12

+0

是的,僅僅是因爲if語句。 「並行計算」意味着工作人員在其他工作人員執行自己的代碼的同時執行自己的代碼。 – anandr 2014-08-28 02:53:32