Как добавить папки, содержащие определения классов, в объект 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'));
Другие вопросы по тегам