Simulink.sdi.sendWorkerRunToClient

Отправка запусков, созданных на параллельных рабочих местах, в Данные моделирования Inspector

Описание

пример

Simulink.sdi.sendWorkerRunToClient отправляет последний запуск, сгенерированное работником, клиенту MATLAB® и импортирует запуск в Данные моделирования Inspector.

Simulink.sdi.sendWorkerRunToClient(run) отправляет запуск, соответствующий run в MATLAB клиента и импортирует запуск в Данные моделирования Inspector.

Примеры

свернуть все

В этом примере показано, как использовать Simulink.sdi.sendWorkerRunToClient отправлять запуски, созданные с помощью параллельных рабочих процессов, вручную в Данные моделирования Inspector.

Setup

Этот пример запускает несколько симуляций vdp модель, изменяющая значение усиления, Mu. Чтобы настроить для параллельной симуляции, задайте вектор Mu Значения и настройте Данные моделирования Inspector для ручной поддержки Parallel Computing Toolbox.

% Enable manual Parallel Computing Toolbox support
Simulink.sdi.enablePCTSupport('manual');

% Choose several Mu values
MuVals = [1 2 3 4];

Инициализация параллельных рабочих процессов

Использование parpool (Parallel Computing Toolbox), чтобы создать пул из четырех параллельных рабочих. Этот пример вызывает parpool внутри оператора if, так что вы создаете параллельный пул, только если у вас его еще нет. Можно использовать spmd (Parallel Computing Toolbox), чтобы запустить код инициализации, общий для всех работников. Для примера загрузите vdp моделируйте и выбирайте сигналы для регистрации в запусках, которые мы можем отправить в Данные Моделирования Inspector на клиентском MATLAB. Чтобы избежать проблем параллелизма данных при симуляции с sim в parfor, создайте временную директорию для каждого работника. После завершения симуляций другой блок spmd удаляет временные директории.

p = gcp('nocreate');

if isempty(p)
    
    parpool(4);

end
Starting parallel pool (parpool) using the 'local' profile ...
connected to 4 workers.
spmd
    
    % Load system and select signals to log
    load_system('vdp')
    Simulink.sdi.markSignalForStreaming('vdp/x1',1,'on')
    Simulink.sdi.markSignalForStreaming('vdp/x2',1,'on')
    
    % Create temporary directory for simulation on worker
    workDir = pwd;
    addpath(workDir)
    tempDir = tempname;
    mkdir(tempDir)
    cd(tempDir)
    
end

Выполняйте параллельные симуляции с parfor

Чтобы передать данные от параллельных рабочих процессов в Данные Моделирования Inspector, необходимо запустить параллельные симуляции с помощью parfor (Parallel Computing Toolbox). Каждый рабочий запускает vdp симуляция с другим значением Mu. Simulink не может получить доступ к содержимому parfor цикл, поэтому переменная MuVal определяется в рабочей области работника, где vdp модель может увидеть его, используя assignin.

parfor (index = 1:4)
     
    % Set value of Mu in the worker's base workspace
    assignin('base','MuVal',MuVals(index));
    
    % Modify the value of Mu in the model and simulate
    set_param('vdp/Mu','Gain','MuVal')
    sim('vdp')
  

Доступ к данным и отправка выполнения клиенту MATLAB

Программный интерфейс Данные Моделирования Inspector можно использовать в рабочем режиме так же, как в клиентском MATLAB. Этот пример создает Simulink.sdi.Run объект и присоединяет значение Mu используется в симуляции с Tag свойство.

    
    % Attach metadata to the run
    IDs = Simulink.sdi.getAllRunIDs;
    lastIndex = length(IDs);
    runID = Simulink.sdi.getRunIDByIndex(lastIndex);
    parRun = Simulink.sdi.getRun(runID);
    parRun.Tag = strcat('Mu = ',num2str(MuVals(index)));
    
    % Send the run to the Simulation Data Inspector on the client MATLAB
    Simulink.sdi.sendWorkerRunToClient
    
end

Закройте временные Директории и просмотрите Запуски в Данные моделирования Inspector

Использование другого spmd раздел, чтобы удалить временные директории, созданные для рабочих процессов после завершения симуляций. В каждой симуляции Simulink.sdi.sendWorkerRunToClient импортировал запуски от всех работников в Данные моделирования Inspector. Можно просмотреть данные и проверить свойства run, чтобы увидеть значение Mu используется во время симуляции.

spmd

    % Remove temporary directories
    cd(workDir)
    rmdir(tempDir, 's')
    rmpath(workDir)

end

Simulink.sdi.view

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

свернуть все

Идентификатор запуска или Simulink.sdi.Run объект, соответствующий запуск, которую вы хотите импортировать в Данные моделирования Inspector.

Введенный в R2018a