Simulink.data.dictionary.setupWorkerCache

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

Описание

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

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

У вас должна быть лицензия Parallel Computing Toolbox™, чтобы выполнить параллельную симуляцию с помощью parfor блок.

Примеры

Разверните различное управление Используя параллельную симуляцию

Использовать параллельную симуляцию, чтобы развернуть различное управление (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