2015-09-15 6 views
0

Я пытаюсь использовать пакет, чтобы просто запустить 5 параллельных экземпляров скрипта. В качестве теста я попытался это:Ошибка с пакетной функцией MATLAB

for ii = 1:5 
    jj{ii} = batch('magic(5000)'); 
end 
wait(jj{5}); 

Это, кажется, работает, но я получаю большое противное предупреждение в каждом из 5 раз через. Он находится на несетевой машине, но заголовок:

«Предупреждение: объекты класса« parallel.job.CJSIndependentJob »не могут быть сохранены в файлах MAT».

Эта ошибка фактически повторяется 4 раза за итерацию цикла.

Любые идеи, в чем проблема? Я не собираюсь ничего сохранять на диске.

+0

вы проверили этот вопрос/ответ, похожий на ваш: http://stackoverflow.com/questions/28381574/matlab-createtask-with-parcluster – jack

ответ

1

предупреждения появляется потому, что по умолчанию когда команда batch используются для вызова скрипта (или строки, так как здесь), он захватывает всю рабочую область и посылает его к рабочим, чтобы они могли использовать его для своих вычисления. Это позволяет делать такие вещи:

x = 100; 
j = batch('size(x)') 

и имейте это работать.

В вашем случае, у вас есть два варианта - вы можете указать опцию 'Workspace' в batch, например, так:

j{ii} = batch('magic(1000)', 'Workspace', struct()); 

или, вы можете использовать функцию:

j{ii} = batch(@magic, 1, {1000}); % 1 is number of outputs requested