exponenta event banner

Сценарии подключаемых модулей для общих планировщиков

Общий интерфейс планировщика обеспечивает полную гибкость при конфигурировании взаимодействия клиента MATLAB ®, работников MATLAB и стороннего планировщика. Сценарии плагинов определяют, как MATLAB взаимодействует с настройкой.

В следующей таблице перечислены поддерживаемые функции сценария плагина и этап их оценки:

Имя файлаСтадия
independentSubmitFcn.mОтправка независимого задания
communicatingSubmitFcn.mОтправка задания связи
getJobStateFcn.mЗапрос состояния задания
canceJobFcn.mОтмена задания
cancelTaskFcn.mОтмена задачи
deleteJobFcn.mУдаление задания
deleteTaskFcn.mУдаление задачи
postConstructFcn.mПосле создания parallel.cluster.Generic случай

Эти сценарии подключаемых модулей вычисляются только в том случае, если они имеют ожидаемое имя файла и находятся в папке, указанной свойством PluginExingLocation кластера. Дополнительные сведения о настройке общего профиля кластера см. в разделе Настройка с помощью интерфейса общего планировщика (MATLAB Parallel Server).

Примечание

independentSubmitFcn.m должен существовать, чтобы представить независимое задание, и communicatingSubmitFcn.m должен существовать для отправки задания связи.

Примеры сценариев подключаемого модуля

Для поддержки использования общего интерфейса планировщика доступны сценарии плагинов для следующих сторонних планировщиков:

Каждый установщик предоставляет сценарии для трех возможных режимов отправки:

  • Совместно используемый - клиент может отправлять данные непосредственно планировщику, а клиент и узлы кластера (или машины) имеют общую файловую систему.

  • Удаленный - клиентский и кластерный узлы имеют общую файловую систему, но клиентский компьютер не может отправлять данные непосредственно планировщику, например, когда клиентские утилиты планировщика не установлены. В этом режиме используется ssh для передачи команд планировщику с помощью удаленного хоста.

  • Не используется совместно - узлы клиента и кластера не имеют общей файловой системы. В этом режиме используется ssh для передачи команд планировщику с помощью удаленного хоста и использует sftp протокол для копирования файлов заданий и задач в файловую систему кластера.

Каждый режим отправки имеет собственную подпапку в папке установки. Эта подпапка содержит README В файле содержатся конкретные инструкции по использованию сценариев. Прежде чем использовать сценарии, решите, какой режим отправки описывает настройку сети.

Чтобы запустить программу установки, загрузите соответствующий пакет поддержки для планировщика и откройте его в клиенте MATLAB. Программа установки включает мастер, который поможет создать профиль кластера для конфигурации кластера.

Если требуется настроить поведение сценариев плагина, можно задать дополнительные свойства, такие как AdditionalSubmitArgs. Дополнительные сведения см. в разделе Настройка поведения примеров сценариев подключаемых модулей (параллельный сервер MATLAB).

Если планировщик или конфигурация кластера не поддерживается одним из пакетов поддержки, рекомендуется изменить сценарии одного из этих пакетов. Дополнительные сведения о том, как написать набор сценариев плагинов для общих планировщиков, см. в разделе Написание сценариев пользовательских плагинов.

Сценарии обертки

Примеры сценариев плагинов используют сценарии обертки для упрощения реализации independentSubmitFcn.m и communicatingSubmitFcn.m. Эти сценарии не требуются, однако их использование является хорошей практикой, чтобы сделать код более читаемым. В этой таблице описаны следующие сценарии:

Имя файлаОписание
independentJobWrapper.shИспользуется в independentSubmitFcn.m для встраивания вызова исполняемого файла MATLAB с соответствующими аргументами. Он использует переменные среды для расположения исполняемого файла и его аргументов. Пример его использования см. в разделе Пример сценария для планировщика SLUM.
communicatingJobWrapper.shИспользуется в communicatingSubmitFcn.m для распределения задания связи в кластере. Этот сценарий реализует шаги задания отправки планировщика для запуска процесса MPI. Пример его использования см. в разделе Пример сценария для планировщика SLUM.

