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

Приложение, которое использует Parallel Computing Toolbox™, может использовать профили кластеров, которые находятся в вашем MATLAB® папка preferences. Чтобы найти эту папку, используйте 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;
}