I use parpool and parsim, but only 1 worker 'works' instead of 4.
11 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I have this Simulink file that runs for 3.84 s. Each 0.04 s. the data changes. I want to use parsim to make the simulation faster. I wrote the code below, but it seems that it uses only one worker (at least only one simulation appears in the manager). Is there any change I should do, or this is the correct way, because its slower than the simple sim command.
% Create a parallel pool if not already available
if isempty(gcp('nocreate'))
parpool; % Create a parallel pool
end
% Load Model & Simulation Input
model = 'zigzag_example_matlab';
Simulink.BlockDiagram.buildRapidAcceleratorTarget(model);
simIn = Simulink.SimulationInput(model);
%Simulation
tic
simout = parsim(simIn, 'TransferBaseWorkspaceVariables', 'on', 'ShowSimulationManager', 'on');
toc
2 Commenti
Edric Ellis
il 11 Dic 2023
parsim allows you to run multiple simulations in parallel - you should split your data up into pieces, and then run each piece as a separate simulation.
Risposte (1)
Walter Roberson
il 11 Dic 2023
Spostato: Walter Roberson
il 12 Dic 2023
You appear to be building a scalar simIn
You should be constructing an array of simulation input objects
The parsim documentation has the example,
FeedTempSweep = 250:10:300;
for i = length(FeedTempSweep):-1:1
in(i) = Simulink.SimulationInput('CSTR');
in(i) = in(i).setVariable('FeedTemp0',FeedTempSweep(i));
end
out = parsim(in, 'ShowSimulationManager', 'on')
Here, 'CSTR' is the name of the model that is to be run.
Each member of the in array defines one simulation to be run. parsim() runs several of the entries in parallel.
5 Commenti
Edric Ellis
il 13 Dic 2023
It does indeed sound like something isn't quite right there. Are you comparing the parsim time to something like this?
Sweep = 0.00:0.04:3.84;
for i = length(Sweep):-1:1
SampleTime = Sweep(i);
[t, y] = sim(model);
end
Vedere anche
Categorie
Scopri di più su Manual Performance Optimization in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!