exponenta event banner

Simulink.data.dictionary.setupWorkerCache

Включить параллельное моделирование со словарем данных

Описание

Simulink.data.dictionary.setupWorkerCache подготавливает работников в параллельном пуле для моделирования модели, связанной со словарем данных. Используйте эту функцию в spmd (Панель параллельных вычислений), перед запуском parfor (Parallel Computing Toolbox), чтобы предоставить работникам в параллельном пуле способ безопасного взаимодействия с одним словарем данных.

Во время параллельного моделирования модели, связанной со словарем данных, можно разрешить каждому работнику получать доступ к данным в словаре и изменять их независимо от других работников. Simulink.data.dictionary.setupWorkerCache временно предоставляет каждому работнику в пуле собственный кэш словаря данных, позволяя ему использовать данные в словаре без его постоянного изменения.

Необходимо иметь лицензию Parallel Computing Toolbox™ для выполнения параллельного моделирования с использованием parfor (Панель параллельных вычислений) блок.

Примеры

Управление вариантами сдвига с помощью параллельного моделирования

Использование параллельного моделирования для сдвига элемента управления исполнения (a Simulink.Parameter объект, значение которого влияет на условие исполнения Simulink.Variant объект), хранящийся в словаре данных, используйте этот код в качестве шаблона. Измените имена и значения модели, словаря данных и элемента управления исполнениями в соответствии с приложением.

Для сдвига значений параметров блока или переменных рабочей области, используемых для задания параметров блока, используйте Simulink.SimulationInput вместо программного интерфейса к словарю данных. См. раздел Оптимизация, оценка и значения параметров блока сдвига.

Для выполнения параллельного моделирования необходимо иметь лицензию Parallel Computing Toolbox.

% For convenience, define names of model and data dictionary
model = 'mySweepMdl';
dd = 'mySweepDD.sldd';

% Define the sweeping values for the variant control
CtrlValues = [1 2 3 4];

% Grant each worker in the parallel pool an independent data dictionary 
% so they can use the data without interference
spmd 
    Simulink.data.dictionary.setupWorkerCache
end

% Determine the number of times to simulate
numberOfSims = length(CtrlValues);

% Prepare a nondistributed array to contain simulation output
simOut = cell(1,numberOfSims);

parfor index = 1:numberOfSims
    % Create objects to interact with dictionary data
    % You must create these objects for every iteration of the parfor-loop
    dictObj = Simulink.data.dictionary.open(dd);
    sectObj = getSection(dictObj,'Design Data');
    entryObj = getEntry(sectObj,'MODE'); 
    % Suppose MODE is a Simulink.Parameter object stored in the data dictionary
    
    % Modify the value of MODE
    temp = getValue(entryObj);
    temp.Value = CtrlValues(index);
    setValue(entryObj,temp);

    % Simulate and store simulation output in the nondistributed array
    simOut{index} = sim(model);
    
    % Each worker must discard all changes to the data dictionary and
    % close the dictionary when finished with an iteration of the parfor-loop
    discardChanges(dictObj);
    close(dictObj);
end

% Restore default settings that were changed by the function
% Simulink.data.dictionary.setupWorkerCache
% Prior to calling cleanupWorkerCache, close the model

spmd
    bdclose(model)
    Simulink.data.dictionary.cleanupWorkerCache
end

Примечание

Если словари данных открыты, использовать команду нельзя Simulink.data.dictionary.cleanupWorkerCache. Для идентификации открытых словарей данных используйте Simulink.data.dictionary.getOpenDictionaryPaths.

См. также

| (Панель инструментов параллельных вычислений) | (Панель инструментов параллельных вычислений)

Представлен в R2015a