Типичный интерфейс планировщика обеспечивает полную гибкость, чтобы сконфигурировать взаимодействие клиента MATLAB®, работников MATLAB и стороннего планировщика. Скрипты интегрирования задают, как MATLAB взаимодействует с вашей настройкой.
В следующей таблице перечислены поддерживаемые функции скрипта интегрирования и этап, на котором они оценены:
FileName | Этап |
independentSubmitFcn.m | Представление независимого задания |
communicatingSubmitFcn.m | Представление связывающегося задания |
getJobStateFcn.m | Запрос состояния задания |
canceJobFcn.m | Отмена задания |
cancelTaskFcn.m | Отмена задачи |
deleteJobFcn.m | Удаление задания |
deleteTaskFcn.m | Удаление задачи |
postConstructFcn.m | После создания экземпляра parallel.cluster.Generic |
Эти скрипты интегрирования оценены, только если они имеют ожидаемое имя файла и расположены в папке, заданной свойством IntegrationScriptsLocation кластера. Для получения дополнительной информации о том, как сконфигурировать типичный кластерный профиль, смотрите, Конфигурируют Используя Типичный Интерфейс Планировщика (MATLAB Parallel Server).
independentSubmitFcn.m
должен существовать, чтобы представить независимое задание, и communicatingSubmitFcn.m
должен существовать, чтобы представить связывающееся задание.
Чтобы поддержать использование типичного интерфейса планировщика, скрипты интегрирования доступны для следующих сторонних планировщиков:
Каждый инсталлятор предоставляет скрипты для трех возможных режимов представления:
Совместно использованный – клиент может подчиниться непосредственно планировщику, и у клиента и кластерных узлов (или машины) есть совместно используемая файловая система.
Удаленный – у клиента и кластерных узлов есть совместно используемая файловая система, но клиентская машина не может подчиниться непосредственно планировщику, такой как тогда, когда клиентские утилиты планировщика не установлены. Этот режим использует протокол ssh
, чтобы представить команды планировщику с помощью удаленного хоста.
Несовместно использованный – у клиента и кластерных узлов нет совместно используемой файловой системы. Этот режим использует протокол ssh
, чтобы представить команды планировщику с помощью удаленного хоста, и это использует протокол sftp
, чтобы скопировать задание и файлы задачи к кластерной файловой системе.
Каждый режим представления имеет свою собственную подпапку в папке установки. Эта подпапка содержит файл README
, который обеспечивает конкретные инструкции о том, как использовать скрипты. Перед использованием скриптов решите, какой режим представления описывает вашу сетевую настройку.
Чтобы запустить установщика, загрузите соответствующий пакет поддержки для своего планировщика и откройте его в вашем клиенте MATLAB. Инсталлятор включает мастер, чтобы провести вас по созданию кластерного профиля для вашей кластерной конфигурации.
Если ваш планировщик или кластерная конфигурация не поддержаны одним из пакетов поддержки, рекомендуется, чтобы вы изменили скрипты одного из этих пакетов. Для получения дополнительной информации о том, как записать набор скриптов интегрирования для типичных планировщиков, см. Скрипты Заказной интеграции Записи.
Демонстрационные скрипты интегрирования используют скрипты обертки, чтобы упростить реализацию independentSubmitFcn.m
и communicatingSubmitFcn.m
. Эти скрипты не требуются, однако, использование их является хорошей практикой, чтобы сделать ваш код более читаемым. Эта таблица описывает эти скрипты:
FileName | Описание |
independentJobWrapper.sh | Используемый в independentSubmitFcn.m , чтобы встроить вызов исполняемого файла MATLAB с соответствующими аргументами. Это использует переменные окружения для местоположения исполняемого файла и его аргументов. Для примера его использования см. Демонстрационный скрипт для планировщика SLURM. |
communicatingJobWrapper.sh | Используемый в communicatingSubmitFcn.m , чтобы распределить связывающееся задание в вашем кластере. Этот скрипт реализует шаги в, Представляют задание планировщика, чтобы запустить процесс MPI. Для примера его использования см. Демонстрационный скрипт для планировщика SLURM. |
При записи собственных скриптов интегрирования это - хорошая практика, чтобы запуститься путем изменения одного из демонстрационных скриптов интегрирования, который наиболее тесно совпадает настройкой (см. Демонстрационные Скрипты Интегрирования).
Когда вы представляете независимое задание типичному кластеру, функция independentSubmitFcn.m
выполняется на клиентском сеансе MATLAB.
Строка объявления этой функции должна быть:
function independentSubmitFcn(cluster,job,environmentProperties)
Каждая задача в MATLAB независимое задание соответствует одному заданию на вашем планировщике. Цель этой функции состоит в том, чтобы представить задания N
вашему стороннему планировщику, где N
является количеством задач в независимом задании. Каждое из этих заданий должно:
Установите эти пять переменных окружения, требуемых рабочим MATLAB идентифицировать отдельную задачу запуститься. Для получения дополнительной информации смотрите, Конфигурируют среду рабочего.
Вызовите соответствующий исполняемый файл MATLAB, чтобы запустить работника MATLAB и запустить задачу. Для получения дополнительной информации смотрите, Представляют задания планировщика, чтобы запустить работников MATLAB.
Сконфигурируйте среду рабочего. Эта таблица идентифицирует эти пять переменных окружения и значения, которые должны быть установлены на рабочем MATLAB, чтобы запустить отдельную задачу:
Имя переменной окружения | Значение переменной окружения |
MDCE_DECODE_FUNCTION | 'parallel.cluster.generic.independentDecodeFcn' |
MDCE_STORAGE_CONSTRUCTOR | environmentProperties.StorageConstructor |
MDCE_STORAGE_LOCATION |
|
MDCE_JOB_LOCATION | environmentProperties.JobLocation |
MDCE_TASK_LOCATION | environmentProperties.TaskLocation{n} для задачи nth |
Много поддержки планировщиков, копирующей клиентскую среду как часть команды представления. Если так, можно установить предыдущие переменные окружения в клиенте, таким образом, планировщик может скопировать их в среду рабочего. В противном случае необходимо изменить команду представления, чтобы передать эти переменные.
Представьте задания планировщика, чтобы запустить работников MATLAB. Если эти пять обязательных параметров для данного задания и задачи заданы на рабочем, задача запущена путем вызова исполняемого файла MATLAB с подходящими аргументами. Исполняемый файл MATLAB, чтобы вызвать задан в environmentProperties.MatlabExecutable
. Аргументы, чтобы передать заданы в environmentProperties.MatlabArguments
.
Если вы не можете подчиниться непосредственно своему планировщику от клиентской машины, смотрите Представление от Удаленного Хоста к инструкциям относительно того, как представить использование ssh
.
Демонстрационный скрипт для планировщика SLURM. Этот скрипт показывает, что основное представляет функцию для планировщика SLURM с совместно используемой файловой системой. Для более полного примера см. демонстрационные скрипты поддержки в Демонстрационных Скриптах Интегрирования.
function independentSubmitFcn(cluster,job,environmentProperties) % Specify the required environment variables. setenv('MDCE_DECODE_FUNCTION', 'parallel.cluster.generic.independentDecodeFcn'); setenv('MDCE_STORAGE_CONSTRUCTOR', environmentProperties.StorageConstructor); setenv('MDCE_STORAGE_LOCATION', environmentProperties.StorageLocation); setenv('MDCE_JOB_LOCATION', environmentProperties.JobLocation); % Specify the MATLAB executable and arguments to run on the worker. % These are used in the independentJobWrapper.sh script. setenv('MDCE_MATLAB_EXE', environmentProperties.MatlabExecutable); setenv('MDCE_MATLAB_ARGS', environmentProperties.MatlabArguments); for ii = 1:environmentProperties.NumberOfTasks % Specify the environment variable required to identify which task to run. setenv('MDCE_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 # MDCE_MATLAB_EXE - the MATLAB executable to use # MDCE_MATLAB_ARGS - the MATLAB args to use exec "${MDCE_MATLAB_EXE}" ${MDCE_MATLAB_ARGS}
Когда вы представляете связывающееся задание типичному кластеру, функция communicatingSubmitFcn.m
выполняется на клиентском сеансе MATLAB.
Строка объявления этой функции должна быть:
function communicatingSubmitFcn(cluster,job,environmentProperties)
Цель этой функции состоит в том, чтобы представить одно задание вашему планировщику. Это задание должно:
Установите эти четыре переменные окружения, требуемые работниками MATLAB идентифицировать задание, чтобы запуститься. Для получения дополнительной информации смотрите, Конфигурируют среду рабочего.
Вызовите MPI, чтобы распределить ваше задание работникам MATLAB N
. N
соответствует максимальному значению, заданному в свойстве NumWorkersRange
задания MATLAB. Для получения дополнительной информации смотрите, Представляют задание планировщика, чтобы запустить процесс MPI.
Сконфигурируйте среду рабочего. Эта таблица идентифицирует эти четыре переменные окружения и значения, которые должны быть установлены на рабочем MATLAB, чтобы запустить задачу связывающегося задания:
Имя переменной окружения | Значение переменной окружения |
MDCE_DECODE_FUNCTION | 'parallel.cluster.generic.communicatingDecodeFcn' |
MDCE_STORAGE_CONSTRUCTOR | environmentProperties.StorageConstructor |
MDCE_STORAGE_LOCATION |
|
MDCE_JOB_LOCATION | environmentProperties.JobLocation |
Много поддержки планировщиков, копирующей клиентскую среду как часть команды представления. Если так, можно установить предыдущие переменные окружения в клиенте, таким образом, планировщик может скопировать их в среду рабочего. В противном случае необходимо изменить команду представления, чтобы передать эти переменные.
Представьте задание планировщика, чтобы запустить процесс MPI. После того, как вы задаете эти четыре обязательных параметра для данного задания, запускаете ваше задание путем запуска рабочего N
процессы MATLAB с помощью mpiexec
. mpiexec
является программным обеспечением, поставленным с Parallel Computing Toolbox™, который реализует стандарт Интерфейса передачи сообщений (MPI), чтобы позволить связь между рабочим процессы MATLAB. Для получения дополнительной информации о mpiexec
, смотрите домашнюю страницу MPICH.
Чтобы запустить ваше задание, необходимо представить задание планировщику, который выполняет следующие шаги. Обратите внимание на то, что matlabroot
относится к местоположению установки MATLAB на ваших узлах рабочего.
Запросите процессы N
от планировщика. N
соответствует максимальному значению, заданному в свойстве NumWorkersRange
задания MATLAB.
Вызовите 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('MDCE_DECODE_FUNCTION', 'parallel.cluster.generic.communicatingDecodeFcn'); setenv('MDCE_STORAGE_CONSTRUCTOR', environmentProperties.StorageConstructor); setenv('MDCE_STORAGE_LOCATION', environmentProperties.StorageLocation); setenv('MDCE_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('MDCE_MATLAB_EXE', environmentProperties.MatlabExecutable); setenv('MDCE_MATLAB_ARGS', environmentProperties.MatlabArguments); setenv('MDCE_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.m
выполняется на клиентском сеансе MATLAB. Строка объявления этой функции должна быть:
function state = getJobStateFcn(cluster,job,state)
При использовании стороннего планировщика возможно, что планировщик может иметь больше актуальной информации о ваших заданиях, чем, что доступно тулбоксу от локального места хранения задания. Эта ситуация особенно верна при использовании неразделяемой файловой системы, где удаленная файловая система могла быть медленной в распространении больших файлов данных назад к локальному расположению данных.
Чтобы получить ту информацию из планировщика, добавьте функцию под названием getJobStateFcn.m
к IntegrationScriptsLocation вашего кластера.
Состояние, переданное в эту функцию, является состоянием, выведенным от локального устройства хранения данных задания. Тело этой функции может затем запросить планировщик, чтобы определить более точное состояние для задания и возвратить его вместо сохраненного состояния. Функция, которую вы пишете с этой целью, должна возвратить допустимое значение для состояния объекта задания. Позволенными значениями является ‘pending’
, ‘queued’
, ‘running’
, ‘finished’
или ‘failed’
.
Для получения инструкций по соединению задач MATLAB с их соответствующим ID задания планировщика смотрите Задания Управления с Типичным Планировщиком.
Когда вы отменяете задание, созданное с типичным кластером, функция cancelJobFcn.m
выполняется на клиентском сеансе MATLAB. Строка объявления этой функции должна быть:
function OK = cancelJobFcn(cluster,job)
То, когда вы отменяете задание, создало использование типичного интерфейса планировщика, по умолчанию это действие влияет только на данные о задании в устройстве хранения данных. Чтобы отменить соответствующие задания на вашем планировщике, необходимо предоставить инструкции относительно того, что сделать и когда сделать это к планировщику. Чтобы достигнуть этого, добавьте функцию под названием cancelJobFcn.m
к IntegrationScriptsLocation вашего кластера.
Тело этой функции может затем отправить команду в планировщик, например, чтобы удалить соответствующие задания из очереди. Функция должна возвратить логический скаляр, указывающий на успешность или неуспешность отмены заданий на планировщике.
Для получения инструкций по соединению задач MATLAB с их соответствующим ID задания планировщика смотрите Задания Управления с Типичным Планировщиком.
Когда вы отменяете задачу, созданную с типичным кластером, функция cancelTaskFcn.m
выполняется на клиентском сеансе MATLAB. Строка объявления этой функции должна быть:
function OK = cancelTaskFcn(cluster,task)
То, когда вы отменяете задачу, создало использование типичного интерфейса планировщика, по умолчанию, это влияет только на данные о задаче в устройстве хранения данных. Чтобы отменить соответствующее задание на вашем планировщике, необходимо предоставить инструкции относительно того, что сделать и когда сделать это к планировщику. Чтобы достигнуть этого, добавьте функцию под названием cancelTaskFcn.m
к IntegrationScriptsLocation вашего кластера.
Тело этой функции может затем отправить команду в планировщик, например, чтобы удалить соответствующее задание из очереди планировщика. Функция должна возвратить логический скаляр, указывающий на успешность или неуспешность отмены задания на планировщике.
Для получения инструкций по соединению задач MATLAB с их соответствующим ID задания планировщика смотрите Задания Управления с Типичным Планировщиком.
Когда вы удаляете задание, созданное с типичным кластером, функция deleteJobFcn.m
выполняется на клиентском сеансе MATLAB. Строка объявления этой функции должна быть:
function deleteTaskFcn(cluster,task)
То, когда вы удаляете задание, создало использование типичного интерфейса планировщика, по умолчанию, это влияет только на данные о задании в устройстве хранения данных. Чтобы удалить соответствующие задания на вашем планировщике, необходимо предоставить инструкции относительно того, что сделать и когда сделать это к планировщику. Чтобы достигнуть этого, добавьте функцию под названием deleteJobFcn.m
к IntegrationScriptsLocation вашего кластера.
Тело этой функции может затем отправить команду в планировщик, например, чтобы удалить соответствующие задания из очереди планировщика.
Для получения инструкций по соединению задач MATLAB с их соответствующим ID задания планировщика смотрите Задания Управления с Типичным Планировщиком.
Когда вы удаляете задачу, созданную с типичным кластером, функция deleteTaskFcn.m
выполняется на клиентском сеансе MATLAB. Строка объявления этой функции должна быть:
function deleteTaskFcn(cluster,task)
То, когда вы удаляете задачу, создало использование типичного интерфейса планировщика, по умолчанию, это влияет только на данные о задаче в устройстве хранения данных. Чтобы удалить соответствующее задание на вашем планировщике, необходимо предоставить инструкции относительно того, что сделать и когда сделать это к планировщику. Чтобы достигнуть этого, добавьте функцию под названием deleteTaskFcn.m
к IntegrationScriptsLocation вашего кластера.
Тело этой функции может затем отправить команду в планировщик, например, чтобы удалить соответствующее задание из очереди планировщика.
Для получения инструкций по соединению задач MATLAB с их соответствующим ID задания планировщика смотрите Задания Управления с Типичным Планировщиком.
После того, как вы создадите экземпляр своего кластера в MATLAB, функция postConstructFcn.m
выполняется на клиентском сеансе MATLAB. Например, следующая строка кода создает экземпляр вашего кластера и запускает функцию postConstructFcn
, сопоставленную с профилем кластера ‘myProfile’
:
c = parcluster('myProfile');
Строка объявления функции postConstructFcn
должна быть:
function postConstructFcn(cluster)
Если необходимо выполнить пользовательскую конфигурацию кластера перед его использованием, добавьте функцию под названием postConstructFcn.m
к IntegrationScriptsLocation
кластера. Тело этой функции может содержать любые дополнительные шаги настройки, которых вы требуете.
Если необходимо изменить функциональность скриптов интегрирования во время выполнения, то используйте свойство 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 в типичный кластерный профиль, чтобы задать список узлов, чтобы использовать. Это предоставляет метод документирования индивидуальной настройки, добавленной к вашим скриптам интегрирования для любого, с кем вы совместно используете кластерный профиль.
Добавить свойство NodeList
в ваш кластерный профиль:
Запустите Кластерного менеджера по Профилю с рабочего стола MATLAB путем выбора Parallel> Manage Cluster Profiles.
Выберите профиль для своего типичного кластера и нажмите Edit.
Перейдите к таблице AdditionalProperties и нажмите Add.
Введите NodeList
как Name.
Установите String как Type.
Установите Value на список узлов.
С модификацией к вашим скриптам в Добавлении Пользовательской настройки можно отредактировать список узлов из командной строки 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('MDCE_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);
Для примера скриптов интегрирования с помощью удаленного представления хоста смотрите папку remote
скриптов поддержки в качестве примера в Демонстрационных Скриптах Интегрирования.
Если у клиента 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);
Для примера скриптов интегрирования без совместно используемой файловой системы смотрите папку nonshared
скриптов поддержки в качестве примера в Демонстрационных Скриптах Интегрирования.