2012-01-08 3 views
2

Matlab에서 일부 병렬 기능을 사용하고 싶습니다. 그리고 다음 명령을 실행하십시오.matlabpool에서 배치 사용시의 문제

matlabpool open local 12; 
batch(funcname,1,{arg},'PathDependencies',p,'Matlabpool',1); 

그런 다음 모든 프로세스는 시간이 ... 의 나머지 그러나 matlabpool를 열지 않고 침묵을 유지한다. 그것은 정상적으로 끝날 것입니다. matlabpool과 배치 사용간에 충돌이 있습니까?

답변

1

matlabpool 명령은 로컬 스케줄러에서 병렬 작업을 실행하여 parfor 루프와 spmd 블록의 본문을 실행할 작업자를 제공합니다. 즉, matlabpool이 열려있는 동안 로컬 스케줄러에 사용 가능한 작업자 수가 줄어 듭니다. 그런 다음 batch 작업을 실행하려고하면 작업자가없는 경우에만 작업을 실행할 수 있습니다.

"병렬"데스크탑 메뉴 항목의 "작업 모니터"를 사용하여 로컬 스케줄러에서 실행중인 작업의 수를 확인할 수 있습니다 (matlabpool 세션은 1213 개의 작업으로 상태가 running 인 작업으로 표시됩니다)), 또는 다음의 코드 조각을 실행하여 : 당신이 다른 것보다 matlabpool와

동시에 배치 및 parfor 원한다면
s = findResource('scheduler', 'Type', 'local'); 
[pending, queued, running, finished] = findJob(s); 
running 
1

오픈 한 적은 노동자. 너의 경우에 11. 먼저 배치하고 matlabpool을 실행하면 자동으로이 작업을 수행하지만 그 반대는 수행하지 않습니다. 두 번째 MATLAB 인스턴스를 열면 다른 12 명 노동자를 얻을 수 있습니다, 흥미롭게도

c=parcluster 
c.Jobs 

:

는 큐를 볼 수 있습니다. 하지만 이상하게도 3 분의 1은 아닙니다. 비록 당신이 실제로 그것을 모두 쓰레기처럼 사용하는 것 같아요.