Список функций, которые нельзя использовать в parfor - PullRequest
1 голос
/ 03 марта 2011

У меня проблема с использованием Parallel Toolbox от Matlab. Действительно, я хочу распаковать ряд архивов в цикле parfor, и кажется, что ни untar, ни system не работают. Они не вызывают ошибку, они просто не дают никакого результата.

Тот же самый код работает без проблем, как только я деактивирую параллелизм.

Есть ли ссылка, в которой перечислены функции, которые нельзя использовать в циклах parfor? Я не мог найти это легко в документации параллельного набора инструментов.

Ответы [ 2 ]

1 голос
/ 03 марта 2011

system должен работать правильно внутри цикла PARFOR - при условии, что исполняемый файл, который вы вызываете, не требует ввода данных пользователем.

>> matlabpool('size')
ans =
     3
>> parfor ii=1:2, system('pwd'), end
/tmp
ans =
     0
/tmp
ans =
     0

Основные ограничения на функции, которые нельзя использовать напрямую внутри тела цикла PARFOR, относятся к "прозрачности рабочего пространства" - вы не можете использовать функции, которые изменяют рабочее пространство, такие как assignin, load, clear и т. Д. Подробнее об этом см. на этой странице . (Конечно, вы можете вызвать функцию из тела цикла PARFOR, которая вызывает load и т. Д.)

0 голосов
/ 03 марта 2011

Вы можете попробовать что-то вроде этого.

function parallel_stuff

parfor i = 1: 10

b = my_untar (a)

end

end

function b = my_untar (a)

b = untar (a)

end

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...