Написание сценариев пользовательских подключаемых модулей

Примечание

При написании собственных сценариев плагинов рекомендуется сначала изменить один из примеров сценариев плагинов, который наиболее точно соответствует настройкам (см. Пример сценариев плагинов).

independentSubmitFcn

При отправке независимого задания в общий кластер independentSubmitFcn.m выполняется в клиентском сеансе MATLAB.

Строка объявления этой функции должна быть:

function independentSubmitFcn(cluster,job,environmentProperties)

Каждая задача в независимом задании MATLAB соответствует одному заданию в планировщике. Цель этой функции - отправить N задания стороннему планировщику, где N - количество задач в независимом задании. Каждое из этих заданий должно:

  1. Задайте пять переменных среды, необходимых работнику MATLAB для определения отдельной задачи, которую необходимо выполнить. Дополнительные сведения см. в разделе Настройка рабочей среды.

  2. Вызовите соответствующий исполняемый файл MATLAB, чтобы запустить работника MATLAB и запустить задачу. Дополнительные сведения см. в разделе Отправка заданий планировщика для запуска работников MATLAB.

Настройте рабочую среду.  В этой таблице указаны пять переменных среды и значений, которые должны быть заданы для рабочего MATLAB для выполнения отдельной задачи:

Имя переменной средыЗначение переменной среды
PARALLEL_SERVER_DECODE_FUNCTION'parallel.cluster.generic.independentDecodeFcn'
PARALLEL_SERVER_STORAGE_CONSTRUCTORenvironmentProperties.StorageConstructor
PARALLEL_SERVER_STORAGE_LOCATION
  • При наличии общей файловой системы между клиентом и узлами кластера используйте environmentProperties.StorageLocation .

  • Если у вас нет общей файловой системы между клиентом и узлами кластера, выберите папку, видимую для всех узлов кластера. Инструкции по копированию файлов заданий и задач между узлами клиента и кластера см. в разделе Отправка без общей файловой системы.

PARALLEL_SERVER_JOB_LOCATIONenvironmentProperties.JobLocation
PARALLEL_SERVER_TASK_LOCATIONenvironmentProperties.TaskLocations{n} для nth задача

Многие планировщики поддерживают копирование среды клиента как часть команды отправки. Если это так, можно задать предыдущие переменные среды в клиенте, чтобы планировщик мог скопировать их в рабочую среду. В противном случае для пересылки этих переменных необходимо изменить команду отправки.

Отправка заданий планировщика для запуска работников MATLAB.  После определения пяти обязательных параметров для данного задания и задачи на работнике задача запускается путем вызова исполняемого файла MATLAB с подходящими аргументами. Исполняемый файл MATLAB для вызова определен в environmentProperties.MatlabExecutable. Передаваемые аргументы определяются в environmentProperties.MatlabArguments.

Примечание

Если вы не можете отправить заявку непосредственно в планировщик с клиентского компьютера, см. раздел Отправка с удаленного узла для получения инструкций по отправке с помощью ssh.

Пример сценария для планировщика SLUM.  Этот сценарий показывает базовую функцию отправки для планировщика SLUM с общей файловой системой. Более полный пример см. в разделе Примеры сценариев подключаемых модулей.

