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

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

Примечание

Для примера, который показывает, как совместно использовать код с рабочими, использующими batch, смотрите Пакетное задание Запуска и доступ к Файлам от Рабочих.

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

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

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

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

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

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

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

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

    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 Parallel Server) в Руководстве Системного администратора MATLAB Parallel Server.

Передайте данные и от рабочего Сешнза

Много свойств на задаче и объектах задания спроектированы для передающего кода или данных от клиента к планировщику рабочему, и назад. Эта информация могла включать код 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 расширение), 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.

Похожие темы