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

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

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

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

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

  • При помощи свойства 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\distcomp\user\jobStartup.m

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

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

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

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

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

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

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

  • 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, сеанс рабочего выполняет свой файл .m startup каждый раз, когда это запускается. Можно поместить файл startup.m в любую папку на пути поиска файлов рабочего MATLAB, таком как toolbox/distcomp/user.

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

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

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

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

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

Пустые версии этих файлов обеспечиваются в папке:

matlabroot/toolbox/distcomp/user

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

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

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