Сколько раз цикл запускается в пакетном режиме с пулом 2? - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть цикл for, который генерирует массив 1 на n, а затем сохраняет этот массив в виде файла с именем «Batch_Test_N (для номера итерации цикла)».Если бы я должен был запустить это в пакетном режиме с параллельным пулом 2, каждый файл mat генерируется 2 раза, или каждый цикл запускается один раз?Например, рабочий 1 проходит весь цикл for, а затем рабочий 2 также проходит весь цикл for, или рабочий 1 выполняет только итерацию 1,3, ... 9, а рабочий 2 делает все остальное?

for i=1:10
    filename=['Batch_Test_',num2str(i)];
    Array=ones(1,i);
    save(filename,'Array')
end

job=batch('Script_Name','Pool',2)

1 Ответ

2 голосов
/ 26 сентября 2019

@ Дэвид уже дал правильный ответ в комментарии, этот ответ только для того, чтобы немного рассказать об этом.

Когда вы запускаете batch('<script>', 'Pool', N), это в основном так, как если бы вы запускали

parpool(N);
<script>

в MATLAB - другими словами, ваш скрипт выполняется с открытым параллельным пулом размера N.что batch(..., 'Pool', N) использует N+1 рабочих в кластере.

Поэтому, как правильно указывает @David - для получения параллелизма в кластере ваш сценарий должен содержать параллельные языковые конструкции, такие как parfor, spmd или parfeval. Это описано в документе: https://uk.mathworks.com/help/parallel-computing/run-a-batch-job.html#bu62o45

...