function independentSubmitFcn(cluster,job,environmentProperties)
    % Specify the required environment variables.
    setenv('PARALLEL_SERVER_DECODE_FUNCTION', 'parallel.cluster.generic.independentDecodeFcn');
    setenv('PARALLEL_SERVER_STORAGE_CONSTRUCTOR', environmentProperties.StorageConstructor);
    setenv('PARALLEL_SERVER_STORAGE_LOCATION', environmentProperties.StorageLocation);
    setenv('PARALLEL_SERVER_JOB_LOCATION', environmentProperties.JobLocation);
    
    % Specify the MATLAB executable and arguments to run on the worker.
    % These are used in the independentJobWrapper.sh script.
    setenv('PARALLEL_SERVER_MATLAB_EXE', environmentProperties.MatlabExecutable);
    setenv('PARALLEL_SERVER_MATLAB_ARGS', environmentProperties.MatlabArguments);
    
    for ii = 1:environmentProperties.NumberOfTasks
        % Specify the environment variable required to identify which task to run.
        setenv('PARALLEL_SERVER_TASK_LOCATION', environmentProperties.TaskLocations{ii});
        % Specify the command to submit the job to the SLURM scheduler.
        % SLURM will automatically copy environment variables to workers.
        commandToRun = 'sbatch --ntasks=1 independentJobWrapper.sh';
        [cmdFailed, cmdOut] = system(commandToRun);
    end
end
 

Предыдущий пример передает простой сценарий bash, independentJobWrapper.sh, к планировщику. independentJobWrapper.sh сценарий встраивает исполняемый файл MATLAB и аргументы, используя переменные среды:

#!/bin/sh
# PARALLEL_SERVER_MATLAB_EXE - the MATLAB executable to use
# PARALLEL_SERVER_MATLAB_ARGS - the MATLAB args to use
exec "${PARALLEL_SERVER_MATLAB_EXE}" ${PARALLEL_SERVER_MATLAB_ARGS}

communicatingSubmitFcn

При отправке задания связи в общий кластер communicatingSubmitFcn.m выполняется в клиентском сеансе MATLAB.

Строка объявления этой функции должна быть:

function communicatingSubmitFcn(cluster,job,environmentProperties)

Эта функция предназначена для отправки одного задания планировщику. Это задание должно:

  1. Задайте четыре переменные среды, необходимые работникам MATLAB для определения выполняемого задания. Дополнительные сведения см. в разделе Настройка рабочей среды.

  2. Вызовите MPI для распределения задания по N Работники MATLAB. N соответствует максимальному значению, указанному в NumWorkersRange свойства задания MATLAB. Дополнительные сведения см. в разделе Отправка задания планировщика для запуска процесса MPI.

Настройте рабочую среду.  В этой таблице указаны четыре переменные среды и значения, которые должны быть заданы для рабочего MATLAB для выполнения задачи связанного задания:

Имя переменной средыЗначение переменной среды
PARALLEL_SERVER_DECODE_FUNCTION'parallel.cluster.generic.communicatingDecodeFcn'
PARALLEL_SERVER_STORAGE_CONSTRUCTORenvironmentProperties.StorageConstructor
PARALLEL_SERVER_STORAGE_LOCATION
  • При наличии общей файловой системы между клиентом и узлами кластера используйте environmentProperties.StorageLocation .

  • Если у вас нет общей файловой системы между клиентом и узлами кластера, выберите папку, которая существует на всех узлах кластера. Инструкции по копированию файлов заданий и задач между узлами клиента и кластера см. в разделе Отправка без общей файловой системы.

PARALLEL_SERVER_JOB_LOCATIONenvironmentProperties.JobLocation

Многие планировщики поддерживают копирование среды клиента как часть команды отправки. Если это так, можно задать предыдущие переменные среды в клиенте, чтобы планировщик мог скопировать их в рабочую среду. В противном случае для пересылки этих переменных необходимо изменить команду отправки.

Отправить задание планировщика для запуска процесса MPI.  После определения четырех обязательных параметров для данного задания запустите задание. N рабочие процессы MATLAB с использованием mpiexec. mpiexec поставляется с Toolbox™ параллельных вычислений, который реализует стандарт интерфейса передачи сообщений (MPI) для обеспечения связи между рабочими процессами MATLAB. Для получения дополнительной информации о mpiexec, см. домашнюю страницу MPICH.

