Совместное использование кода с работниками

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

Примечание

Для примера, который показывает, как поделиться кодом с работниками, использующими batch, см. «Запуск пакетного задания и доступ к файлам от работников».

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

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

Необходимо задать путь поиска файлов каждого рабочего сеанса, чтобы он искал файлы в нужные области кадра. Можно задать путь:

  • При помощи AdditionalPaths задания свойство. Это предпочтительный метод настройки пути, поскольку он специфичен для задания.

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

    Когда вы задаете AdditionalPaths во время создания задания параметры объединяются с параметрами, заданными в применимом профиле кластера. Настройка AdditionalPaths на объекте задания после создания не совмещает новый параметр с параметрами профиля, но перезаписывает существующие параметры для этого задания.

    AdditionalPaths по умолчанию пуст. Для окружения со смешанной платформой векторы символов могут задавать оба UNIX® и Microsoft® Windows® стили пути; те настройки, которые не подходят или не найдены для конкретной машины, генерируют предупреждения и игнорируются.

    Этот пример устанавливает MATLAB® рабочий путь в среде смешанной платформы для использования функций в обоих центральных репозиториях /central/funcs и архив отделов /dept1/funcs, каждый из которых также имеет Путь Windows.

    c = parcluster(); % Use default
    job1 = createJob(c);
    ap = {'/central/funcs','/dept1/funcs', ...
         '\\OurDomain\central\funcs','\\OurDomain\dept1\funcs'};
    job1.AdditionalPaths = ap;
    
  • Путем размещения path команда в любом из соответствующих файлов запуска для работника:

    • matlabroot\ toolbox\local\startup.m

    • matlabroot\ toolbox\parallel\user\jobStartup.m

    • matlabroot\ toolbox\parallel\user\taskStartup.m

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

Доступ к файлам между общими ресурсами может зависеть от разрешений, основанных на имени пользователя. Можно задать имя пользователя, с которым запускаются MATLAB Job Scheduler и рабочие сервисы программного обеспечения MATLAB Parallel Server™ путем установки MJSUSER значение в mjs_def файл перед запуском служб. Для операционных систем Microsoft Windows существует также MJSPASS для предоставления пароля учетной записи для указанного пользователя. Для объяснения настроек по умолчанию сервиса и mjs_def файл см. в разделе «Определение параметров скрипта по умолчанию» (MATLAB Parallel Server) в Руководстве системного администратора MATLAB Parallel Server.

Передача данных в рабочие сеансы и из них

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

  • InputArguments - Это свойство каждой задачи содержит входные данные, указанные вами при создании задачи. Эти данные передаются в функцию, когда рабочий выполняет свою оценку.

  • OutputArguments - Это свойство каждой задачи содержит результаты оценки функции.

  • JobData - Это свойство объекта задания содержит данные, которые отправляются каждому работнику, который оценивает задачи для этого задания. Это свойство работает эффективно, потому что данные передаются работнику только один раз на задание, экономя время, если этот работник оценивает несколько задач для задания. (Примечание: Не путайте это свойство с UserData свойство для любых объектов в клиенте MATLAB. Информация в UserData доступен только в клиенте и недоступен планировщику или работникам.)

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

    AttachedFiles содержит список папок и файлов, к которым требуется доступ работнику для оценки задач задания. Значение свойства (по умолчанию пустое) определяется в профиле кластера или в сеансе клиента. Вы устанавливаете значение свойства как массив ячеек из векторов символов. Каждый вектор символов является абсолютным или относительным путем к папке или файлу. (Примечание: Если эти файлы или папки изменяются во время их передачи или если какая-либо из папок пуста, может возникнуть отказ или ошибка. Если вы задаете путь, который не существует, генерируется ошибка.)

    Первый раз, когда рабочий процесс оценивает задачу для определенного задания, планировщик передает рабочему файлы и папки в AttachedFiles свойство. На рабочем компьютере создается структура папки, точно такая же, как и на клиентском компьютере, где было задано свойство. Записи, перечисленные в значении свойства, добавляются к верхней части команды пути поиска файлов в рабочем сеансе. (Подпапки записей не добавляются в путь, даже если они включены в структуру папок.) Чтобы узнать, где файлы помещены на рабочую машину, используйте функцию getAttachedFilesFolder в коде, который запускается на рабочем.

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

    Когда вы задаете AttachedFiles во время создания задания параметры объединяются с параметрами, заданными в соответствующем профиле. Настройка AttachedFiles на объекте задания после создания не совмещает новый параметр с параметрами профиля, а перезаписывает существующие параметры для этого задания.

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

  • AutoAttachFiles - Это свойство объекта задания использует логическое значение, чтобы указать, что вы хотите, чтобы MATLAB выполнял анализ функций задачи в задании и вручную вложенных файлов, чтобы определить, какие файлы кода необходимы работникам, и автоматически отправлять эти файлы работникам. Можно задать это значение свойства в профиле кластера с помощью Profile Manager, или можно программно задать его для объекта задания в командной строке.

    c = parcluster();
    j = createJob(c);
    j.AutoAttachFiles = true;

    Поддерживаемые форматы файлов кода для автоматического вложения являются файлами MATLAB (.m расширение), Pcode-файлы (.p) и файлы MEX (.mex). Обратите внимание, что AutoAttachFiles не содержит файлов данных для вашего задания; использовать AttachedFiles свойство для явной передачи этих файлов работникам.

    Использовать listAutoAttachedFiles чтобы получить список файлов кода, автоматически присоединенных к заданию.

    Если на AutoAttachFiles установка true для профиля кластера, используемого при запуске параллельного пула, MATLAB выполняет анализ на spmd блоки, parfor-циклы и другие вложенные файлы, чтобы определить, какие другие файлы кода необходимы для выполнения, затем автоматически присоединяет эти файлы к параллельному пулу, чтобы код был доступен работникам.

Примечание

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

Передайте код MATLAB для запуска и конца

Как сеанс MATLAB, рабочий сеанс выполняет свой startup.m файл каждый раз, когда он запускается. Можно разместить startup.m файл в любой папке в пути поиска файлов MATLAB работника, например toolbox/parallel/user.

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

  • jobStartup.m автоматически выполняется для работника, когда работник запускает свою первую задачу задания.

  • taskStartup.m автоматически выполняется на работнике каждый раз, когда работник начинает оценку задачи.

  • poolStartup.m автоматически выполняется на работнике при каждом включении работника в вновь запущенный параллельный пул.

  • taskFinish.m автоматически выполняется работником каждый раз, когда работник завершает оценку задачи.

Пустые версии этих файлов указаны в папке:

matlabroot/toolbox/parallel/user

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

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

Рабочий пользователь имеет приоритет перед версиями, представленными в AttachedFiles свойство, затем к указанным в AdditionalPaths свойство. Если любой из этих файлов не включен в эти свойства, рабочий процесс использует версию файла в toolbox/parallel/user папка установки MATLAB работника.

Похожие темы