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

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

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

FileName Этап
independentSubmitFcn.mПредставление независимого задания
communicatingSubmitFcn.mПредставление связывающегося задания
getJobStateFcn.mЗапрос состояния задания
canceJobFcn.mОтмена задания
cancelTaskFcn.mОтмена задачи
deleteJobFcn.mУдаление задания
deleteTaskFcn.mУдаление задачи
postConstructFcn.mПосле создания parallel.cluster.Generic экземпляр

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

Примечание

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

Демонстрационные сменные скрипты

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

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

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

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

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

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

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

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

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

Скрипты обертки

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

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

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

Примечание

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

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.TaskLocation{n} для nth задача

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

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

Примечание

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

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

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
 

Предыдущий пример представляет простой скрипт удара, 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 программное обеспечение, поставленное с Parallel Computing 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 скрипту предоставляют любой из демонстрационных сменных скриптов в Демонстрационных Сменных Скриптах. Используйте этот скрипт в качестве начальной точки, если необходимо записать собственный скрипт.

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

Представленное задание содержится в скрипте удара, communicatingJobWrapper.sh. Этот скрипт реализует соответствующие шаги в, Представляют задание планировщика, чтобы запустить процесс MPI для планировщика SLURM. Для более полного примера см. Демонстрационные Сменные Скрипты.

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 с их соответствующим ID задания планировщика смотрите Задания Управления с Типовым Планировщиком.

cancelJobFcn

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

function OK = cancelJobFcn(cluster,job)

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

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

Для получения инструкций по соединению задач MATLAB с их соответствующим ID задания планировщика смотрите Задания Управления с Типовым Планировщиком.

cancelTaskFcn

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

function OK = cancelTaskFcn(cluster,task)

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

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

Для получения инструкций по соединению задач MATLAB с их соответствующим ID задания планировщика смотрите Задания Управления с Типовым Планировщиком.

deleteJobFcn

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

function deleteTaskFcn(cluster,task)

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

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

Для получения инструкций по соединению задач MATLAB с их соответствующим ID задания планировщика смотрите Задания Управления с Типовым Планировщиком.

deleteTaskFcn

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

function deleteTaskFcn(cluster,task)

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

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

Для получения инструкций по соединению задач MATLAB с их соответствующим ID задания планировщика смотрите Задания Управления с Типовым Планировщиком.

postConstructFcn

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

c = parcluster('myProfile');

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

function postConstructFcn(cluster)

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

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

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

Как пример, рассмотрите планировщик SLURM. Представить команда для 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 

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

Установка AdditionalProperties от кластерного менеджера по профилю

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

Добавить NodeList свойство к вашему кластерному профилю:

  1. Запустите Кластерного менеджера по Профилю с рабочего стола MATLAB путем выбора Parallel> Manage Cluster Profiles.

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

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

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

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

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

Установка AdditionalProperties из командной строки 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. Когда вы представляете задание планировщику, команда, которая выполняет в представлении ваш подчиняющаяся, функция может возвратить некоторые данные о задании от планировщика. Эти данные обычно включают ID задания. Путем хранения того ID задания планировщика объектом задания MATLAB можно позже обратиться к заданию планировщика этим ID задания, когда вы отправляете команды управления в планировщик. Точно так же можно сохранить карту идентификаторов задачи MATLAB к идентификаторам задания планировщика, чтобы помочь управлять отдельными задачами. Функцией тулбокса, которая хранит эти кластерные данные, является setJobClusterData.

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

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

Для примера сменных скриптов с помощью удаленного представления хоста смотрите удаленный режим представления в Демонстрационных Сменных Скриптах.

Представление без совместно используемой файловой системы

Если у клиента 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); 

Для примера сменных скриптов без совместно используемой файловой системы смотрите неразделяемый режим представления в Демонстрационных Сменных Скриптах.

Похожие темы