Чтобы запустить задание, необходимо отправить задание в планировщик, который выполняет следующие шаги. Обратите внимание, что matlabroot относится к расположению установки MATLAB на рабочих узлах.

  1. Запрос N процессы из планировщика. N соответствует максимальному значению, указанному в NumWorkersRange свойства задания MATLAB.

  2. Звонить mpiexec для запуска рабочих процессов MATLAB. Количество рабочих процессов MATLAB, запускаемых на каждом узле, должно соответствовать количеству процессов, выделенных планировщиком. mpiexec исполняемый файл находится в matlabroot/bin/mw_mpiexec.

    mpiexec автоматически пересылает переменные среды запущенным процессам. Поэтому перед запуском убедитесь, что переменные среды, перечисленные в разделе Настройка рабочей среды, заданы mpiexec.

    Дополнительные сведения о параметрах mpiexec, см. Использование диспетчера процессов гидры.

Примечание

Полный пример предыдущих шагов см. в разделе communicatingJobWrapper.sh сценарий, поставляемый с любым из примеров сценариев плагинов в Sample Plugin Scripts. Используйте этот сценарий в качестве отправной точки, если необходимо написать собственный сценарий.

Пример сценария для планировщика SLUM.  Следующий сценарий показывает базовую функцию отправки для планировщика SLUM с общей файловой системой.

Отправленное задание содержится в сценарии bash, communicatingJobWrapper.sh. Этот сценарий реализует соответствующие шаги в задании Submit scheduler для запуска процесса MPI для планировщика SLUM. Более полный пример см. в разделе Примеры сценариев подключаемых модулей.

function communicatingSubmitFcn(cluster,job,environmentProperties)
    % Specify the four required environment variables.
    setenv('PARALLEL_SERVER_DECODE_FUNCTION', 'parallel.cluster.generic.communicatingDecodeFcn');
    setenv('PARALLEL_SERVER_STORAGE_CONSTRUCTOR', environmentProperties.StorageConstructor);
    setenv('PARALLEL_SERVER_STORAGE_LOCATION', environmentProperties.StorageLocation);
    setenv('PARALLEL_SERVER_JOB_LOCATION', environmentProperties.JobLocation);
    
    % Specify the MATLAB executable and arguments to run on the worker.
    % Specify the location of the MATLAB install on the cluster nodes.
    % These are used in the communicatingJobWrapper.sh script.
    setenv('PARALLEL_SERVER_MATLAB_EXE', environmentProperties.MatlabExecutable);
    setenv('PARALLEL_SERVER_MATLAB_ARGS', environmentProperties.MatlabArguments);
    setenv('PARALLEL_SERVER_CMR', cluster.ClusterMatlabRoot);
    
    numberOfTasks = environmentProperties.NumberOfTasks;
    
    % Specify the command to submit a job to the SLURM scheduler which
    % requests as many processes as tasks in the job.
    % SLURM will automatically copy environment variables to workers.
    commandToRun = sprintf('sbatch --ntasks=%d communicatingJobWrapper.sh', numberOfTasks);
    [cmdFailed, cmdOut] = system(commandToRun);
end

getJobStateFcn

При запросе состояния задания, созданного с универсальным кластером, getJobStateFcn.m выполняется в клиентском сеансе MATLAB. Строка объявления этой функции должна быть:

function state = getJobStateFcn(cluster,job,state)

При использовании стороннего планировщика возможно, что планировщик может иметь больше актуальной информации о заданиях, чем та, которая доступна для панели инструментов из локального хранилища заданий. Эта ситуация особенно актуальна при использовании файловой системы без общего доступа, в которой удаленная файловая система может медленно распространять большие файлы данных обратно в локальное местоположение данных.

Чтобы получить эту информацию из планировщика, добавьте функцию с именем getJobStateFcn.m в расположение PluginTalkedLocation кластера.

Состояние, переданное в эту функцию, является состоянием, полученным из локального хранилища заданий. Тело этой функции затем может запросить планировщик, чтобы определить более точное состояние для задания и вернуть его вместо сохраненного состояния. Функция, записанная для этой цели, должна возвращать допустимое значение для состояния объекта задания. Допустимые значения: ‘pending’, ‘queued’, ‘running’, ‘finished’, или ‘failed’.

