Типовой интерфейс планировщика обеспечивает полную гибкость, чтобы сконфигурировать взаимодействие 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.m
функция выполняется в сеансе клиента MATLAB.
Объявление линии этой функции должно быть следующим:
function independentSubmitFcn(cluster,job,environmentProperties)
Каждая задача в независимом задании MATLAB соответствует одному заданию в вашем планировщике. Цель этой функции состоит в том, чтобы отправить N
задания к вашему стороннему планировщику, где N
количество задач в независимом задании. Каждое из этих заданий должно:
Установите пять переменных окружений, требуемых рабочим MATLAB, чтобы идентифицировать отдельную задачу, которая будет запущена. Дополнительные сведения см. в разделе Настройка рабочем окружении.
Вызовите соответствующий исполняемый файл MATLAB, чтобы запустить работника MATLAB и запустить задачу. Для получения дополнительной информации смотрите Отправить задания планировщика для запуска работников MATLAB.
Настройте рабочее окружение. Эта таблица определяет пять переменных окружений и значений, которые должны быть установлены в рабочем MATLAB, чтобы запустить отдельную задачу:
Имя переменного окружения | Окружение Значения переменных |
PARALLEL_SERVER_DECODE_FUNCTION | 'parallel.cluster.generic.independentDecodeFcn' |
PARALLEL_SERVER_STORAGE_CONSTRUCTOR | environmentProperties.StorageConstructor |
PARALLEL_SERVER_STORAGE_LOCATION |
|
PARALLEL_SERVER_JOB_LOCATION | environmentProperties.JobLocation |
PARALLEL_SERVER_TASK_LOCATION | environmentProperties.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.m
функция выполняется в сеансе клиента MATLAB.
Объявление линии этой функции должно быть следующим:
function communicatingSubmitFcn(cluster,job,environmentProperties)
Цель этой функции состоит в том, чтобы отправить одно задание в ваш планировщик. Это задание должно:
Установите четыре переменных окружения, необходимые работникам MATLAB для идентификации выполняемого задания. Дополнительные сведения см. в разделе Настройка рабочем окружении.
Вызовите MPI, чтобы распределить ваше задание по N
Работники MATLAB. N
соответствует максимальному значению, указанному в NumWorkersRange
свойство задания MATLAB. Для получения дополнительной информации смотрите Отправить задание планировщика для запуска процесса MPI.
Настройте рабочее окружение. В этой таблице указаны четыре переменных окружения и значения, которые должны быть установлены в рабочем MATLAB, чтобы запустить задачу коммуникационного задания:
Имя переменного окружения | Окружение Значения переменных |
PARALLEL_SERVER_DECODE_FUNCTION | 'parallel.cluster.generic.communicatingDecodeFcn' |
PARALLEL_SERVER_STORAGE_CONSTRUCTOR | environmentProperties.StorageConstructor |
PARALLEL_SERVER_STORAGE_LOCATION |
|
PARALLEL_SERVER_JOB_LOCATION | environmentProperties.JobLocation |
Многие планировщики поддерживают копирование клиентского окружения как часть команды отправки. Если это так, можно задать предыдущие переменные окружения в клиенте, чтобы планировщик мог скопировать их в рабочее окружение. Если нет, необходимо изменить команду submission, чтобы переслать эти переменные.
Отправьте задание планировщика, чтобы запустить процесс MPI. После определения четырех необходимых параметров для данного задания запустите задание путем запуска N
рабочие процессы MATLAB с использованием mpiexec
. mpiexec
- программное обеспечение, поставляемое вместе с Parallel Computing Toolbox™, которое реализует стандарт MPI для обмена данными между рабочими процессами MATLAB. Для получения дополнительной информации о mpiexec
, см. домашнюю страницу MPICH.
Чтобы запустить свое задание, вы должны отправить задание в планировщик, который выполняет следующие шаги. Обратите внимание, что matlabroot
ссылается на место установки MATLAB на рабочих узлах.
Запросить N
процессов из планировщика. N
соответствует максимальному значению, указанному в NumWorkersRange
свойство задания MATLAB.
Функции 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.m
функция выполняется в сеансе клиента MATLAB. Объявление линии этой функции должно быть следующим:
function state = getJobStateFcn(cluster,job,state)
При использовании стороннего планировщика возможно, что планировщик может иметь больше актуальной информации о ваших заданиях, чем то, что доступно тулбоксу из локального места хранения задания. Эта ситуация особенно верна, если используется несредненная файловая система, где удаленная файловая система может медленно распространять большие файлы данных обратно в ваше локальное местоположение данных.
Чтобы извлечь эту информацию из планировщика, добавьте функцию, называемую getJobStateFcn.m
к PluginScriptsLocation вашего кластера.
Состояние, переданное в эту функцию, является состоянием, полученным из локального хранилища заданий. Тело этой функции может затем запросить планировщик, чтобы определить более точное состояние для задания и вернуть его вместо сохраненного состояния. Функция, которую вы записываете для этой цели, должна вернуть допустимое значение для состояния объекта задания. Допустимые значения ‘pending’
, ‘queued’
, ‘running’
, ‘finished’
, или ‘failed’
.
Инструкции по соединению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с Типовым Планировщиком.
Когда вы отменяете задание, созданное с помощью типового кластера, cancelJobFcn.m
функция выполняется в сеансе клиента MATLAB. Объявление линии этой функции должно быть следующим:
function OK = cancelJobFcn(cluster,job)
Когда вы отменяете задание, созданное с помощью типового интерфейса планировщика, по умолчанию это действие влияет только на данные задания в хранилище. Чтобы отменить соответствующие задания в планировщике, вы должны предоставить инструкции о том, что и когда делать это планировщику. Чтобы добиться этого, добавьте функцию, называемую cancelJobFcn.m
к PluginScriptsLocation вашего кластера.
Тело этой функции может затем послать команду планировщику, например, чтобы удалить соответствующие задания из очереди. Функция должна вернуть логический скаляр, указывающий на успех или отказ отмены заданий в планировщике.
Инструкции по соединению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с Типовым Планировщиком.
Когда вы отменяете задачу, созданную с помощью типового кластера, cancelTaskFcn.m
функция выполняется в сеансе клиента MATLAB. Объявление линии этой функции должно быть следующим:
function OK = cancelTaskFcn(cluster,task)
Когда вы отменяете задачу, созданную с помощью типового интерфейса планировщика, по умолчанию это влияет только на данные задачи в хранилище. Чтобы отменить соответствующее задание в планировщике, вы должны предоставить инструкции о том, что и когда делать это планировщику. Чтобы добиться этого, добавьте функцию, называемую cancelTaskFcn.m
к PluginScriptsLocation вашего кластера.
Тело этой функции может затем послать команду планировщику, например, чтобы удалить соответствующее задание из очереди планировщика. Функция должна вернуть логический скаляр, указывающий на успех или отказ отмены задания в планировщике.
Инструкции по соединению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с Типовым Планировщиком.
Когда вы удаляете задание, созданное с помощью типового кластера, deleteJobFcn.m
функция выполняется в сеансе клиента MATLAB. Объявление линии этой функции должно быть следующим:
function deleteTaskFcn(cluster,task)
При удалении задания, созданного с помощью типового интерфейса планировщика, по умолчанию это влияет только на данные задания в хранилище. Чтобы удалить соответствующие задания в планировщике, вы должны предоставить инструкции о том, что делать и когда делать это планировщику. Чтобы добиться этого, добавьте функцию, называемую deleteJobFcn.m
к PluginScriptsLocation вашего кластера.
Тело этой функции может затем послать команду планировщику, например, чтобы удалить соответствующие задания из очереди планировщика.
Инструкции по соединению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с Типовым Планировщиком.
Когда вы удаляете задачу, созданную с помощью типового кластера, deleteTaskFcn.m
функция выполняется в сеансе клиента MATLAB. Объявление линии этой функции должно быть следующим:
function deleteTaskFcn(cluster,task)
Когда вы удаляете задачу, созданную с помощью типового интерфейса планировщика, по умолчанию это влияет только на данные задачи в хранилище. Чтобы удалить соответствующее задание в планировщике, вы должны предоставить инструкции о том, что делать и когда делать это планировщику. Чтобы добиться этого, добавьте функцию, называемую deleteTaskFcn.m
к PluginScriptsLocation вашего кластера.
Тело этой функции может затем послать команду планировщику, например, чтобы удалить соответствующее задание из очереди планировщика.
Инструкции по соединению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с Типовым Планировщиком.
После создания образца кластера в 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
свойство профилю кластера:
Запустите диспетчер профилей кластеров с рабочего стола 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. Когда вы отправляете задание в планировщик, команда, которая выполняет отправку в функции отправки, может вернуть некоторые данные о задании из планировщика. Эти данные обычно включают идентификатор задания. Сохраняя этот идентификатор задания планировщика с объектом задания 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.