2012-09-12 2 views
5

저는 matlab에서 병렬 컴퓨팅에 대해 처음입니다. 나는 분류 자 ​​(SVM)를 생성하는 함수를 가지고 있으며 여러 데이터 집합으로 테스트하고 싶습니다. 나는 2 코어 워크 스테이션을 가지고 있으므로 병렬로 테스트를하고 싶습니다. 누군가가 나에게 사이의 차이를 설명 할 수 : parfor 루프에 대한 병렬 인 반면 SPMD 대 Parfor

dataset_array={dataset1, dataset2} 
matlabpool open 2 
spmd 
     my_function(dataset(labindex)); 
end 

dataset_array={dataset1, dataset2} 
matlabpool open 2 
parfor i:1=2 
     my_function(dataset(i)); 
end 

답변

10

SPMD 것은, 병렬 영역이다. 차이점은 spmd 지역에서는 병렬로 수행 할 수있는 작업에있어 유연성이 훨씬 높다는 것입니다. for 루프를 작성하면 분산 배열과 벡터에서 조작 할 수 있습니다. 일반적으로 루프 이상으로 구성된 전체 작업 흐름을 프로그래밍 할 수 있습니다. 이는 가격대로 나옵니다. 쓰레드간에 작업과 데이터를 분산시키는 것에 대해 더 많이 알아야합니다. 예를 들어 루프를 병렬화하려면 작업자 (코드에서 labindex을 사용하여 작업 한 코드)에서 루프 인덱스 범위를 명시 적으로 나누어야하며 분산 배열을 만들 수도 있습니다.

parfor 반면에 parfor는 병렬 처리 된 for 루프입니다. 자동으로 병렬 처리하면 추가 할 수 있으므로 MATLAB을 통해 작업이 분할됩니다.

병렬로 단일 루프 만 실행하고 나중에 로컬 클라이언트에서 결과를 처리하려는 경우 parfor를 사용해야합니다. 전체 MATLAB 프로그램을 병렬 처리하려면 spmd 및 작업 배포의 복잡성을 처리해야합니다.

+0

설명해 주셔서 감사합니다. 제가 잘못하지 않았다면, 제가 작성한 예제는 다른 방식으로 동일한 결과를 만들어냅니다. 맞습니까? –

+1

@ Lazza87 예. 이 경우에는 차이점이 없으며 두 가지 방법을 모두 사용할 수 있습니다. – angainor

관련 문제