2014-01-24 14 views
1

我目前使用MATLAB 2013b,我想設計一個腳本,可以使用和不使用並行。在之前的MATLAB版本中,我用parfor命令代替for命令。並行性僅在需要使用matlabpool命令時才被激活。在我目前的MATLAB版本中,我感到很驚訝,因爲當我使用parfor而沒有matlabpool時,並行池啓動。並行和非並行matlab的腳本 - 使用parfor

一個解決方案可以編寫一些循環來處理並行和非並行版本,但要做到這一點需要很長時間。

因此,我正在尋找一種解決方案,在並行和非並行上下文中使用parfor

+0

將'parfor'變成古典'for's對於調試也非常有用。我正在尋找這個! –

回答

4

您有兩種選擇:首先,您可以使用Parallel Preferences禁用池的自動創建。其次,您可以使用PARFOR的可選第二個參數來選擇何時並行。例如:

wantParallel = (rand() > 0.5); % or however you want to choose 
if wantParallel 
    workersArg = Inf; % Use all workers 
else 
    workersArg = 0; % No workers, do not open pool 
end 
parfor (idx = 1:N, workersArg) 
    x(idx) = doStuff(...); 
end 
+0

請注意,這需要在任何情況下安裝並行計算工具箱。 – Daniel

+3

不,它不包含 - PARFOR包含在MATLAB中(它可以連續運行)。 – Edric

+0

@Edric感謝您的解決方案。這是工作!! – Guuk