Приложение, использующее Toolbox™ параллельных вычислений, может использовать профили кластера, находящиеся в папке настроек MATLAB ®. Чтобы найти эту папку, используйтеprefdir.
Например, при создании автономного приложения все профили, доступные в диспетчере профилей кластера, по умолчанию будут доступны в приложении.
Приложение также может использовать профиль кластера, указанный во внешнем файле. Чтобы разрешить приложению использовать этот файл, можно выполнить одно из следующих действий:
Ссылка на файл в коде.
Передайте расположение файла во время выполнения.
Чтобы экспортировать профиль кластера во внешний файл:
На вкладке Главная в разделе Среда выберите Параллельный > Управление профилями кластера.
В диалоговом окне «Диспетчер профилей кластера» выберите профиль и в разделе «Управление» нажмите кнопку «Экспорт».
Чтобы приложение могло использовать профиль кластера, заданный во внешнем файле, можно создать ссылку на файл из кода. В этом примере для связи с профилями кластера используются абсолютные пути, относительные пути и путь поиска MATLAB. Обратите внимание, что поскольку каждая ссылка указана перед компиляцией, необходимо убедиться, что каждая ссылка не изменяется.
Чтобы задать профиль кластера для приложения, можно использовать setmcruserdata функция.
Поскольку папка настроек MATLAB объединена с приложением, любые относительные ссылки на файлы в папке всегда будут работать. В коде приложения можно использовать myClusterProfile.mlsettings файл находится в папке настроек MATLAB следующим образом:
mpSettingsPath = fullfile(prefdir, 'myClusterProfile.mlsettings'); setmcruserdata('ParallelProfile', mpSettingsPath);
fullfile задает абсолютный путь для внешнего файла. Аргумент, заданный mpSettingsPath должен быть абсолютным путем. Если пользователь вашего приложения имеет профиль кластера, расположенный в его файловой системе по абсолютному пути, который не изменится, выполните ссылку на него следующим образом:mpSettingsPath = '/path/to/myClusterProfile.mlsettings'; setmcruserdata('ParallelProfile', mpSettingsPath);
mpSettingsPath = fullfile(pwd, '../rel/path/to/myClusterProfile.mlsettings'); setmcruserdata('ParallelProfile', mpSettingsPath);
-a флаг при компиляции с mcc добавляется к пути поиска MATLAB. Таким образом, можно также связать профиль кластера с приложением, которое хранится снаружи. Во-первых, использовать which для получения абсолютного пути к профилю кластера. Затем, ссылка на него.mpSettingsPath = which('myClusterProfile.mlsettings'); setmcruserdata('ParallelProfile', mpSettingsPath);
mcc -a /path/to/myClusterProfile.mlSettings -m myApp.m;
/path/to/ к пути поиска MATLAB.Если пользователь приложения myApp имеет профиль кластера, выбранный во время выполнения, его можно указать в командной строке.
myApp -mcruserdata ParallelProfile:/path/to/myClusterProfile.mlsettings |
Обратите внимание, что при использовании setmcruserdata функция в коде переопределяет использование -mcruserdata флаг.
При использовании setmcruserdata функция удаляет возможность использования любого из профилей, доступных в диспетчере профилей кластера. Чтобы повторно включить использование профилей в диспетчере профилей кластера, используйте parallel.mlSettings файл.
mpSettingsPath = '/path/to/myClusterProfile.mlsettings'; setmcruserdata('ParallelProfile', mpSettingsPath); % SOME APPLICATION CODE origSettingsPath = fullfile(prefdir, 'parallel.mlsettings'); setmcruserdata('ParallelProfile', origSettingsPath); % MORE APPLICATION CODE
mxArray *key = mxCreateString("ParallelProfile");
mxArray *value = mxCreateString("/path/to/myClusterProfile.mlsettings");
if (!setmcruserdata(key, value))
{
fprintf(stderr,
"Could not set MCR user data: \n %s ",
mclGetLastErrorMessage());
return -1;
} |