이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

parpool

클러스터에서 병렬 풀 만들기

설명

예제

parpool은 디폴트 클러스터 프로파일을 사용하여 병렬 기본 설정 및 디폴트 프로파일에서 지정된 풀 크기로 워커의 병렬 풀을 시작합니다. parpool은 병렬 언어 기능을 실행할 수 있도록 NumWorkers(범위 [1, preferredNumWorkers] 내)개의 워커를 갖는 풀을 디폴트 클러스터에 만듭니다. preferredNumWorkers는 병렬 기본 설정에 정의된 값입니다.

parpool을 사용하면 워커로 구성된 풀에 대한 특수 작업을 만들고 MATLAB® 클라이언트를 병렬 풀에 연결하여 MATLAB의 병렬 언어 기능이 모두 가능하게 됩니다. 병렬 언어 기능에는 parfor, parfeval, parfevalOnAll, spmddistributed가 있습니다. 가능한 경우 워커의 작업 폴더는 MATLAB 클라이언트 세션의 폴더와 일치하도록 설정됩니다.

예제

parpool(poolsize)는 지정된 개수의 워커로 구성된 풀을 만들고 반환합니다. poolsize는 양의 정수이거나 범위를 지정하는 정수 요소를 2개 가진 벡터일 수 있습니다. poolsize가 범위인 경우, 결과 풀의 크기는 요청한 범위 내에서 가능한 큰 값으로 지정됩니다.

poolsize를 지정하면 기본 설정 또는 프로파일에서 지정된 워커 개수가 재정의되고, 워커를 사용할 수 있을 때까지 기다려야 하는 경우가 있더라도 정확하게 지정된 개수의 워커로 구성된 풀이 시작됩니다. 대부분의 클러스터에는 시작할 수 있는 최대 워커 개수가 있습니다. 프로파일이 MATLAB 작업 스케줄러 클러스터를 지정하는 경우, parpool은 이 MATLAB 작업 스케줄러에서 이미 실행 중이거나 사용 가능한 워커 중에서 parpool이 사용할 워커를 예약합니다. 프로파일이 로컬 또는 타사 스케줄러를 지정하는 경우, parpool은 스케줄러가 풀에 있는 워커를 시작하도록 지시합니다.

예제

parpool(profilename) 또는 parpool(profilename,poolsize)profilename으로 식별되는 클러스터 프로파일을 사용하여 워커 풀을 시작합니다.

예제

parpool(cluster) 또는 parpool(cluster,poolsize)는 cluster 객체 cluster로 지정된 클러스터에서 워커 풀을 시작합니다.

예제

parpool(___,Name,Value)는 풀을 시작할 때 특정 속성에 대해 지정된 값을 적용합니다.

예제

poolobj = parpool(___)은 클라이언트 작업 공간에 클러스터의 풀을 나타내는 parallel.Pool 객체를 반환합니다. 풀 객체를 사용하여 프로그래밍 방식으로 풀을 삭제하거나 속성에 액세스할 수 있습니다. delete(pool)을 사용하여 병렬 풀을 종료합니다.

예제

모두 축소

워커 개수가 정의된 디폴트 프로파일을 사용하여 병렬 풀을 시작합니다.

parpool

myProf라는 프로파일을 사용하여 16개의 워커로 구성된 병렬 풀을 시작합니다.

parpool('myProf',16)

로컬 프로파일을 사용하여 2개의 워커로 구성된 병렬 풀을 시작합니다.

parpool('local',2)

디폴트 프로파일로 식별되는 클러스터를 나타내는 객체를 만들고 이 cluster 객체를 사용하여 병렬 풀을 시작합니다. 풀 크기는 디폴트 프로파일로 결정됩니다.

c = parcluster
parpool(c)

디폴트 프로파일을 사용하여 병렬 풀을 시작하고 두 개의 코드 파일을 워커로 전달합니다.

parpool('AttachedFiles',{'mod1.m','mod2.m'})

디폴트 프로파일을 사용하여 병렬 풀을 만들고 나중에 풀을 삭제합니다.

poolobj = parpool;

delete(poolobj)

현재 병렬 풀의 워커 개수를 구합니다.

poolobj = gcp('nocreate'); % If no pool, do not create new one.
if isempty(poolobj)
    poolsize = 0;
else
    poolsize = poolobj.NumWorkers
end

입력 인수

모두 축소

병렬 풀의 크기로, 양의 정수로 지정되거나, 범위를 지정하는 정수 요소를 2개 가진 벡터로 지정됩니다. poolsize가 범위인 경우, 결과 풀의 크기는 요청한 범위 내에서 가능한 큰 값으로 지정됩니다. 병렬 기본 설정 또는 병렬 프로파일에서 기본 워커 개수를 설정할 수 있습니다.

예: parpool('local',2)

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

