Скрипты плагинов для типовых планировщиков

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

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

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

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

Примечание

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

Выборки скриптов плагинов

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

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

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

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

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

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

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

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

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

Обертка Скриптов

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

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

Запись пользовательских скриптов плагинов

Примечание

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

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 задача

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

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

Примечание

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

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

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, в планировщик. The 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

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

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

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

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

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

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

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

Примечание

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

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

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

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 к PluginScriptsLocation вашего кластера.

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

Инструкции по соединению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с Типовым Планировщиком.

cancelJobFcn

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

function OK = cancelJobFcn(cluster,job)

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

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

Инструкции по соединению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с Типовым Планировщиком.

cancelTaskFcn

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

function OK = cancelTaskFcn(cluster,task)

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

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

Инструкции по соединению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с Типовым Планировщиком.

deleteJobFcn

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

function deleteTaskFcn(cluster,task)

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

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

Инструкции по соединению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с Типовым Планировщиком.

deleteTaskFcn

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

function deleteTaskFcn(cluster,task)

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

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

Инструкции по соединению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с Типовым Планировщиком.

postConstructFcn

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

c = parcluster('myProfile');

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

function postConstructFcn(cluster)

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

Добавление индивидуальной настройки

Если вам нужно изменить функциональность плагина скриптов во время исполнения, используйте свойство AdditionalProperties типового интерфейса планировщика.

В качестве примера рассмотрим планировщик SLURM. Команда submit для SLURM принимает –-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 

Пример использования этого шаблона кодирования см. в неотделимых функциях отправки скриптов в Sample Plugin Scripts.

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

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

Чтобы добавить NodeList свойство профилю кластера:

  1. Запустите диспетчер профилей кластеров с рабочего стола MATLAB, выбрав Parallel > Manage Cluster Profiles.

  2. Выберите профиль для типового кластера и нажатия кнопки Edit.

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

  4. Введите NodeList как Name.

  5. Установите String как Type.

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

Установка дополнительных свойств из командной строки 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 функция для анализа выхода каждой команды, переданной в планировщик SLURM. Можно использовать регулярные выражения, чтобы извлечь идентификатор задания планировщика для каждой задачи и затем сохранить его с помощью 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 для отмены соответствующих заданий в планировщике SLURM. Пример использует 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);

Пример скриптов плагина, использующих отправку удаленного хоста, см. в режиме удаленной отправки в Sample Plugin Scripts.

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

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

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

При использовании отправки без использования shared необходимо указать локальное место хранения задания, которое будет использоваться клиентом, и удаленное место хранения задания, которое будет использоваться в кластере. Удаленное место хранения задания должно быть доступно всем узлам кластера.

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); 

Пример плагинных скриптов без общей файловой системы см. в режиме отправки без разделения в Sample Plugin Scripts.

Похожие темы