Issue with Simulink Model Simulation using CVSIM command inside Parfor ?

조회 수: 7 (최근 30일)
Hi,
I am trying to run multiple simulations with different data set on model 'ModelTest.slx' using parfor.
my code goes like this,
parfor
...
...
testObj = cvtest(model);
testObj.settings.decision = 1;
testObj.settings.condition =1;
tempData.data = cvsim(testObj);
...
..
end
I am getting below error after execution
Caused by:
Error using cvsim
Transparency violation error.
Below are the details of matlab version and model settings,
Matalb 2015b,
parpool with local profile.
Simulation Mode : Normal;
Solver :Fixed Step, discrete
Does anyone have any idea about this error. ?
Or Is there any other way we can extract the coverage information without using "CV" functions. ?

채택된 답변

Edric Ellis
Edric Ellis 2019년 2월 28일
Caveat: I know nothing about cvtest or cvsim. I suspect that cvsim is trying to inspect the calling workspace - this is not allowed inside parfor, and causes a "transparency violation". (This slightly cryptic term simply means that all accesses to variables must be "transparent" - i.e. obvious in the text of the program.)
Often, the simplest route is to pop the body of your parfor loop into a separate function, so you'd do:
parfor idx = ...
out(idx) = myCvSim(idx,model)
end
...
function out = myCvSim(idx,model)
testObj = cvtest(model);
...
out = cvsim(testObj);
end
  댓글 수: 3
Pat Canny
Pat Canny 2019년 3월 18일
Just as a note: beginning with R2018b, you can collect coverage when using parsim. This might simplify your workflow. In older releases, Edric's solution is the way to go.
Shivaputra Narke
Shivaputra Narke 2019년 4월 25일
Thanks for the update I will try once I get 2018b. For now, I'm still using Matlab 2015b and 2017b.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Parallel for-Loops (parfor)에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by