При генерации кода MEX на платформе macOS вы получаете одно из следующих сообщений:
Предупреждающее сообщение:
The generated code contains usage of OpenMP thread private variable. This can cause the MEX to remain loaded in the memory.
Сообщение об ошибке:
The MEX file 'foo_mex' is still loaded in memory. To clear the MEX file from memory, close the MATLAB session.
Ваш MATLAB® код содержит глобальные или постоянные переменные, которые доступны из тела a parfor
-цикл. Вот пример функции MATLAB, которая содержит этот шаблон кода.
function y = foo(x) y = coder.nullcopy(x); parfor i = 1:numel(x) y(i) = x(i) + sub; end function y = sub persistent t; if isempty(t) t = 2; end y = t;
Когда вы генерируете MEX-функцию для foo
впервые можно получить предупреждающее сообщение.
Если вы пытаетесь перезаписать сгенерированный MEX путем генерации кода для foo
снова можно получить сообщение об ошибке.
При получении предупреждающего сообщения можно использовать сгенерированную MEX-функцию.
Если вы получили сообщение об ошибке, закройте текущий сеанс работы с MATLAB, чтобы очистить MEX-функцию foo_mex
из памяти. Чтобы перезаписать ранее сгенерированную MEX-функцию, откройте новый сеанс работы с MATLAB и сгенерируйте код MEX для foo
.