이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
spmd
병렬 풀의 워커에서 코드를 병렬로 실행
구문
spmd
statements
end
설명
spmd,
는 한 줄에 statements
, endspmd
문을 정의합니다. MATLAB®은 statements
로 표시되는 spmd
본문을 여러 MATLAB 워커에서 동시에 실행합니다. 각 워커는 다른 데이터 세트 또는 분산 데이터의 다른 부분에 대해 연산을 수행할 수 있으며, 병렬 연산을 수행하면서 병렬 연산에 참여 중인 다른 워커와 통신할 수 있습니다. spmd
문은 Parallel Computing Toolbox™가 있는 경우에만 사용할 수 있습니다. 명령문을 병렬로 실행하려면 우선 parpool
을 사용하여 MATLAB 워커로 구성된 풀을 만들거나 병렬 기본 설정에서 자동 풀 시작을 허용해야 합니다.
spmd
문의 본문 내에서, 각 MATLAB 워커는 고유한 spmdIndex
값을 가지며 spmdSize
는 블록을 병렬로 실행하는 총 워커 개수를 나타냅니다. spmd
문의 본문 내에서, 통신 작업용 통신 함수(예: spmdSend
및 spmdReceive
)는 워커 간에 데이터를 전송할 수 있습니다.
spmd
문의 본문에서 반환되는 값은 MATLAB 클라이언트에서 Composite
객체로 변환됩니다. Composite 객체는 원격 MATLAB 워커에 저장된 값에 대한 참조를 포함하며 사용자는 셀형 배열 인덱싱을 사용하여 이 값들을 가져올 수 있습니다. Composite 객체가 클라이언트에 있고 병렬 풀이 열려 있는 한 워커의 실제 데이터는 이후 spmd
실행 시 워커에서 계속 사용될 수 있습니다.
기본적으로 MATLAB은 풀의 모든 워커를 사용합니다. 풀이 활성화되어 있지 않은 경우 MATLAB은 풀을 만들고 이 풀에서 모든 워커를 사용합니다. 기본 설정에서 자동 풀 생성을 허용하지 않은 경우 MATLAB은 블록 본문을 로컬에서 실행하고 필요에 따라 Composite 객체를 만듭니다. spmd(0)
을 사용하지 않으면 워커가 parfeval
요청을 실행 중인 경우 spmd
블록을 실행할 수 없습니다.
spmd
및 Composite 객체에 대한 자세한 내용은 Distribute Arrays and Run SPMD 항목을 참조하십시오.
참고
clear
를 사용하려면 parfor
또는 spmd
대신 parfevalOnAll
을 사용하십시오. 이렇게 하면 작업 공간 투명성이 유지됩니다. parfor 루프 또는 spmd 문에서 투명성 확보하기 항목을 참조하십시오.
spmd(
는 병렬 풀에서 n
), statements
, endn
개의 워커를 사용할 수 있는 경우, statements
를 실행할 MATLAB 워커의 정확한 개수를 n
을 사용하여 지정합니다. 사용 가능한 워커 수가 부족한 경우 오류가 발생합니다. n
이 0이면 MATLAB은 블록 본문을 로컬에서 실행하고 Composite 객체를 만듭니다. 사용 가능한 풀이 없는 경우에도 마찬가지입니다.
spmd(
는 최소 m
,n
), statements, endm
개에서 최대 n
개의 워커를 사용하여 statements
를 실행합니다. 사용 가능한 워커 수가 부족한 경우 오류가 발생합니다. m
이 0일 수 있으며 사용 가능한 워커가 없는 경우 블록이 로컬에서 실행될 수 있습니다.
예제
팁
spmd
블록은 현재 존재하는 병렬 풀의 워커에서 실행됩니다. 풀이 없는 경우, 병렬 기본 설정에서 자동 풀 시작이 비활성화되어 있지 않는 한spmd
는 새 병렬 풀을 시작합니다. 병렬 풀이 없고spmd
가 병렬 풀을 시작할 수 없는 경우 코드는 클라이언트 세션에서 직렬로 실행됩니다.병렬 풀에 대한 클러스터 프로파일의
AutoAttachFiles
속성이true
로 설정된 경우 MATLAB은spmd
블록에 대한 분석을 수행하여 실행에 필요한 코드 파일을 결정한 다음 자동으로 이 파일을 병렬 풀 작업에 연결하여 코드가 워커에 사용될 수 있도록 합니다.spmd
사용 시의 제한 사항에 대한 자세한 내용은 여러 데이터 세트에서 단일 프로그램 실행하기 항목을 참조하십시오.spmd
의 성능과 기타 병렬 프로그래밍 구문에 대한 내용은 Choose Between spmd, parfor, and parfeval 항목을 참조하십시오.
버전 내역
R2008b에 개발됨
참고 항목
batch
| Composite
| spmdReduce
| spmdIndex
| parallel.pool.Constant
| parpool
| spmdSize