Why is my variable undefined when using parsim?
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
MathWorks Support Team
le 30 Août 2018
Modifié(e) : MathWorks Support Team
le 14 Avr 2023
I have a simulink model that runs when I'm not running it in parallel, but it will not run in parallel. In the function that invokes my model I create a class handle object and store it in the base workspace. From within the model I have a Matlab function that calls a function of the object by evaluating it in the base workspace. In parallel mode I get an error saying that this object handle is undefined. But it works fine if I don't run it in parallel mode.
I've created a simple model that illustrates the problem (you will need to include the files TestClass.m and TestObjSim.slx in the same directory):
objH = TestClass(1);
assignin('base','objH',objH);
% This works:
simOut = sim('TestObjSim');
% Running in parallel doesn't work:
in = Simulink.SimulationInput('TestObjSim');
simout = parsim(in,'TransferBaseWorkspaceVariables','on');
disp(simout.ErrorMessage);
Réponse acceptée
MathWorks Support Team
le 14 Avr 2023
Modifié(e) : MathWorks Support Team
le 14 Avr 2023
The reason the you see the error is because the base workspace is not shared among the workers, To make sure that each worker has access to everything, I would recommend create an initialization function that can be called by each worker to load the data including the class into the worker's base workspace.
For example,
1) Define a function in loadObject.m.
function loadObject()
objH = TestClass(1);
assignin('base','objH',objH);
2) Load the function in all workers and run parsim:
% Load object in all workers
parfevalOnAll(@loadObject,0);
% Run parallel simulation
in = Simulink.SimulationInput('TestObjSim');
simout = parsim(in,'TransferBaseWorkspaceVariables','on');
For more information about the function parfevalOnAll, please refer to this page:
Although this documentation is talking about parfor, it has some useful discussions about workspace access issue that applies to your case:
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Code Execution dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!