Инструкции по сопряжению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с помощью общего планировщика.

cancelJobFcn

При отмене задания, созданного с универсальным кластером, cancelJobFcn.m выполняется в клиентском сеансе MATLAB. Строка объявления этой функции должна быть:

function OK = cancelJobFcn(cluster,job)

При отмене задания, созданного с помощью общего интерфейса планировщика, это действие по умолчанию влияет только на данные задания в хранилище. Чтобы отменить соответствующие задания в планировщике, необходимо предоставить инструкции о том, что делать и когда делать с планировщиком. Для этого добавьте функцию с именем cancelJobFcn.m в расположение PluginTalkedLocation кластера.

Тело этой функции может затем послать команду планировщику, например, удалить соответствующие задания из очереди. Функция должна возвращать логический скаляр, указывающий на успех или неудачу отмены заданий в планировщике.

Инструкции по сопряжению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с помощью общего планировщика.

cancelTaskFcn

При отмене задачи, созданной с универсальным кластером, cancelTaskFcn.m выполняется в клиентском сеансе MATLAB. Строка объявления этой функции должна быть:

function OK = cancelTaskFcn(cluster,task)

При отмене задачи, созданной с помощью общего интерфейса планировщика, по умолчанию это влияет только на данные задачи в хранилище. Для отмены соответствующего задания в планировщике необходимо предоставить инструкции о том, что делать и когда делать с планировщиком. Для этого добавьте функцию с именем cancelTaskFcn.m в расположение PluginTalkedLocation кластера.

Тело этой функции может затем послать команду планировщику, например, удалить соответствующее задание из очереди планировщика. Функция должна возвращать логический скаляр, указывающий на успех или неудачу отмены задания в планировщике.

Инструкции по сопряжению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с помощью общего планировщика.

deleteJobFcn

При удалении задания, созданного с универсальным кластером, deleteJobFcn.m выполняется в клиентском сеансе MATLAB. Строка объявления этой функции должна быть:

function deleteTaskFcn(cluster,task)

При удалении задания, созданного с помощью общего интерфейса планировщика, по умолчанию это влияет только на данные задания в хранилище. Чтобы удалить соответствующие задания в планировщике, необходимо предоставить инструкции о том, что делать и когда делать с планировщиком. Для этого добавьте функцию с именем deleteJobFcn.m в расположение PluginTalkedLocation кластера.

Тело этой функции может затем послать команду планировщику, например, удалить соответствующие задания из очереди планировщика.

Инструкции по сопряжению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с помощью общего планировщика.

deleteTaskFcn

При удалении задачи, созданной с универсальным кластером, deleteTaskFcn.m выполняется в клиентском сеансе MATLAB. Строка объявления этой функции должна быть:

function deleteTaskFcn(cluster,task)

При удалении задачи, созданной с помощью общего интерфейса планировщика, по умолчанию это влияет только на данные задачи в хранилище. Чтобы удалить соответствующее задание в планировщике, необходимо предоставить инструкции о том, что делать и когда делать с планировщиком. Для этого добавьте функцию с именем deleteTaskFcn.m в расположение PluginTalkedLocation кластера.

Тело этой функции может затем послать команду планировщику, например, удалить соответствующее задание из очереди планировщика.

Инструкции по сопряжению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с помощью общего планировщика.

postConstructFcn

После создания экземпляра кластера в MATLAB, postConstructFcn.m выполняется в клиентском сеансе MATLAB. Например, следующая строка кода создает экземпляр кластера и запускает postConstructFcn функция, связанная с ‘myProfile’ профиль кластера:

c = parcluster('myProfile');

Строка объявления postConstructFcn функция должна быть:

function postConstructFcn(cluster)

Если необходимо выполнить пользовательскую настройку кластера перед его использованием, добавьте функцию с именем postConstructFcn.m в PluginScriptsLocation вашего кластера. Тело этой функции может содержать любые необходимые дополнительные шаги настройки.

