2013-05-07 6 views
0

비디오에서 계산을 수행하는 MATLAB 프로그램을 작성했습니다. 나는 다수의 CPU 코어에 적응할 수있는 완벽한 후보라고 생각합니다. 저는 각 실험실에 프레임의 각 섹션을 보내는 첫 번째 비트로 쑥쑥 열심히 노력하고 있습니다. 단순화를 위해 200 프레임 파일이라고 말하십시오. 나는 몇몇 안내서를 읽고 SPMD를 사용하여 이것을 얻었다.MATLAB을 사용한 병렬 이미지 처리

spmd 
limitA = 1; 
limitB = 200; 
a = floor(((limitB-limitA)/numlabs)*(labindex-1)+limitA);        
b = floor((((limitB-limitA)/numlabs)*(labindex-1)+limitA)+(((limitB-limitA)/numlabs))); 
fprintf (1,'Lab %d works on [%f,%f].\n',labindex,a,b); 
end 

각 작업자가 각 섹션 (예 : 랩 1은 1:50, 실습 2 : 50 등)에서 작업 할 것이라고 성공적으로 출력합니다.

지금 막 붙어있는 곳은 실제로 코드의 주요 본체가 각 랩의 프레임 섹션에서 어떻게 작동하는지입니다. 현재 주 코드를 편집 할 수있는 팁이나 쉬운 방법이 있습니까? labindex를 기반으로 작업 할 프레임을 알고 있습니까? 루프에 결과를 spmd 추가 오류 내 질문에 따라서.

덕분에 당신은 무엇을했다에 이어

답변

0

, 당신은 단순히이 같은 필요가 없습니다 : 그건 당신이하고있는 일의 종류가 있다면, 물론

spmd 
    % each lab has its own different values for 'a' and 'b' 
    for idx = a:b 
     frame = readFrame(idx); % or whatever 
     newFrame = doSomethingWith(frame); 
     writeFrame(idx, newFrame); 
    end 
end 

을, 당신이해야 할 수도 있습니다 프레임 쓰기를 직렬화합니다 (즉, 한 번에 하나의 프로세스 만 작성해야 함).

+0

안녕하세요. 도움이 많이되었습니다. 각 개별 실험실이 프레임 섹션에서 작업하도록 제어하는 ​​것에 대해 머리를 맞지 않았습니다. 하지만 이제는 당신이 말한대로, 각 실험실이 자신의 "a and b"를 보았습니다. 여기에서 뭔가를 얻을 수 있어야합니다. 감사. –