Simulink.sdi.sendWorkerRunToClient

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

Синтаксис

Simulink.sdi.sendWorkerRunToClient
Simulink.sdi.sendWorkerRunToClient(run)

Описание

пример

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

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

Примеры

свернуть все

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

Настройка

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

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

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

Инициализируйте параллельных рабочих

Используйте parpool, чтобы запустить пул четырех параллельных рабочих. Этот пример вызывает parpool в операторе if, таким образом, вы только создаете параллельный пул, если у вас уже нет того. Можно использовать spmd, чтобы запустить код инициализации, характерный для всех рабочих. Например, загрузите модель vdp и выберите сигналы регистрировать к выполнениям, что мы можем отправить Инспектору Данных моделирования на клиенте 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

К потоковым данным от параллельных рабочих Инспектору Данных моделирования необходимо идти параллельно симуляции с помощью parfor. Каждый рабочий запускает симуляцию 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

Можно использовать Инспектора Данных моделирования программируемый интерфейс на рабочем тем же путем, вы были бы в клиенте 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

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

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

spmd

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

end

Simulink.sdi.view

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

свернуть все

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

Введенный в R2018a