2012-11-12 4 views
0

최근 게시글에는 병렬 도구 상자가 경고를 처리하는 방식과 일반 matlab에서 사용하는 방식이 다르다고 들었습니다. 나는 포스터 손이 내 질문에 답하는 것에 어딘지로 느껴져서 대답으로 표시했다. 그러나 나는 아직도 몇 가지 추가 질문을하고있다. 누군가가 이러한 차이점이 무엇인지 나에게 설명 할 수있는 경우평행 도구 ​​상자와 일반 matlab 간의 오류 처리 차이점

Error only triggers when I don't use parfor?

난 그냥 궁금? 또한 parfor가 샌드 박스 화되는 것은 무엇을 의미합니까?

병렬 도구 상자에서 시도 유형 구조를 시도하거나 다른 메커니즘을 사용하여 같은 것을 연결하는 것이 가능한가요?

내가 나에게 illconditioned 된 MATIX을 말하는 메시지는 여전히 생산 경고 parfor 사용하여 실행하지만이 선 그러나

warnState(1) = warning('error', 'MATLAB:singularMatrix'); 
warnState(2) = warning('error', 'MATLAB:illConditionedMatrix'); 

를 추가하는 나를에도 불구하고 오류로 포착되고있는 것 같지 않을 때 명확하게하려면 , 일반 for 루프를 사용하여 실행하면 오류로 선택됩니다.

그래서 병렬 도구 상자는 위의 코드를 통해 경고를 올바르게 해석하지 못하기 때문에 try catch 구조에서 사용할 수 있습니다.

친절 감사

+0

를 표시 없음으로 실행 스레드 된 응용 프로그램이 작동하면 동시에 두 가지 작업을 수행 할 수 있습니다. 즉, 두 가지가 동시에 잘못된 것이 될 수 있음을 의미합니다. 즉, 예외를 잡았을 때 경고/예외 잡기의 이전 메서드가 작동하지 않지만 첫 번째 등을 처리하는 동안 다른 메서드를 던지면 오류 처리가 변경된 이유를 알 수 있습니다. –

답변

1

나는 원래 코드에서 문제가 당신이 MATLAB 클라이언트에서만 오류 경고를 변경하는 것이라고 생각합니다. 노동자에 그 변경하려면, 당신은 모든 곳에서 일을 실행하는 pctRunOnAll 기능도 있습니다

spmd 
    warnState(1) = warning('error', 'MATLAB:singularMatrix'); 
    warnState(2) = warning('error', 'MATLAB:illConditionedMatrix'); 
end 

할 필요가있다.

또한 OP가 matlabpool 작업자가 '샌드 박스 처리'에 대해 의미하는 바가 무엇인지 알 수 없습니다. MATLAB 클라이언트와 작업자의 차이점은 다음과 같습니다.

  1. 작업자는 항상 단일 스레드 모드로 실행됩니다. 어떻게 멀티에 대해 생각하는 경우 : 및
  2. 노동자 (그들은 오프 스크린 그래픽을 생산하고 파일에 저장할 수 있지만) 그냥 여기를 떠날거야, 그래서이 응답하지 않습니다