Սկսեք Intel Trace Analyzer-ի և Collector-ի հետ

Get-Started-with-Intel-Trace-Analyzer-and-Collector-product-ի հետ

Սկսեք Intel® Trace Analyzer-ի և Collector-ի հետ

Օգտագործեք այս Սկսել փաստաթուղթը և նախապես հավաքված հետքը file անցնել հիմնական MPI կատարողականի վերլուծություն Intel® Trace Analyzer-ի և Collector-ի միջոցով:
Intel Trace Analyzer and Collector-ը օգնում է ուսումնասիրել հաղորդագրությունների փոխանցման միջերեսի (MPI) օգտագործման արդյունավետությունը և բացահայտել կապի թեժ կետերը, համաժամացման խոչընդոտները և բեռի հավասարակշռումը: Արտադրանքի մասին լրացուցիչ տեղեկությունների համար տե՛ս Intel Trace Analyzer and Collector արտադրանքի էջը:

Ներբեռնեք Intel Trace Analyzer-ը և Collector-ը

  • որպես Intel® oneAPI HPC Toolkit-ի մաս
  • որպես ինքնուրույն գործիք

Նախադրյալներ

  • Նախքան Intel Trace Analyzer-ը և Collector-ը գործարկելը, համոզվեք, որ տեղադրել եք վերջին Intel® MPI գրադարանը և Intel® oneAPI DPC++/C++ Compiler կամ Intel® Fortran Compiler-ը:
  • Սա սահմանում է անհրաժեշտ միջավայրի փոփոխականները կոմպիլյատորների, Intel MPI գրադարանի և Intel Trace Analyzer-ի և Collector-ի համար, և դուք պատրաստ եք հետևել ձեր հավելվածներին:
  • Լրացուցիչ տեղեկությունների համար տես՝ Intel® oneAPI HPC Toolkit համակարգի պահանջները:

Հասկացեք աշխատանքային հոսքը

  1. Հետևեք ձեր դիմումին
  2. Վերլուծեք MPI-ի ամենաակտիվ գործառույթները
  3. Բացահայտեք խնդրահարույց փոխազդեցությունները
  4. Բարելավեք ձեր հավելվածի աշխատանքը՝ փոխարինելով խնդրահարույց գործառույթը

Հետևեք ձեր MPI հավելվածին

Ստեղծեք հետք file հավաքել իրադարձությունների տեղեկամատյանները հետևյալ հավելվածի վարքագծի վերլուծության համար:

  1. Ստեղծեք միջավայր Intel® Trace Analyzer-ի և Collector-ի գործարկման համար՝ գործարկելով setvars սկրիպտը oneAPI-ի տեղադրման տնօրենից:
    ԾԱՆՈԹԱԳՐՈՒԹՅՈՒՆ
    Լռելյայնորեն, Intel Trace Analyzer and Collector-ը տեղադրված է /opt/intel/oneapi/itac-ում Linux* ՕՀ-ի և Ծրագրի համար: Files (x86)\Intel\oneAPI\itac\վերջին Windows* OS-ի համար:
    Linux-ում.
    $ աղբյուր /opt/intel/oneapi/setvars.sh
    Windows-ում.
    «C:\Ծրագիր Files (x86)\Intel\oneAPI\setvars.bat»
  2. Գործարկեք ձեր MPI հավելվածը և ստեղծեք հետք -trace տարբերակով:
    Linux-ում.
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    Windows-ում.
    Կազմեք հավելվածը և հավաքեք հետքը:
    Intel oneAPI DPC++/C++ Compiler-ի համար գործարկեք՝
    > mpiicc -trace poisson_sendrecv.single.c
    Intel Fortran Compiler-ի համար գործարկեք՝
    > mpiifort -trace poisson_sendrecv.single.f
    Այս նախկինample-ն առաջացնում է հետք (stf*) as-ի համարample poisson_sendrcv.single MPI հավելված
  3. Բացեք ստեղծված .stf file Intel Trace Analyzer-ով Intel Trace Analyzer-ով և Collector-ով:
    Linux-ում.
    $ traceanalyzer ./ poisson_sendrecv.single.stf
    Windows-ում.
    traceanalyzer poisson_sendrecv.single.stf

