exponenta event banner

Поделиться кодом с работниками

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

Примечание

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

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

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

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

  • Используя задания AdditionalPaths собственность. Этот метод является предпочтительным для установки пути, поскольку он относится только к заданию.

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

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

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

    В этом примере задается рабочий путь MATLAB ® в среде со смешанной платформой для использования функций в обоих центральных репозиториях./central/funcs и архив отдела /dept1/funcs, каждый из которых также имеет UNC-путь 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 и рабочие службы программного обеспечения MATLAB Parallel Server™, установив MJSUSER значение в поле mjs_def перед запуском служб. Для операционных систем Microsoft Windows также MJSPASS для предоставления пароля учетной записи для указанного пользователя. Для пояснения к настройкам службы по умолчанию и mjs_def см. раздел Определение параметров сценария по умолчанию (параллельный сервер MATLAB) в руководстве системного администратора параллельного сервера MATLAB.

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

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

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

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

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

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

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

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

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

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

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

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

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

    Поддерживаемыми форматами файлов кода для автоматического вложения являются файлы MATLAB (.m расширение), файлы P-кода (.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.

Связанные темы