Добавление пользовательской настройки

Если необходимо изменить функциональность сценариев плагина во время выполнения, используйте свойство AdditiveProperties интерфейса общего планировщика.

В качестве примера рассмотрим планировщик SLUM. Команда submit для STULM принимает –-nodelist , который позволяет указать узлы, на которых вы хотите работать. Вы можете изменить значение этого аргумента без необходимости изменять сценарии плагина. Чтобы добавить эту функцию, включите следующий шаблон кода в independentSubmitFcn.m и communicatingSubmitFcn.m сценарии:

% Basic SLURM submit command
submitCommand = 'sbatch';
 
% Check if property is defined
if isprop(cluster.AdditionalProperties, 'NodeList')
    % Add appropriate argument and value to submit string
    submitCommand = [submitCommand ' --nodelist=' cluster.AdditionalProperties.NodeList];
end 

Пример использования этого шаблона кодирования см. в разделе «Общие функции отправки сценариев» раздела «Примеры сценариев подключаемых модулей».

Установка свойств AdditiveProperties из диспетчера профилей кластера

С помощью изменения сценариев в предыдущем примере можно добавить запись AdditiveProperties в общий профиль кластера, чтобы указать список узлов для использования. Это обеспечивает метод документирования настроек, добавленных в сценарии плагина для всех, с кем вы используете профиль кластера.

Для добавления NodeList свойство профиля кластера:

  1. Запустите диспетчер профилей кластера с рабочего стола MATLAB, выбрав Параллельный (Parallel) > Управление профилями кластера (Manage Cluster Profiles).

  2. Выберите профиль для общего кластера и нажмите кнопку Изменить.

  3. Проведите к таблице AdditionalProperties и нажмите Add.

  4. Войти NodeList в качестве имени.

  5. Задайте строку в качестве типа.

  6. Установите значение в списке узлов.

Установка свойств-адресов из командной строки MATLAB

Изменяя сценарии в разделе Добавление пользовательской настройки, можно изменить список узлов из командной строки MATLAB, задав соответствующее свойство объекта кластера перед отправкой задания:

c = parcluster;
c.AdditionalProperties.NodeList = 'gpuNodeName';
j = c.batch('myScript'); 

Отображение AdditionalProperties для просмотра всех текущих свойств и их значений:

>> c.AdditionalProperties
ans = 
  AdditionalProperties with properties:
                 ClusterHost: 'myClusterHost'
                    NodeList: 'gpuNodeName'
    RemoteJobStorageLocation: '/tmp/jobs'

Управление заданиями с помощью общего планировщика

Первым требованием для управления заданиями является определение заданий в планировщике, соответствующих объекту задания MATLAB. При отправке задания планировщику команда, выполняющая отправку в функции отправки, может вернуть некоторые данные о задании из планировщика. Эти данные обычно включают идентификатор задания. Сохраняя этот идентификатор задания планировщика с помощью объекта задания MATLAB, можно позже обратиться к заданию планировщика с помощью этого идентификатора задания при отправке команд управления планировщику. Аналогично, можно сохранить сопоставление идентификаторов задач MATLAB с идентификаторами заданий планировщика для облегчения управления отдельными задачами. Функция панели инструментов, которая хранит данные кластера: setJobClusterData.

Сохранить данные планировщика заданий

В этом примере показано, как изменить independentSubmitFcn.m функция для синтаксического анализа выходных данных каждой команды, переданной планировщику SLUM. Можно использовать регулярные выражения, чтобы извлечь идентификатор задания планировщика для каждой задачи, а затем сохранить его с помощью setJobClusterData.

% Pattern to extract scheduler job ID from SLURM sbatch output
searchPattern = '.*Submitted batch job ([0-9]+).*';
 
jobIDs = cell(numberOfTasks, 1);
for ii = 1:numberOfTasks
    setenv('PARALLEL_SERVER_TASK_LOCATION', environmentProperties.TaskLocations{ii});
    commandToRun = 'sbatch --ntasks=1 independentJobWrapper.sh';
    [cmdFailed, cmdOut] = system(commandToRun);
    jobIDs{ii} = regexp(cmdOut, searchPattern, 'tokens', 'once');
