2013-01-29 2 views
2

MATLAB 2012b의 Simbiology 도구 상자와 함께 병렬 컴퓨팅 도구 상자 (PCT)를 사용하고 있습니다.MATLAB 병렬 도구 상자, remoteParallelFunction : 함수 평가 중 RUNTIME_ERROR

잡은 std::exception 예외 메시지는 다음과 같습니다 :

vector::_M_range_check 

Error using parallel_function (line 589) 
Error in remote execution of remoteParallelFunction : RUNTIME_ERROR 

Error in PSOFit (line 486) 
         parfor ns = 1:r.NumSwp 

Error in PSOopt_driver (line 209) 
     PSOFit(ObjFuncName,LB,UB,PSOopts); 

오류는하지 않습니다 내가 노동자의 원격 풀과 내 스크립트를 실행할 때 내가 아니라 노동자의 로컬 수영장, 간헐적 오류 메시지를 수신하고 있습니다 함수 sbiosimulate (모델 평가를위한 SimBiology 함수)에 대한 호출을 주석 처리 할 때 발생합니다.

나는 몇 가지 아이디어가 : 나는 모델 변수 접근에 문제를 일으키는 경쟁 조건의 어떤 종류를 도입했습니다

  • 은 (MATLAB이 가능합니까?)
  • 모델 편집에서 simbiology 항상 가끔 있지만 PCT와 호환되며, 나는 sbiosimulate이 컴파일 된 C++ 코드를 평가하기 때문에
  • 가 어떤 입력에 대해 예외를 생성하는 소스에 버그가있을 수 있습니다 가장자리 케이스의 일종을 공격 한

나는 this을 알고 있습니다.

+0

원격 컴퓨터의 메모리가 부족합니까? – slayton

+0

다른 모든 변수는 로컬에서 실행할 때 동일합니다 (즉, 동일한 데이터 세트를 사용하고 있습니까?). 같은 수의 반복을 실행하고 있습니까? 기타...? – slayton

+0

모든 작업자가 최신 버전의 matlab을 실행하고 있습니까? – slayton

답변

1

나는 SimBiology의 개발자입니다. 저는 이것이 R2012a 릴리스의 SimBiology의 C++ 코드에 도입 된 버그라고 생각합니다. 시뮬레이션 결과가 생성되지 않고 시뮬레이션이 끝나면 버그가 발생합니다. 이는 모델이 특정 시간 (OutputTimes 옵션 사용)을보고하도록 구성되고 시뮬레이션이 특정 양의 실시간 (MaximumWallClock 옵션 사용) 후에 종료되도록 구성되는 경우에 때로 발생할 수 있습니다. 기본적으로 시뮬레이션은 첫 번째 출력 시간을 기록 할 기회를 갖기 전에 "시간 초과"됩니다.

이 문제를 해결하는 한 가지 방법은 OutputTimes에 항상 시간 0을 포함시키는 것입니다. 이 시간은 MaximumWallClock 기준을 평가하기 전에 항상 로깅되어 버그가 트리거되지 않도록합니다. 이 사용자에게 직접 연락하고 향후 릴리스에서 버그를 수정하는 작업을 수행 할 것입니다.

관련 문제