ԾԱՆՈԹԱԳՐՈՒԹՅՈՒՆ
Փորձարկման նպատակով կարող եք ներբեռնել նախապես հավաքված հետքը file poisson_sendrecv.single.stf այս փաստաթղթում օգտագործվող թույնի համար և բացեք այն Intel Trace Analyzer-ով և Collector-ով:
The .stf file բացվում է Ամփոփման էջում view, որը ներկայացնում է ընդհանուր տեղեկատվություն ձեր հավելվածի կատարողականի մասին.Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-1Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-2ԾԱՆՈԹԱԳՐՈՒԹՅՈՒՆ Intel Trace Analyzer-ի և Collector-ի ֆունկցիոնալության մասին լրացուցիչ տեղեկությունների համար տե՛ս Իմանալ ավելին:

Վերլուծեք MPI-ի ամենաակտիվ գործառույթները

Վերլուծեք MPI հավելվածի վարքագիծը, գտնեք խոչընդոտներ և բացահայտեք սերիականացումը՝ հավելվածի կատարումը բարելավելու ուղիներ գտնելու համար:

  1. Ամփոփման էջից բացեք Միջոցառումների ժամանակացույցը view սեղմելով Շարունակել > Գծապատկերներ > Իրադարձությունների ժամանակացույց` լավագույն MPI գործառույթների խորը վերլուծության համար:
    Գծապատկերը ցույց է տալիս ժամանակի ընթացքում գործընթացի անհատական ​​գործողությունները:
    Կիրառական աշխատանքը կրկնվող է, որտեղ յուրաքանչյուր կրկնություն բաղկացած է հաշվողական մասից և MPI հաղորդակցությունից:
  2. Որոշեք մեկ կրկնություն, որի վրա պետք է կենտրոնանաք և մեծացնեք այն՝ ձեր մկնիկը քաշելով պահանջվող ժամանակային միջակայքի վրա.Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-3Հետքը view ցույց է տալիս հատվածը ձեր ընտրած հետքի մեջ: Իրադարձությունների ժամանակացույցի աղյուսակը ցույց է տալիս այն իրադարձությունները, որոնք ակտիվ էին ընտրված կրկնության ընթացքում:
    • Հորիզոնական ձողերը ներկայացնում են գործընթացները այս գործընթացներում կոչվող գործառույթներով:
    • Սև գծերը ցույց են տալիս գործընթացների միջև ուղարկված հաղորդագրությունները: Այս տողերը կապում են ուղարկման և ստացման գործընթացները:
    • Կապույտ գծերը ներկայացնում են կոլեկտիվ գործողություններ, ինչպիսիք են հեռարձակումը կամ կրճատումը:
  3. Անցեք Flat Pro-ինfile ներդիրը (A), որպեսզի ավելի մոտիկից նայեք այն գործառույթներին, որոնք կատարվում են ձեր ժամանակային կետում (ընտրված է Իրադարձությունների ժամանակացույցում:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-4
  4. Ապախմբավորեք MPI գործառույթները՝ ձեր հավելվածում MPI գործընթացի գործունեությունը վերլուծելու համար:
    Դա անելու համար Flat Pro-ում աջ սեղմեք All Processes > Group MPI (B):file և ընտրեք UngroupMPI: Այս գործողությունը բացահայտում է անհատական ​​MPI զանգերը:
  5. Վերլուծեք իրենց անմիջական հարևանների հետ հաղորդակցվող գործընթացները՝ օգտագործելով MPI_Sendrecv կրկնության սկզբում: Նախampլե:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-5
    • ա. ՍampLe, MPI_Sendrecv տվյալների փոխանակումն ունի խցան. գործընթացը չի փոխանակում տվյալները իր հաջորդ հարևանի հետ, քանի դեռ նախորդի հետ փոխանակումն ավարտված չէ: Իրադարձությունների ժամանակացույցը view ցուցադրում է այս շիշը որպես սանդուղք:
    • բ. Կրկնման վերջում MPI_Allreduce-ը նորից համաժամացնում է բոլոր գործընթացները. այդ պատճառով այս բլոկը ունի հակառակ սանդուղքի տեսք։
  6. Բացահայտեք սերիականացումը՝ օգտագործելով Function Pro-ըfile և Message Profile views.
    • ա. Միևնույն ժամանակ բացեք գծապատկերները.
      Function Pro-ումfile աղյուսակը, բացեք Load Balancetab-ը:
    • Գնացեք գծապատկերների ցանկ՝ Message Pro-ն բացելու համարfile.
    • բ. Load Balance ներդիրում ընդլայնեք MPI_Sendrecv և MPI_Allreduce: Load Balancing-ը ցույց է տալիս, որ MPI_Sendrecv-ում ծախսված ժամանակը մեծանում է գործընթացի քանակով, մինչդեռ MPI_Allreduce-ի ժամանակը նվազում է:
    • գ. Ուսումնասիրեք Message Pro-ըfile Գծապատկերը՝ ներքևի աջ անկյունում:
      Բլոկների գունային կոդավորումը ցույց է տալիս, որ ավելի բարձր աստիճանից ավելի ցածր աստիճանի ուղևորվող հաղորդագրությունները համամասնորեն ավելի շատ ժամանակ են պահանջում, մինչդեռ ավելի ցածր աստիճանից ավելի բարձր աստիճան ուղևորվող հաղորդագրությունները բացահայտում են թույլ զույգ-կենտ օրինաչափություն.Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-6

Համեմատական ​​վերլուծության արդյունքները ցույց են տալիս, որ հավելվածում բարդ փոխանակման օրինաչափություններ չկան, փոխանակումն իրականացվում է միայն հարևան գործընթացներով: Տեղեկատվությունը կարևոր կլինի ձեր հավելվածի կատարողականը բարելավելու համար՝ փոխելով հաղորդակցությունները, որպեսզի օպտիմալացնեք հավելվածի հաղորդակցման մոդելը:

Բացահայտեք անհավասարակշռված հաղորդակցությունները

Դիտեք ձեր դիմումը իդեալական հանգամանքներում և համեմատեք բնօրինակ հետքը file իդեալականացվածի հետ՝ խնդրահարույց փոխազդեցությունները մեկուսացնելու համար։

  1. Ստեղծեք իդեալականացված file:
    • ա. Ընտրեք Ընդլայնված > Իդեալականացում կամ սեղմեքGet-Started-with-Intel-Trace-Analyzer-and-Collector-fig-7 (Իդեալականացում) գործիքագոտու կոճակ:
    • բ. Ստուգեք իդեալականացման պարամետրերը Idealization երկխոսության վանդակում (իդեալական հետք file անվանումը և փոխակերպման ժամանակի միջակայքը):
    • գ. Սեղմեք Սկսել՝ ձեր հետքը իդեալականացնելու համար:
  2. Համեմատեք սկզբնական հետքը իդեալականացված հետքի հետ.
    • ա. Ընտրեք Ընդլայնված > Անհավասարակշռության դիագրամ կամ սեղմեք Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-8(Imbalance Diagram) գործիքագոտու կոճակ:
    • բ. Անհավասարակշռության դիագրամի երկխոսության վանդակում սեղմեք «Բացել ուրիշը»: File կոճակը, նավարկեք դեպի իդեալականացված հետքը և ընտրեք այն:
    • գ. Անհավասարակշռության դիագրամի պատուհանում կտտացրեք «Ընդհանուր ռեժիմ» կոճակը և ընտրեք «Խզման ռեժիմ»:

Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-9

Դուք կարող եք տեսնել, որ MPI_Sendrecv-ն ամենաշատ ժամանակատար գործառույթն է: Անհավասարակշռության քաշը ցուցադրվում է
բաց գույն և կազմում է մոտ 10% MPI_Sendrecv ֆունկցիայի համար: Սա այն ժամանակն է, որ գործընթացները ծախսում են միմյանց սպասելով։

Բարելավեք ձեր հավելվածի աշխատանքը՝ փոխելով հաղորդակցությունները

  1. Բարելավել MPI հավելվածի աշխատանքը՝ փոխելով արգելափակումը ոչ արգելափակող հաղորդակցությունների:
    Ձեր կոդում փոխարինեք MPI_Sendrcv սերիական կապը չարգելափակող հաղորդակցությամբ՝ MPI_Isend և MPI_Irecv: Նախample: Բնօրինակ կոդի հատված.
    // սահմանի փոխանակում
    դատարկ փոխանակում (para* p, grid* gr){
    int i,j;
    MPI_Status status_100, status_200, status_300, status_400;
    // ուղարկել առաջին տողը
    MPI_Send(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD); MPI_Recv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr-> up, 100, MPI_COMM_WORLD,
    &կարգավիճակ_100);
    // ուղարկել վերջին տողը
    MPI_Send(gr->x_new[gr->lrow], gr->lcol+2, MPI_DOUBLE, gr-> up, 200, MPI_COMM_WORLD);
    MPI_Recv(gr->x_new[0], gr->lcol+2, MPI_DOUBLE, gr->down, 200, MPI_COMM_WORLD, &status_200);
    Օգտագործեք Intel Trace Analyzer Comparison-ը view սերիականացված հավելվածը վերանայվածի հետ համեմատելու համար
    // պատճենեք ձախ սյունակը tmp զանգվածներում
    if(gr->ձախ != MPI_PROC_NULL){
    gr->x_new[i][gr->lcol+1] = right_col[i]; right_col[i] = gr->x_new[i][gr->lcol];
    // ուղարկել ճիշտ
    MPI_Send(right_col, gr->lrow+2, MPI_DOUBLE, gr->right, 400, MPI_COMM_WORLD); }
    if (gr->ձախ != MPI_PROC_NULL)
    {
    MPI_Recv(left_col, gr->lrow+2, MPI_DOUBLE, gr->left, 400, MPI_COMM_WORLD,&status_400); for(i=0; i< gr->lrow+2; i++
    {
    gr->x_new[i][0] = left_col[i];
    }
    }
    Կոդի հատվածը թարմացվել է
    MPI_Request req[7];
    // ուղարկել առաջին տողը
    MPI_Isend(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD, &req[0]);
    MPI_Irecv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->up, 100, MPI_COMM_WORLD, &req[1]);
    …..
    MPI_Waitall (7, պահանջ, MPI_STATUSES_IGNORE);
    Ուղղվելուց հետո վերանայված հավելվածի մեկ կրկնությունը նման կլինի հետևյալ օրինակինampլե:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-10
  2. Օգտագործեք Intel Trace Analyzer Comparison-ը view համեմատել սերիականացված հավելվածը վերանայվածի հետ։ Համեմատեք երկու հետք Համեմատության օգնությամբ View, պատրաստվում է View > Համեմատեք: Համեմատությունը View նման է.Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-11Համեմատության մեջ View, կարող եք տեսնել, որ չարգելափակող հաղորդակցության օգտագործումը օգնում է հեռացնել սերիալացումը և նվազեցնել գործընթացների հաղորդակցման ժամանակը:
    ԾԱՆՈԹԱԳՐՈՒԹՅՈՒՆ Ձեր հավելվածի հանգույցի մակարդակի կատարման մասին լրացուցիչ տեղեկությունների համար տե՛ս համապատասխան գործիքների փաստաթղթերը՝ Intel® VTune™ Profiler MPI կոդի վերլուծություն և Intel® MPI հավելվածների վերլուծություն՝ օգտագործելով Intel® Advisor-ը:

Իմացեք ավելին

Intel Trace Analyzer-ի և Collector-ի մասին լրացուցիչ տեղեկությունների համար ուսումնասիրեք հետևյալ ռեսուրսները:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-12Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-13

Ծանուցումներ և հերքումներ

  • Intel-ի տեխնոլոգիաները կարող են պահանջել միացված ապարատային, ծրագրային ապահովում կամ ծառայության ակտիվացում:
  • Ոչ մի ապրանք կամ բաղադրիչ չի կարող բացարձակապես ապահով լինել:
  • Ձեր ծախսերն ու արդյունքները կարող են տարբեր լինել:
  • © Intel Corporation. Intel-ը, Intel-ի պատկերանշանը և Intel այլ նշանները Intel Corporation-ի կամ նրա դուստր ձեռնարկությունների ապրանքանիշերն են: Այլ անուններ և ապրանքանիշեր կարող են պահանջվել որպես ուրիշների սեփականություն:
  • Սույն փաստաթղթով որևէ լիցենզիա (բացահայտ կամ ենթադրյալ, էսթոպել կամ այլ կերպ) մտավոր սեփականության որևէ իրավունքի չի տրվում:
  • Նկարագրված ապրանքները կարող են պարունակել դիզայնի թերություններ կամ սխալներ, որոնք հայտնի են որպես սխալ, որոնք կարող են հանգեցնել արտադրանքի շեղմանը հրապարակված բնութագրերից: Ընթացիկ բնութագրված սխալները հասանելի են ըստ պահանջի:
  • Intel-ը հրաժարվում է բոլոր հստակ և ենթադրյալ երաշխիքներից, ներառյալ՝ առանց սահմանափակման, առևտրականության, որոշակի նպատակի համար համապատասխանության և ոչ խախտման ենթադրյալ երաշխիքները, ինչպես նաև ցանկացած երաշխիք, որը բխում է աշխատանքի ընթացքից, գործարքի ընթացքից կամ առևտրում օգտագործելուց:

Փաստաթղթեր / ռեսուրսներ

intel Սկսեք Intel Trace Analyzer-ով և Collector-ով [pdf] Օգտագործողի ուղեցույց
Սկսեք Intel Trace Analyzer-ով և Collector-ով, Սկսեք Intel-ով, Trace Analyzer-ով և Collector-ով, Collector-ով

Հղումներ

Թողնել մեկնաբանություն

Ձեր էլփոստի հասցեն չի հրապարակվի: Պարտադիր դաշտերը նշված են *