end
 
% set the job IDs on the job cluster data
cluster.setJobClusterData(job, struct('ClusterJobIDs', {jobIDs}));

Получение данных планировщика заданий

В этом примере изменяется cancelJobFcn.m для отмены соответствующих заданий в планировщике SLUM. В примере используется getJobClusterData для получения данных планировщика заданий.

function OK = cancelJobFcn(cluster, job)

% Get the scheduler information for this job
data = cluster.getJobClusterData(job);
jobIDs = data.ClusterJobIDs;

for ii = 1:length(jobIDs)
    % Tell the SLURM scheduler to cancel the job
    commandToRun = sprintf('scancel ''%s''', jobIDs{ii});
    [cmdFailed, cmdOut] = system(commandToRun);
end

OK = true;

Отправка с удаленного узла

Если клиент MATLAB не может отправить сообщение непосредственно планировщику, используйте parallel.cluster.RemoteClusterAccess для установления соединения и выполнения команд на удаленном хосте.

Этот объект использует ssh протокол, и, следовательно, требует ssh служба демона, запущенная на удаленном хосте. Чтобы установить соединение, необходимо либо указать имя пользователя и пароль для удаленного узла, либо указать действительный идентификационный файл.

Следующий код выполняет команду на удаленном хосте, remoteHostname, как пользователь, user.

% This will prompt for the password of user
access = parallel.cluster.RemoteClusterAccess.getConnectedAccess('remoteHostname', 'user');
% Execute a command on remoteHostname
[cmdFailed, cmdOut] = access.runCommand(commandToRun);

Пример сценариев подключаемых модулей, использующих удаленную отправку на хост, см. в разделе Режим удаленной отправки в разделе Примеры сценариев подключаемых модулей.

Отправка без общей файловой системы

Если клиент MATLAB не имеет общей файловой системы с узлами кластера, используйте parallel.cluster.RemoteClusterAccess для установления соединения и копирования файлов заданий и задач между узлом клиента и узлом кластера.

Этот объект использует ssh протокол, и, следовательно, требует ssh служба демона, запущенная на удаленном хосте. Чтобы установить соединение, необходимо либо указать имя пользователя и пароль для удаленного узла, либо указать действительный идентификационный файл.

При использовании отправки без совместного использования необходимо указать как локальное хранилище заданий для клиента, так и внешнее хранилище заданий для кластера. Расположение внешнего хранилища заданий должно быть доступно для всех узлов кластера.

parallel.cluster.RemoteClusterAccess использует зеркальное отображение файлов для непрерывной синхронизации локальных файлов заданий и задач с файлами в кластере. При первом запуске зеркального отображения файлов локальные файлы заданий и задач выгружаются в хранилище удаленных заданий. По мере выполнения задания зеркальное отображение файлов постоянно проверяет расположение внешнего хранилища заданий на наличие новых файлов и обновлений и копирует файлы в локальное хранилище клиента. Эта процедура гарантирует, что клиент MATLAB всегда будет иметь актуальное представление заданий и задач, выполняемых в планировщике.

В этом примере выполняется подключение к удаленному хосту. remoteHostname, как пользователь, user, и устанавливает /remote/storage в качестве расположения внешнего хранилища кластера для синхронизации. Затем начинается зеркальное отображение файлов для задания, копирование локальных файлов задания в /remote/storage в кластере, а затем синхронизация всех изменений с локальным компьютером.

% This will prompt for the password of user
access = parallel.cluster.RemoteClusterAccess.getConnectedAccessWithMirror('remoteHostname', '/remote/storage', 'user');
% Start file mirroring for a job
access.startMirrorForJob(job); 

Пример сценариев плагинов без общей файловой системы см. в разделе Режим отправки без общего доступа в разделе Примеры сценариев плагинов.

Связанные темы