parpool
클러스터에서 병렬 풀 만들기
구문
설명
parpool
은 디폴트 프로파일을 사용하여 워커로 구성된 병렬 풀을 시작합니다. 디폴트 기본 설정에서 MATLAB®은 물리적 CPU 코어당 하나의 워커를 사용해 로컬 컴퓨터에서 풀을 시작하며, 이때 워커의 최대 개수는 디폴트 프로파일에 설정된 한계까지입니다. 병렬 기본 설정에 대한 자세한 내용은 병렬 기본 설정 지정하기 항목을 참조하십시오.
일반적으로 풀 크기는 디폴트 프로파일의 PreferredPoolNumWorkers
속성에 의해 지정됩니다. 풀 크기에 영향을 미칠 수 있는 모든 요인은 풀 크기에 영향을 미치는 요인 항목을 참조하십시오.
parpool
을 사용하면 워커로 구성된 풀에 대한 특수 작업을 만들고 MATLAB 클라이언트를 병렬 풀에 연결하여 MATLAB의 병렬 언어 기능이 모두 가능하게 됩니다. 병렬 언어 기능에는 parfor
, parfeval
, parfevalOnAll
, spmd
및 distributed
가 있습니다. 가능한 경우 워커의 작업 폴더는 MATLAB 클라이언트 세션의 폴더와 일치하도록 설정됩니다.
parpool(
는 지정된 개수의 워커로 구성된 풀을 만들고 반환합니다. poolsize
)poolsize
는 양의 정수이거나 범위를 지정하는 정수 요소를 2개 가진 벡터일 수 있습니다. poolsize
가 범위인 경우, 결과 풀의 크기는 요청한 범위 내에서 가능한 큰 값으로 지정됩니다.
poolsize
를 지정하면 PreferredPoolNumWorkers
속성에서 지정된 값이 재정의되고, 워커를 사용할 수 있을 때까지 기다려야 하는 경우가 있더라도 정확하게 지정된 개수의 워커로 구성된 풀이 시작됩니다. 대부분의 클러스터에는 시작할 수 있는 최대 워커 개수가 있습니다. 프로파일이 MATLAB 작업 스케줄러 클러스터를 지정하는 경우, parpool
은 이 MATLAB 작업 스케줄러에서 이미 실행 중이거나 사용 가능한 워커 중에서 parpool이 사용할 워커를 예약합니다. 프로파일이 로컬 또는 타사 스케줄러를 지정하는 경우, parpool
은 스케줄러가 풀에 있는 워커를 시작하도록 지시합니다.
parpool(___,
는 풀을 시작할 때 특정 속성에 대해 지정된 값을 적용합니다.Name,Value
)
은 클러스터의 풀을 나타내는 poolobj
= parpool(___)parallel.Pool
객체를 클라이언트 작업 공간에 반환합니다. 풀 객체를 사용하여 프로그래밍 방식으로 풀을 삭제하거나 속성에 액세스할 수 있습니다. delete(pool)
을 사용하여 병렬 풀을 종료합니다.
예제
입력 인수
출력 인수
팁
데스크탑의 왼쪽 아래 코너에 있는 풀 상태 표시기는 풀에 연결된 클라이언트 세션과 풀 상태를 보여줍니다. 아이콘을 클릭하면 지원되는 풀 동작에 대한 메뉴가 표시됩니다.
풀이 실행 중인 경우: 실행 중인 풀이 없는 경우:
필요로 할 때 병렬 풀을 자동으로 만들도록 병렬 기본 설정을 설정한 경우,
parpool
명령을 명시적으로 호출할 필요가 없습니다. 풀 설정에 드는 오버헤드 시간이 발생하는 시점을 조절하려면 사용자가 명시적으로 풀을 만들면 됩니다. 이렇게 하면 이후 병렬 언어 구문을 처리해야 할 때 미리 준비해 놓은 풀을 바로 사용할 수 있습니다.delete(poolobj)
는 병렬 풀을 종료합니다. 병렬 풀이 없는 경우, 병렬 기본 설정에서 병렬 풀이 자동으로 시작되도록 설정되지 않았다면spmd
와parfor
는 클라이언트에서 단일 스레드로 실행됩니다.MATLAB 편집기를 사용하여 병렬 풀에 연결된 클라이언트의 파일을 업데이트하는 경우, 이 업데이트는 자동으로 풀의 워커로 전파됩니다. (Simulink® 모델 파일에는 이러한 자동 업데이트가 적용되지 않습니다. 업데이트된 모델 파일을 워커로 전파하려면
updateAttachedFiles
함수를 사용하십시오.)가능한 경우 워커의 처음 작업 폴더는 MATLAB 클라이언트 세션의 폴더와 일치하도록 설정됩니다. 그런 후 클라이언트 명령 창에 입력된 다음 명령도 풀의 모든 워커에서 실행됩니다.
이 동작을 통해 모든 워커의 작업 폴더와 명령 검색 경로를 설정할 수 있으므로
parfor
루프와 같은 후속 풀 동작이 적절한 상황에서 실행됩니다.Windows® 운영 체제를 사용하는 클라이언트에서
cd
또는addpath
를 사용하여 폴더를 변경하거나 경로를 추가하면, 워커로 전송되는 값은 폴더에 대한 UNC 경로입니다(가능한 경우). Linux® 운영 체제를 사용하는 클라이언트의 경우에는 절대 폴더 위치가 전송됩니다.이러한 명령이 클라이언트에서 작동하지 않는 경우 워커에서도 실행되지 않습니다. 예를 들어,
addpath
실행 시 클라이언트가 액세스할 수 없는 폴더를 지정하는 경우addpath
명령은 워커에서 실행되지 않습니다. 그러나 클라이언트에서 작업 폴더를 설정할 수 있지만 어떤 워커에서도 지정된 대로 설정할 수 없는 경우, 클라이언트 명령 창에 오류 메시지가 반환되지 않습니다.클라이언트가 워커와 동일한 플랫폼이 아니거나, 클라이언트에 대한 로컬 폴더 또는 클라이언트에서 매핑된 폴더를 워커가 동일한 방식으로 사용할 수 없거나, 폴더가 비공유 파일 시스템에 있는 등의 혼합 플랫폼 환경에서는 이러한 미세한 동작 차이에 유의해야 합니다. 예를 들어, MATLAB 클라이언트가 Microsoft® Windows 운영 체제에서 실행되고 MATLAB 워커가 모두 Linux 운영 체제에서 실행되는 경우,
addpath
에 대한 인수가 클라이언트와 워커에서 동일하게 작동할 수 없습니다. 이 경우 함수pctRunOnAll
을 사용하여 모든 워커에서 명령이 실행되도록 할 수 있습니다.클라이언트와 워커 간의 또 다른 차이는
matlabroot
폴더의 일부인addpath
인수가 워커에 대해 설정되지 않은 점입니다. MATLAB 설치 기반이 워커의 경로에 이미 포함되어 있다고 가정합니다. 풀의 워커와 관련된addpath
규칙은 다음과 같습니다.matlabroot
폴더의 하위 폴더는 워커로 전송되지 않습니다.matlabroot
폴더가 처음 나오기 전에 표시되는 폴더는 워커의 경로 맨 위에 추가됩니다.matlabroot
폴더가 처음 나온 후에 표시되는 폴더는 워커의 경로에서matlabroot
폴더 그룹 뒤에 추가됩니다.
예를 들어, 클라이언트에 대한
matlabroot
가C:\Applications\matlab\
이라고 가정하겠습니다. 열려 있는 병렬 풀에서 다음을 실행하여 클라이언트와 모든 워커에서 경로를 설정합니다.addpath("P1", "P2", "C:\Applications\matlab\T3", "C:\Applications\matlab\T4", "P5", "C:\Applications\matlab\T6", "P7", "P8");
T3
,T4
및T6
은matlabroot
의 하위 폴더이므로 워커의 경로에 설정되지 않습니다. 따라서 워커에서 이 명령의 영향을 받는 경로 부분은 다음과 같습니다.P1 P2 <worker original matlabroot folders...> P5 P7 P8
Macintosh 또는 Linux를 사용 중이고 대규모 병렬 풀을 만드는 동안 문제가 발생하는 경우 Recommended System Limits for Macintosh and Linux 항목을 참조하십시오.