Parfor Error Handling results in falsely reported error in each loop
    조회 수: 5 (최근 30일)
  
       이전 댓글 표시
    
Hello, I have a problem regarding parfor loops. I try to solve an array of pdeobjects, that all have a different partly different geometry. Since for some of those geometries the pdenonlin solver doesnt find a solution ( -> Step size to small, to many iterations) I tried using an error handle:
Torque=zeros(1,(length(sCalc.angle)-1));
Error=zeros(1,(length(sCalc.angle)-1));
parfor i=1:1:(length(sCalc.angle)-1)
  try
    results = solvepde(sMotor(i));
    Torque(i)=getTorque2(results);
    result(i)=results;
    Error(i)=0;
  catch
    Error(i)=1;
  end
end
This works for a normal for:
Error  0 0 0 0 1 0
But when using parfor, even though it doesnt fail I get an Error for each loop:
Error  1 1 1 1 1 1
What am I doing wrong?
댓글 수: 1
  OCDER
      
 2017년 9월 8일
				Not sure because we don't know what these are: sCalc, sMotor, solvepde, and getTorque2. But instead of catching your Error in a matrix, try to display the error message in the catch statement. That may reveal the error source.
Torque=zeros(1,(length(sCalc.angle)-1));
Error=zeros(1,(length(sCalc.angle)-1));
parfor i=1:1:(length(sCalc.angle)-1)
  try
    results = solvepde(sMotor(i));
    Torque(i)=getTorque2(results);
    result(i)=results;
    Error(i)=0;
  catch ME
    disp(ME.message); %Will show the error info
    Error(i)=1;
  end
end
답변 (1개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Platform and License에 대해 자세히 알아보기
			
	제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

