主要内容

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

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

  1. 함수를생성합니다。

    编辑MyCode
  2. MATLAB®편집기에서새parfor루프를입력하고경과시간을측정하려면抽搐toc을추가합니다。

    函数a = MyCode(a) ticparfori = 1:200 a(i) = max(abs(eig(rand(a))));结束toc结束
  3. 파일을저장하고편집기를닫습니다。

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

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

    parpool (1);一个= MyCode (1000);
    运行时间为172.529228秒。
    删除(gcp);
  6. 두개의워커로구성된새병렬풀을열고다시함수를실행합니다。

    parpool (2);一个= MyCode (1000);

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

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

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

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

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

    parpool (16);一个= MyCode (1000);

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

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

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

    parpool (64);一个= MyCode (1000);

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

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

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

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

관련 항목

Baidu
map