2014-01-24 5 views
1

В настоящее время я использую MATLAB 2013b, и я хочу создать скрипт, который может работать с параллелизмом и без него. В предыдущей версии MATLAB я использовал команду parfor вместо команды for. Параллелизм активировался только тогда, когда мне это нужно, используя команду matlabpool. В моей текущей версии MATLAB я удивлен, потому что, когда я использую parfor без matlabpool, начинается параллельный пул.Параллельный и непараллельный скрипт Matlab - использование parfor

Одно решение могло бы написать несколько циклов для решения параллельной и непараллельной версии, но для этого требуется много времени.

Так что я ищу одно решение для использования parfor в параллельном и непараллельном контексте.

+0

Превращение 'parfor' в классический' for 'также отлично подходит для отладки. Я смотрел именно на это! –

ответ

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

Смежные вопросы