batchsim

Разгрузка симуляций для выполнения в вычислительном кластере

Описание

пример

simJob = batchsim(in) запускает пакетное задание для одного работника, чтобы симулировать модель с помощью входов, заданной в SimulationInput объект, in.

simJob = batchsim(myCluster,in) запускает пакетное задание на кластере, идентифицированном объектом кластера myCluster. Если профиль кластера не задан, batchsim использует профиль кластера по умолчанию, установленный в параллельных настройках. Для получения дополнительной информации смотрите Обнаружение кластеров и Использование профилей кластеров (Parallel Computing Toolbox).

simJob = batchsim(...,Name,Value) запускает пакетное задание, которое моделирует модель с помощью входов, заданных в SimulationInput объект и опции, заданные как Name,Value пара.

batchsim переносит симуляции в вычислительный кластер, позволяя выполнять другие задачи во время обработки пакетного задания или закрывать клиентский MATLAB® и получите доступ к пакетному заданию позже. Используйте 'Pool' аргумент для выполнения параллельных симуляций.

batchsim команда использует лицензии Parallel Computing Toolbox™ и MATLAB Parallel Server™, чтобы запустить симуляции в вычислительном кластере. batchsim запускает симуляции последовательно, если параллельный пул не может быть создан. Если лицензия Parallel Computing Toolbox недоступна, batchsim ошибки.

Примеры

свернуть все

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

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

Откройте модель.

openExample('simulink/OpenTheModelExample');
open_system('ex_sldemo_househeat');
load_system('ex_sldemo_househeat')

Задайте множество значений для различных температур.

setPointValues = 65:2:85;
spv_Length = length(setPointValues);

Использование setPointValues, инициализируйте массив Simulink.SimulationInput объекты.

in(1:spv_Length) = Simulink.SimulationInput('ex_sldemo_househeat');
for i = 1:1:spv_Length 
    in(i) = in(i).setBlockParameter('ex_sldemo_househeat/Set Point',...
        'Value',num2str(setPointValues(i)));
end

Укажите размер пула для количества работников, которые будут использоваться. В сложение к количеству работников, используемых для запуска параллельных симуляций, требуется главный рабочий. В этом случае предположим, что для запуска пакетного задания для параллельных симуляций доступны три работника. Объект задания возвращает полезные метаданные, как показано на рисунке. Можно использовать задание ID чтобы получить доступ к объекту задания позже с любой машины. NumWorkers показывает, сколько рабочих выполняет симуляции. NumWorkers всегда является количеством работников, заданным в 'Pool' аргумент и дополнительный головной рабочий.

simJob = batchsim(in,'Pool',3)
                  ID: 1
                Type: pool
          NumWorkers: 4
            Username: #####
               State: running
      SubmitDateTime: ##-###-#### ##:##:##
       StartDateTime: 
    Running Duration: 0 days 0h 0m 0s

Доступ к результатам пакетного задания с помощью fetchOutputs способ. fetchOutputs возвращает массив Simulink.SimulationOuput объекты.

out = fetchOutputs(simJob)
1x11 Simulink.SimulationOutput array

Входные параметры

свернуть все

Задается как Simulink.SimulationInput объект или массив Simulink.SimulationInput объекты, которые используются для задания изменений в модели для симуляции.

Пример: in = Simulink.SimulationInput('vdp')

Объект кластера, который используется для задания кластера, в котором запускается пакетное задание.

Аргументы в виде пар имя-значение

Пример: 'Pool', 5

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Задается как вектор символов, массив ячеек или массив векторов символов для определения путей, которые будут добавлены в путь поиска файлов MATLAB работников перед выполнением симуляций. Значение по умолчанию пути поиска файлов может быть не тем же самым для рабочих процессов, что и для клиента; различие в пути может быть результатом различных текущих рабочих папок (pwd), платформ или доступа к сетевой файловой системе. 'AdditionalPaths'свойство может гарантировать, что работники ищут в правильных местах необходимые файлы кода, файлы данных, файлы модели и т.д.

Задается как массив ячеек из дополнительных файлов для присоединения к параллельному пулу.

Задается как true или false, чтобы контролировать, добавляются ли добавленные пользователем записи в пути клиента к каждому рабочему пути.

Задается как true или false, чтобы контролировать, будут ли файлы кода автоматически присоединены к заданию.

Задается как true или false, чтобы указать на набор diary.

Задайте function handle на 'CleanupFcn' для выполнения один раз на рабочий процесс после завершения симуляций.

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

Когда ManageDependencies установлено в 'on'зависимости модели автоматически отправляются параллельным рабочим при необходимости. Если ManageDependencies установлено в 'off', явно присоедините зависимости модели к параллельному пулу.

Целое число, определяющее количество рабочих процессов для параллельного пула для задания в дополнение к работнику, выполняющему само пакетное задание. Симуляции используют этот пул для выполнения. Поскольку пул требует N рабочих в дополнение к работнику, выполняющему пакет, в кластере должны быть доступны по крайней мере N + 1 рабочих.

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

Задайте function handle на 'SetupFcn' чтобы запускать один раз на рабочий процесс перед началом симуляций.

Примечание

Когда buildRapidAcceleratorTarget используется в SetupFcn и модель имеет заданные внешние входы, либо набор 'LoadExternalInput'to' off'или убедитесь, что указанный внешний вход доступен работникам, чтобы предотвратить ошибку компиляции.

Установите значение 'on', чтобы скопировать прогресс симуляций в командное окно в diary от Simulink.Simulation.Job объект. Прогресс скрыт, когда установлено значение 'off'.

Настройка 'StopOnError' на 'on' останавливает выполнение симуляций, если обнаружена ошибка.

Когда TransferBaseWorkspaceVariables установлено в trueпеременные, используемые в модели и заданные в базовом рабочем пространстве, передаются параллельным рабочим.

Примечание

Использование TransferBaseWorkspaceVariables требует компиляции модели.

Когда UseFastRestart установлено в true, симуляции выполняются на рабочих местах с помощью быстрого перезапуска.

Примечание

При использовании batchsim, используйте UseFastRestart опция, а не FastRestart опция. Для получения дополнительной информации см. Запуск с быстрой перезагрузкой.

Выходные аргументы

свернуть все

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

Расширенные возможности

Введенный в R2018b