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 항목을 참조하십시오.
참고
parfevalOnAll를 사용하려면 parfor 또는 spmd 대신 clear을 사용하십시오. 이렇게 하면 작업 공간 투명성이 유지됩니다. parfor 루프 또는 spmd 문에서 투명성 확보하기 항목을 참조하십시오.
spmd(는 병렬 풀에서 n), statements, endn개의 워커를 사용할 수 있는 경우, statements를 실행할 MATLAB 워커의 정확한 개수를 n을 사용하여 지정합니다. 사용 가능한 워커 수가 부족한 경우 오류가 발생합니다. n이 0이면 MATLAB은 블록 본문을 로컬에서 실행하고 Composite 객체를 만듭니다. 사용 가능한 풀이 없는 경우에도 마찬가지입니다.
spmd(는 최소 m,n), statements, endm개에서 최대 n개의 워커를 사용하여 statements를 실행합니다. 사용 가능한 워커 수가 부족한 경우 오류가 발생합니다. m이 0일 수 있으며 사용 가능한 워커가 없는 경우 블록이 로컬에서 실행될 수 있습니다.
spmd(는 pool,___), statements, endparallel.Pool 객체 pool이 지정한 병렬 풀에서 statements를 실행합니다. gcp 함수가 반환하는 풀이 아닌 다른 풀에서 spmd 문을 평가하려면 이 구문을 사용합니다. (R2025a 이후)
예제
입력 인수
팁
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
