Используйте Parallel Computing Toolbox в развертываемых приложениях

Приложение, которое использует Parallel Computing Toolbox™, может использовать кластерные профили, которые находятся в вашей папке настроек MATLAB®. Чтобы найти эту папку, использовать prefdir.

Например, когда вы создаете автономное приложение, по умолчанию все профили, доступные в вашем Cluster Profile Manager, будут доступны в приложении.

Ваше приложение может также использовать кластерный профиль, данный во внешнем файле. Чтобы позволить вашему приложению использовать этот файл, вы можете также:

  1. Соединитесь с файлом в рамках своего кода.

  2. Передайте местоположение файла во время выполнения.

Экспортируйте кластерный профиль

Экспортировать кластерный профиль во внешний файл:

  1. Во вкладке Home, в разделе Environment, выбирают Parallel> Manage Cluster Profiles.

  2. В диалоговом окне Cluster Profile Manager выберите профиль, и в разделе Manage, нажмите Export.

Соединитесь с профилем Parallel Computing Toolbox в рамках своего кода

Чтобы позволить вашему приложению использовать кластерный профиль, данный во внешнем файле, можно соединиться с файлом из кода. В этом примере вы будете использовать абсолютные пути, относительные пути и путь поиска файлов 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.

Передайте профиль Parallel Computing Toolbox во время выполнения

Если пользователь вашего приложения myApp имеет кластерный профиль, который выбран во время выполнения, можно задать это в командной строке.

myApp -mcruserdata ParallelProfile:/path/to/myClusterProfile.mlsettings

Обратите внимание на то, что, когда вы используете setmcruserdata функционируйте в своем коде, вы заменяете использование -mcruserdata флаг.

Переключитесь между кластерными профилями в развертываемые приложения

Когда вы используете setmcruserdata функция, вы удаляете способность использовать любой из профилей, доступных в вашем Кластерном менеджере по Профилю. Чтобы повторно включить использование профилей в Cluster Profile Manager, используйте 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;
}