Общий интерфейс планировщика обеспечивает полную гибкость при конфигурировании взаимодействия клиента MATLAB ®, работников MATLAB и стороннего планировщика. Сценарии плагинов определяют, как MATLAB взаимодействует с настройкой.
В следующей таблице перечислены поддерживаемые функции сценария плагина и этап их оценки:
| Имя файла | Стадия |
independentSubmitFcn.m | Отправка независимого задания |
communicatingSubmitFcn.m | Отправка задания связи |
getJobStateFcn.m | Запрос состояния задания |
canceJobFcn.m | Отмена задания |
cancelTaskFcn.m | Отмена задачи |
deleteJobFcn.m | Удаление задания |
deleteTaskFcn.m | Удаление задачи |
postConstructFcn.m | После создания parallel.cluster.Generic случай |
Эти сценарии подключаемых модулей вычисляются только в том случае, если они имеют ожидаемое имя файла и находятся в папке, указанной свойством PluginExingLocation кластера. Дополнительные сведения о настройке общего профиля кластера см. в разделе Настройка с помощью интерфейса общего планировщика (MATLAB Parallel Server).
Примечание
independentSubmitFcn.m должен существовать, чтобы представить независимое задание, и communicatingSubmitFcn.m должен существовать для отправки задания связи.
Для поддержки использования общего интерфейса планировщика доступны сценарии плагинов для следующих сторонних планировщиков:
Каждый установщик предоставляет сценарии для трех возможных режимов отправки:
Совместно используемый - клиент может отправлять данные непосредственно планировщику, а клиент и узлы кластера (или машины) имеют общую файловую систему.
Удаленный - клиентский и кластерный узлы имеют общую файловую систему, но клиентский компьютер не может отправлять данные непосредственно планировщику, например, когда клиентские утилиты планировщика не установлены. В этом режиме используется ssh для передачи команд планировщику с помощью удаленного хоста.
Не используется совместно - узлы клиента и кластера не имеют общей файловой системы. В этом режиме используется ssh для передачи команд планировщику с помощью удаленного хоста и использует sftp протокол для копирования файлов заданий и задач в файловую систему кластера.
Каждый режим отправки имеет собственную подпапку в папке установки. Эта подпапка содержит README В файле содержатся конкретные инструкции по использованию сценариев. Прежде чем использовать сценарии, решите, какой режим отправки описывает настройку сети.
Чтобы запустить программу установки, загрузите соответствующий пакет поддержки для планировщика и откройте его в клиенте MATLAB. Программа установки включает мастер, который поможет создать профиль кластера для конфигурации кластера.
Если требуется настроить поведение сценариев плагина, можно задать дополнительные свойства, такие как AdditionalSubmitArgs. Дополнительные сведения см. в разделе Настройка поведения примеров сценариев подключаемых модулей (параллельный сервер MATLAB).
Если планировщик или конфигурация кластера не поддерживается одним из пакетов поддержки, рекомендуется изменить сценарии одного из этих пакетов. Дополнительные сведения о том, как написать набор сценариев плагинов для общих планировщиков, см. в разделе Написание сценариев пользовательских плагинов.
Примеры сценариев плагинов используют сценарии обертки для упрощения реализации independentSubmitFcn.m и communicatingSubmitFcn.m. Эти сценарии не требуются, однако их использование является хорошей практикой, чтобы сделать код более читаемым. В этой таблице описаны следующие сценарии:
| Имя файла | Описание |
independentJobWrapper.sh | Используется в independentSubmitFcn.m для встраивания вызова исполняемого файла MATLAB с соответствующими аргументами. Он использует переменные среды для расположения исполняемого файла и его аргументов. Пример его использования см. в разделе Пример сценария для планировщика SLUM. |
communicatingJobWrapper.sh | Используется в communicatingSubmitFcn.m для распределения задания связи в кластере. Этот сценарий реализует шаги задания отправки планировщика для запуска процесса MPI. Пример его использования см. в разделе Пример сценария для планировщика SLUM. |
Примечание
При написании собственных сценариев плагинов рекомендуется сначала изменить один из примеров сценариев плагинов, который наиболее точно соответствует настройкам (см. Пример сценариев плагинов).
При отправке независимого задания в общий кластер independentSubmitFcn.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 задача |
Многие планировщики поддерживают копирование среды клиента как часть команды отправки. Если это так, можно задать предыдущие переменные среды в клиенте, чтобы планировщик мог скопировать их в рабочую среду. В противном случае для пересылки этих переменных необходимо изменить команду отправки.
Отправка заданий планировщика для запуска работников MATLAB. После определения пяти обязательных параметров для данного задания и задачи на работнике задача запускается путем вызова исполняемого файла MATLAB с подходящими аргументами. Исполняемый файл MATLAB для вызова определен в environmentProperties.MatlabExecutable. Передаваемые аргументы определяются в environmentProperties.MatlabArguments.
Примечание
Если вы не можете отправить заявку непосредственно в планировщик с клиентского компьютера, см. раздел Отправка с удаленного узла для получения инструкций по отправке с помощью ssh.
Пример сценария для планировщика SLUM. Этот сценарий показывает базовую функцию отправки для планировщика SLUM с общей файловой системой. Более полный пример см. в разделе Примеры сценариев подключаемых модулей.
function independentSubmitFcn(cluster,job,environmentProperties) % Specify the required environment variables. setenv('PARALLEL_SERVER_DECODE_FUNCTION', 'parallel.cluster.generic.independentDecodeFcn'); setenv('PARALLEL_SERVER_STORAGE_CONSTRUCTOR', environmentProperties.StorageConstructor); setenv('PARALLEL_SERVER_STORAGE_LOCATION', environmentProperties.StorageLocation); setenv('PARALLEL_SERVER_JOB_LOCATION', environmentProperties.JobLocation); % Specify the MATLAB executable and arguments to run on the worker. % These are used in the independentJobWrapper.sh script. setenv('PARALLEL_SERVER_MATLAB_EXE', environmentProperties.MatlabExecutable); setenv('PARALLEL_SERVER_MATLAB_ARGS', environmentProperties.MatlabArguments); for ii = 1:environmentProperties.NumberOfTasks % Specify the environment variable required to identify which task to run. setenv('PARALLEL_SERVER_TASK_LOCATION', environmentProperties.TaskLocations{ii}); % Specify the command to submit the job to the SLURM scheduler. % SLURM will automatically copy environment variables to workers. commandToRun = 'sbatch --ntasks=1 independentJobWrapper.sh'; [cmdFailed, cmdOut] = system(commandToRun); end end
Предыдущий пример передает простой сценарий bash, independentJobWrapper.sh, к планировщику. independentJobWrapper.sh сценарий встраивает исполняемый файл MATLAB и аргументы, используя переменные среды:
#!/bin/sh # PARALLEL_SERVER_MATLAB_EXE - the MATLAB executable to use # PARALLEL_SERVER_MATLAB_ARGS - the MATLAB args to use exec "${PARALLEL_SERVER_MATLAB_EXE}" ${PARALLEL_SERVER_MATLAB_ARGS}
При отправке задания связи в общий кластер communicatingSubmitFcn.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 |
Многие планировщики поддерживают копирование среды клиента как часть команды отправки. Если это так, можно задать предыдущие переменные среды в клиенте, чтобы планировщик мог скопировать их в рабочую среду. В противном случае для пересылки этих переменных необходимо изменить команду отправки.
Отправить задание планировщика для запуска процесса MPI. После определения четырех обязательных параметров для данного задания запустите задание. N рабочие процессы MATLAB с использованием mpiexec. mpiexec поставляется с Toolbox™ параллельных вычислений, который реализует стандарт интерфейса передачи сообщений (MPI) для обеспечения связи между рабочими процессами MATLAB. Для получения дополнительной информации о mpiexec, см. домашнюю страницу MPICH.
Чтобы запустить задание, необходимо отправить задание в планировщик, который выполняет следующие шаги. Обратите внимание, что matlabroot относится к расположению установки MATLAB на рабочих узлах.
Запрос N процессы из планировщика. N соответствует максимальному значению, указанному в NumWorkersRange свойства задания MATLAB.
Звонить mpiexec для запуска рабочих процессов MATLAB. Количество рабочих процессов MATLAB, запускаемых на каждом узле, должно соответствовать количеству процессов, выделенных планировщиком. mpiexec исполняемый файл находится в matlabroot/bin/mw_mpiexec.
mpiexec автоматически пересылает переменные среды запущенным процессам. Поэтому перед запуском убедитесь, что переменные среды, перечисленные в разделе Настройка рабочей среды, заданы mpiexec.
Дополнительные сведения о параметрах mpiexec, см. Использование диспетчера процессов гидры.
Примечание
Полный пример предыдущих шагов см. в разделе communicatingJobWrapper.sh сценарий, поставляемый с любым из примеров сценариев плагинов в Sample Plugin Scripts. Используйте этот сценарий в качестве отправной точки, если необходимо написать собственный сценарий.
Пример сценария для планировщика SLUM. Следующий сценарий показывает базовую функцию отправки для планировщика SLUM с общей файловой системой.
Отправленное задание содержится в сценарии bash, communicatingJobWrapper.sh. Этот сценарий реализует соответствующие шаги в задании Submit scheduler для запуска процесса MPI для планировщика SLUM. Более полный пример см. в разделе Примеры сценариев подключаемых модулей.
function communicatingSubmitFcn(cluster,job,environmentProperties) % Specify the four required environment variables. setenv('PARALLEL_SERVER_DECODE_FUNCTION', 'parallel.cluster.generic.communicatingDecodeFcn'); setenv('PARALLEL_SERVER_STORAGE_CONSTRUCTOR', environmentProperties.StorageConstructor); setenv('PARALLEL_SERVER_STORAGE_LOCATION', environmentProperties.StorageLocation); setenv('PARALLEL_SERVER_JOB_LOCATION', environmentProperties.JobLocation); % Specify the MATLAB executable and arguments to run on the worker. % Specify the location of the MATLAB install on the cluster nodes. % These are used in the communicatingJobWrapper.sh script. setenv('PARALLEL_SERVER_MATLAB_EXE', environmentProperties.MatlabExecutable); setenv('PARALLEL_SERVER_MATLAB_ARGS', environmentProperties.MatlabArguments); setenv('PARALLEL_SERVER_CMR', cluster.ClusterMatlabRoot); numberOfTasks = environmentProperties.NumberOfTasks; % Specify the command to submit a job to the SLURM scheduler which % requests as many processes as tasks in the job. % SLURM will automatically copy environment variables to workers. commandToRun = sprintf('sbatch --ntasks=%d communicatingJobWrapper.sh', numberOfTasks); [cmdFailed, cmdOut] = system(commandToRun); end
При запросе состояния задания, созданного с универсальным кластером, getJobStateFcn.m выполняется в клиентском сеансе MATLAB. Строка объявления этой функции должна быть:
function state = getJobStateFcn(cluster,job,state)При использовании стороннего планировщика возможно, что планировщик может иметь больше актуальной информации о заданиях, чем та, которая доступна для панели инструментов из локального хранилища заданий. Эта ситуация особенно актуальна при использовании файловой системы без общего доступа, в которой удаленная файловая система может медленно распространять большие файлы данных обратно в локальное местоположение данных.
Чтобы получить эту информацию из планировщика, добавьте функцию с именем getJobStateFcn.m в расположение PluginTalkedLocation кластера.
Состояние, переданное в эту функцию, является состоянием, полученным из локального хранилища заданий. Тело этой функции затем может запросить планировщик, чтобы определить более точное состояние для задания и вернуть его вместо сохраненного состояния. Функция, записанная для этой цели, должна возвращать допустимое значение для состояния объекта задания. Допустимые значения: ‘pending’, ‘queued’, ‘running’, ‘finished’, или ‘failed’.
Инструкции по сопряжению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с помощью общего планировщика.
При отмене задания, созданного с универсальным кластером, cancelJobFcn.m выполняется в клиентском сеансе MATLAB. Строка объявления этой функции должна быть:
function OK = cancelJobFcn(cluster,job)При отмене задания, созданного с помощью общего интерфейса планировщика, это действие по умолчанию влияет только на данные задания в хранилище. Чтобы отменить соответствующие задания в планировщике, необходимо предоставить инструкции о том, что делать и когда делать с планировщиком. Для этого добавьте функцию с именем cancelJobFcn.m в расположение PluginTalkedLocation кластера.
Тело этой функции может затем послать команду планировщику, например, удалить соответствующие задания из очереди. Функция должна возвращать логический скаляр, указывающий на успех или неудачу отмены заданий в планировщике.
Инструкции по сопряжению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с помощью общего планировщика.
При отмене задачи, созданной с универсальным кластером, cancelTaskFcn.m выполняется в клиентском сеансе MATLAB. Строка объявления этой функции должна быть:
function OK = cancelTaskFcn(cluster,task)При отмене задачи, созданной с помощью общего интерфейса планировщика, по умолчанию это влияет только на данные задачи в хранилище. Для отмены соответствующего задания в планировщике необходимо предоставить инструкции о том, что делать и когда делать с планировщиком. Для этого добавьте функцию с именем cancelTaskFcn.m в расположение PluginTalkedLocation кластера.
Тело этой функции может затем послать команду планировщику, например, удалить соответствующее задание из очереди планировщика. Функция должна возвращать логический скаляр, указывающий на успех или неудачу отмены задания в планировщике.
Инструкции по сопряжению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с помощью общего планировщика.
При удалении задания, созданного с универсальным кластером, deleteJobFcn.m выполняется в клиентском сеансе MATLAB. Строка объявления этой функции должна быть:
function deleteTaskFcn(cluster,task)При удалении задания, созданного с помощью общего интерфейса планировщика, по умолчанию это влияет только на данные задания в хранилище. Чтобы удалить соответствующие задания в планировщике, необходимо предоставить инструкции о том, что делать и когда делать с планировщиком. Для этого добавьте функцию с именем deleteJobFcn.m в расположение PluginTalkedLocation кластера.
Тело этой функции может затем послать команду планировщику, например, удалить соответствующие задания из очереди планировщика.
Инструкции по сопряжению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с помощью общего планировщика.
При удалении задачи, созданной с универсальным кластером, deleteTaskFcn.m выполняется в клиентском сеансе MATLAB. Строка объявления этой функции должна быть:
function deleteTaskFcn(cluster,task)При удалении задачи, созданной с помощью общего интерфейса планировщика, по умолчанию это влияет только на данные задачи в хранилище. Чтобы удалить соответствующее задание в планировщике, необходимо предоставить инструкции о том, что делать и когда делать с планировщиком. Для этого добавьте функцию с именем deleteTaskFcn.m в расположение PluginTalkedLocation кластера.
Тело этой функции может затем послать команду планировщику, например, удалить соответствующее задание из очереди планировщика.
Инструкции по сопряжению задач MATLAB с соответствующим идентификатором задания планировщика см. в разделе Управление заданиями с помощью общего планировщика.
После создания экземпляра кластера в MATLAB, postConstructFcn.m выполняется в клиентском сеансе MATLAB. Например, следующая строка кода создает экземпляр кластера и запускает postConstructFcn функция, связанная с ‘myProfile’ профиль кластера:
c = parcluster('myProfile');Строка объявления postConstructFcn функция должна быть:
function postConstructFcn(cluster)Если необходимо выполнить пользовательскую настройку кластера перед его использованием, добавьте функцию с именем postConstructFcn.m в PluginScriptsLocation вашего кластера. Тело этой функции может содержать любые необходимые дополнительные шаги настройки.
Если необходимо изменить функциональность сценариев плагина во время выполнения, используйте свойство AdditiveProperties интерфейса общего планировщика.
В качестве примера рассмотрим планировщик SLUM. Команда submit для STULM принимает –-nodelist , который позволяет указать узлы, на которых вы хотите работать. Вы можете изменить значение этого аргумента без необходимости изменять сценарии плагина. Чтобы добавить эту функцию, включите следующий шаблон кода в independentSubmitFcn.m и communicatingSubmitFcn.m сценарии:
% Basic SLURM submit command submitCommand = 'sbatch'; % Check if property is defined if isprop(cluster.AdditionalProperties, 'NodeList') % Add appropriate argument and value to submit string submitCommand = [submitCommand ' --nodelist=' cluster.AdditionalProperties.NodeList]; end
Пример использования этого шаблона кодирования см. в разделе «Общие функции отправки сценариев» раздела «Примеры сценариев подключаемых модулей».
С помощью изменения сценариев в предыдущем примере можно добавить запись AdditiveProperties в общий профиль кластера, чтобы указать список узлов для использования. Это обеспечивает метод документирования настроек, добавленных в сценарии плагина для всех, с кем вы используете профиль кластера.
Для добавления NodeList свойство профиля кластера:
Запустите диспетчер профилей кластера с рабочего стола MATLAB, выбрав Параллельный (Parallel) > Управление профилями кластера (Manage Cluster Profiles).
Выберите профиль для общего кластера и нажмите кнопку Изменить.
Проведите к таблице AdditionalProperties и нажмите Add.
Войти NodeList в качестве имени.
Задайте строку в качестве типа.
Установите значение в списке узлов.
Изменяя сценарии в разделе Добавление пользовательской настройки, можно изменить список узлов из командной строки MATLAB, задав соответствующее свойство объекта кластера перед отправкой задания:
c = parcluster; c.AdditionalProperties.NodeList = 'gpuNodeName'; j = c.batch('myScript');
Отображение AdditionalProperties для просмотра всех текущих свойств и их значений:
>> c.AdditionalProperties
ans =
AdditionalProperties with properties:
ClusterHost: 'myClusterHost'
NodeList: 'gpuNodeName'
RemoteJobStorageLocation: '/tmp/jobs'Первым требованием для управления заданиями является определение заданий в планировщике, соответствующих объекту задания MATLAB. При отправке задания планировщику команда, выполняющая отправку в функции отправки, может вернуть некоторые данные о задании из планировщика. Эти данные обычно включают идентификатор задания. Сохраняя этот идентификатор задания планировщика с помощью объекта задания MATLAB, можно позже обратиться к заданию планировщика с помощью этого идентификатора задания при отправке команд управления планировщику. Аналогично, можно сохранить сопоставление идентификаторов задач MATLAB с идентификаторами заданий планировщика для облегчения управления отдельными задачами. Функция панели инструментов, которая хранит данные кластера: setJobClusterData.
В этом примере показано, как изменить independentSubmitFcn.m функция для синтаксического анализа выходных данных каждой команды, переданной планировщику SLUM. Можно использовать регулярные выражения, чтобы извлечь идентификатор задания планировщика для каждой задачи, а затем сохранить его с помощью setJobClusterData.
% Pattern to extract scheduler job ID from SLURM sbatch output searchPattern = '.*Submitted batch job ([0-9]+).*'; jobIDs = cell(numberOfTasks, 1); for ii = 1:numberOfTasks setenv('PARALLEL_SERVER_TASK_LOCATION', environmentProperties.TaskLocations{ii}); commandToRun = 'sbatch --ntasks=1 independentJobWrapper.sh'; [cmdFailed, cmdOut] = system(commandToRun); jobIDs{ii} = regexp(cmdOut, searchPattern, 'tokens', 'once'); end % set the job IDs on the job cluster data cluster.setJobClusterData(job, struct('ClusterJobIDs', {jobIDs}));
В этом примере изменяется cancelJobFcn.m для отмены соответствующих заданий в планировщике SLUM. В примере используется getJobClusterData для получения данных планировщика заданий.
function OK = cancelJobFcn(cluster, job) % Get the scheduler information for this job data = cluster.getJobClusterData(job); jobIDs = data.ClusterJobIDs; for ii = 1:length(jobIDs) % Tell the SLURM scheduler to cancel the job commandToRun = sprintf('scancel ''%s''', jobIDs{ii}); [cmdFailed, cmdOut] = system(commandToRun); end OK = true;
Если клиент MATLAB не может отправить сообщение непосредственно планировщику, используйте parallel.cluster.RemoteClusterAccess для установления соединения и выполнения команд на удаленном хосте.
Этот объект использует ssh протокол, и, следовательно, требует ssh служба демона, запущенная на удаленном хосте. Чтобы установить соединение, необходимо либо указать имя пользователя и пароль для удаленного узла, либо указать действительный идентификационный файл.
Следующий код выполняет команду на удаленном хосте, remoteHostname, как пользователь, user.
% This will prompt for the password of user access = parallel.cluster.RemoteClusterAccess.getConnectedAccess('remoteHostname', 'user'); % Execute a command on remoteHostname [cmdFailed, cmdOut] = access.runCommand(commandToRun);
Пример сценариев подключаемых модулей, использующих удаленную отправку на хост, см. в разделе Режим удаленной отправки в разделе Примеры сценариев подключаемых модулей.
Если клиент MATLAB не имеет общей файловой системы с узлами кластера, используйте parallel.cluster.RemoteClusterAccess для установления соединения и копирования файлов заданий и задач между узлом клиента и узлом кластера.
Этот объект использует ssh протокол, и, следовательно, требует ssh служба демона, запущенная на удаленном хосте. Чтобы установить соединение, необходимо либо указать имя пользователя и пароль для удаленного узла, либо указать действительный идентификационный файл.
При использовании отправки без совместного использования необходимо указать как локальное хранилище заданий для клиента, так и внешнее хранилище заданий для кластера. Расположение внешнего хранилища заданий должно быть доступно для всех узлов кластера.
parallel.cluster.RemoteClusterAccess использует зеркальное отображение файлов для непрерывной синхронизации локальных файлов заданий и задач с файлами в кластере. При первом запуске зеркального отображения файлов локальные файлы заданий и задач выгружаются в хранилище удаленных заданий. По мере выполнения задания зеркальное отображение файлов постоянно проверяет расположение внешнего хранилища заданий на наличие новых файлов и обновлений и копирует файлы в локальное хранилище клиента. Эта процедура гарантирует, что клиент MATLAB всегда будет иметь актуальное представление заданий и задач, выполняемых в планировщике.
В этом примере выполняется подключение к удаленному хосту. remoteHostname, как пользователь, user, и устанавливает /remote/storage в качестве расположения внешнего хранилища кластера для синхронизации. Затем начинается зеркальное отображение файлов для задания, копирование локальных файлов задания в /remote/storage в кластере, а затем синхронизация всех изменений с локальным компьютером.
% This will prompt for the password of user access = parallel.cluster.RemoteClusterAccess.getConnectedAccessWithMirror('remoteHostname', '/remote/storage', 'user'); % Start file mirroring for a job access.startMirrorForJob(job);
Пример сценариев плагинов без общей файловой системы см. в разделе Режим отправки без общего доступа в разделе Примеры сценариев плагинов.