Main Content

parfor루프를 클러스터 및 클라우드로 확장하기

이 예제에서는 로컬 멀티코어 데스크탑에서 시작하여 워커 개수를 늘려가면서 계산 실행에 드는 시간을 측정합니다. 이 테스트를강한 확장성(strong scaling)테스트라고 합니다. 이를 통해 워커를 추가하는 경우 계산에 필요한 시간의 감소량을 측정할 수 있습니다. 이러한 종속성을속도 향상이라고 하며 이를 통해 코드의병렬 확장성을 추정할 수 있습니다. 그런 다음 병렬 풀의 워커 개수를 늘이는 것이 유용한지 여부를 결정하고 클러스터와 클라우드 연산 환경으로 확장할 수 있습니다.

  1. 함수를 생성합니다.

    editMyCode
  2. MATLAB®편집기에서 새parfor루프를 입력하고 경과 시간을 측정하려면tictoc을 추가합니다.

    functiona = MyCode(A) ticparfori = 1:200 a(i) = max(abs(eig(rand(A))));endtocend
  3. 파일을 저장하고 편집기를 닫습니다.

  4. 병렬연산>병렬 기본 설정메뉴에서디폴트 클러스터로컬(데스크탑 컴퓨터)인지 확인합니다.

  5. MATLAB 명령 창에서 크기가 1인 병렬 풀을 정의하고 하나의 워커에서 함수를 실행하여 경과 시간을 계산합니다. 단일 워커에 대한 경과 시간을 확인하고 병렬 풀을 종료합니다.

    parpool(1); a = MyCode(1000);
    Elapsed time is 172.529228 seconds.
    delete(gcp);
  6. 두 개의 워커로 구성된 새 병렬 풀을 열고 다시 함수를 실행합니다.

    parpool(2); a = MyCode(1000);

    경과 시간을 확인합니다. 단일 워커의 경우에 비해 경과 시간이 감소했음을 알 수 있습니다.

  7. 워커의 개수를 4개, 8개, 12개, 16개로 변경해 봅니다. 로그-로그 스케일에서 각 워커 개수에 대한 경과 시간을 플로팅하여 병렬 확장성을 측정합니다.

    이 그림은 일반적인 멀티코어 데스크탑 PC에 대한 확장성을 보여줍니다(파란색 원 데이터 점). 강력 확장성 테스트 결과, 8개의 워커까지는 거의 선형의 속도 향상과 뛰어난 병렬 확장성을 보여줍니다. 그림에서 보면 이 경우 워커가 8개가 넘는 경우에는 추가적인 속도 향상이 없습니다. 이 결과는 로컬 데스크탑 컴퓨터에서 모든 코어가 8개의 워커에 완전히 사용됨을 의미합니다. 하드웨어에 따라 각각의 로컬 데스크탑은 다른 결과를 보고할 수 있습니다. 병렬 응용 프로그램의 속도를 더 향상시키려면 클라우드나 클러스터 연산 환경으로 확장하는 것이 좋습니다.

  8. 이전 예제에서처럼 로컬 워커를 모두 사용한 경우 계산을 클라우드 연산 환경으로 확장할 수 있습니다.병렬연산>클러스터 검색메뉴에서 클라우드 연산 플랫폼에 액세스할 수 있는지 확인합니다.

    클라우드에서 병렬 풀을 열고 코드를 변경하지 않고 응용 프로그램을 실행합니다.

    parpool(16); a = MyCode(1000);

    클러스터 워커 개수 증가에 따른 경과 시간을 확인합니다. 로그-로그 스케일에서 경과 시간을 워커 개수 함수로 플로팅하여 병렬 확장성을 측정합니다.

    이 그림은 클라우드에서 일반적인 워커 성능을 보여줍니다(빨간색 플러스 데이터 점). 강력 확장성 테스트 결과, 클라우드에서 16개의 워커까지는 선형의 속도 향상과 100% 병렬 확장성을 보여줍니다. 클라우드나 계산 클러스터의 워커 개수를 증가시켜 계산을 더 확장하는 것을 고려해 보십시오. 워커 개수가 더 많고 다른 응용 프로그램의 경우 하드웨어에 따라 병렬 확장성이 다를 수 있습니다.

  9. 클러스터에 직접 액세스할 수 있는 경우 클러스터에서 워커를 사용하여 계산을 확장할 수 있습니다.병렬연산>클러스터 검색메뉴에서 클러스터에 액세스할 수 있는지 확인합니다. 계정이 있는 경우,클러스터를 선택하고, 병렬 풀을 열고, 코드를 변경하지 않고 응용 프로그램을 실행합니다.

    parpool(64); a = MyCode(1000);

    이 그림은 클러스터에서 워커에 대한 강한 확장성 테스트의 일반적인 성능을 보여줍니다(검은색 x 데이터 점). 클러스터에서 최소 80개의 워커까지는 100% 병렬 확장성을 얻을 수 있음을 확인할 수 있습니다. 이 응용 프로그램은 선형으로 스케일링되며 속도 향상은 사용되는 워커 개수와 동일합니다.

    이 예제는 워커 개수와 동일한 속도 향상을 보여줍니다. 모든 작업이 동일한 속도 향상을 얻을 수 있는 것은 아닙니다. 예제는parfor를 사용하여 대화형 방식으로 루프를 병렬로 실행하기항목을참조하십시오。

    특정 작업의 경우 다른 접근 방법이 필요할 수 있습니다. 다른 접근 방법에 대한 자세한 내용은병렬 연산 해결책 선택하기항목을참조하십시오。

ticBytestocBytes를 사용하여 병렬 풀의 워커 간 데이터 전송량을 측정함으로써parfor루프를 자세히 프로파일링할 수 있습니다. 자세한 내용 및 예제는剖析parfor-loops항목을참조하십시오。

관련 항목