Как добавить папки, содержащие определения классов, в объект matlab parpool
Я хотел бы использовать Matlab's parfor
ускорить некоторые части моего кода. Некоторые функции, необходимые для выполнения, находятся в каталоге, который содержит определение класса. Поэтому я добавляю необходимый каталог вместе с необходимыми файлами в объект пула следующим образом:
% instantiate parallel pool object
poolobj = gcp;
% add file containing class definition
poolobj.addAttachedFiles(fullfile(pwd,'@Gaussian','Gaussian.m'));
% add specific methods required in parfor loop
poolobj.addAttachedFiles(fullfile(pwd,'@Gaussian','logpredictive.m'));
Я подтверждаю, проверяя, что poolobj
содержит необходимые файлы в AttachedFiles
поле. Тем не менее, когда я бегу parfor
Матлаб выдает ошибку:
An UndefinedFunction error was thrown on the workers for 'logpredictive'.
This might be because the file containing 'logpredictive' is not
accessible on the workers. Use addAttachedFiles(pool, files) to specify
the required files to be attached. See the documentation for
'parallel.Pool/addAttachedFiles' for more details.
Редактировать:
Основываясь на ответе ниже, я попытался добавить весь каталог, но не получилось:
poolobj.addAttachedFiles(fullfile(pwd,'@Gaussian'));
1 ответ
Функция addAttachedFiles
может принимать имена папок, а также имена файлов, поэтому вам нужно сделать просто:
poolobj.addAttachedFiles(fullfile(pwd, '@Gaussian'));