클러스터와 속성을 정의하는 프로파일로, 문자형 벡터로 지정됩니다.

예: parpool('myClusterProfile',16)

데이터형: char

풀을 시작할 클러스터로, cluster 객체로 지정됩니다. parcluster를 사용하여 cluster 객체를 가져올 수 있습니다.

예: c = parcluster; parpool(c)

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: 'AttachedFiles',{'myFun.m'}

풀에 연결할 파일로, 문자형 벡터, string형, string형 배열 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다.

이 인수 쌍을 사용하여 parpool은 병렬 풀을 시작하고 식별된 파일을 풀의 워커로 전달합니다. 여기 지정된 파일은 적용 가능한 병렬 프로파일에 지정된 AttachedFiles 속성에 추가되어 전체 연결 파일 목록을 구성합니다. 'AttachedFiles' 속성 이름은 대/소문자를 구분하며 다음과 같이 표시되어야 합니다.

예: {'myFun.m','myFun2.m'}

데이터형: char | cell

클라이언트의 경로에 사용자가 추가한 항목을 시작 시 각 워커의 경로에 추가할지 여부를 논리값(true 또는 false)으로 제어합니다. 기본적으로 'AutoAddClientPath'는 true로 설정됩니다.

데이터형: logical

클라이언트 세션에서 워커로 복사할 환경 변수의 이름으로, 문자형 벡터, string형, string형 배열 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 여기에 지정된 이름은 적용 가능한 병렬 프로파일에 지정된 'EnvironmentVariables' 속성에 추가되어 전체 환경 변수 목록을 구성합니다. 목록에 있지만 설정되지 않은 변수는 워커로 복사되지 않습니다. 이러한 환경 변수는 병렬 풀 작업 동안 워커에 설정됩니다.

데이터형: char | cell

풀이 SPMD를 지원하도록 설정되었는지에 대한 표시로, 논리값으로 지정됩니다. 로컬 클러스터 또는 MATLAB 작업 스케줄러 클러스터에 대한 지원만 비활성화할 수 있습니다. parfor 반복은 워커 간 통신을 포함하지 않기 때문에 이렇게 SPMD 지원을 비활성화하면 루프 실행 중에 하나 이상의 워커가 취소되더라도 병렬 풀은 parfor 루프를 계속 실행할 수 있습니다.

데이터형: logical

출력 인수

모두 축소

클라이언트의 병렬 풀에 대한 액세스로, parallel.Pool 객체로 반환됩니다.

참고

parpool이 포함된 병렬 코드를 실행하려면 MATLAB 경로에서 startup.m을 제거하십시오. 병렬 풀을 시작하는 데 문제가 있는 경우 다음 MATLAB Answers 페이지를 참조하십시오. https://uk.mathworks.com/matlabcentral/answers/92124-why-am-i-unable-to-use-parpool-with-the-local-scheduler-or-validate-my-local-configuration-of-parall

  • 데스크탑의 왼쪽 아래 코너에 있는 풀 상태 표시기는 풀에 연결된 클라이언트 세션과 풀 상태를 보여줍니다. 아이콘을 클릭하면 지원되는 풀 동작에 대한 메뉴가 표시됩니다.

    풀이 실행 중인 경우: 실행 중인 풀이 없는 경우:

  • 필요로 할 때 병렬 풀을 자동으로 만들도록 병렬 기본 설정을 설정한 경우, parpool 명령을 명시적으로 호출할 필요가 없습니다. 풀 설정에 드는 오버헤드 시간이 발생하는 시점을 조절하려면 사용자가 명시적으로 풀을 만들면 됩니다. 이렇게 하면 이후 병렬 언어 구문을 처리해야 할 때 미리 준비해 놓은 풀을 바로 사용할 수 있습니다.

  • delete(poolobj)는 병렬 풀을 종료합니다. 병렬 풀이 없는 경우, 병렬 기본 설정에서 병렬 풀이 자동으로 시작되도록 설정되지 않았다면 spmdparfor는 클라이언트에서 단일 스레드로 실행됩니다.

  • 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 폴더 그룹 뒤에 추가됩니다.

    예를 들어, 클라이언트에 대한 matlabrootC:\Applications\matlab\이라고 가정하겠습니다. 열려 있는 병렬 풀에서 다음을 실행하여 클라이언트와 모든 워커에서 경로를 설정합니다.

    addpath('P1',
            'P2',
            'C:\Applications\matlab\T3',
            'C:\Applications\matlab\T4',
            'P5',
            'C:\Applications\matlab\T6',
            'P7',
            'P8');

    T3, T4T6matlabroot의 하위 폴더이므로 워커의 경로에 설정되지 않습니다. 따라서 워커에서 이 명령의 영향을 받는 경로 부분은 다음과 같습니다.

    P1
    P2
    <worker original matlabroot folders...>
    P5
    P7
    P8

R2013b에 개발됨