Սկսեք Intel Trace Analyzer-ի և Collector-ի հետ
Սկսեք 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 համակարգի պահանջները:
Հասկացեք աշխատանքային հոսքը
- Հետևեք ձեր դիմումին
- Վերլուծեք MPI-ի ամենաակտիվ գործառույթները
- Բացահայտեք խնդրահարույց փոխազդեցությունները
- Բարելավեք ձեր հավելվածի աշխատանքը՝ փոխարինելով խնդրահարույց գործառույթը
Հետևեք ձեր MPI հավելվածին
Ստեղծեք հետք file հավաքել իրադարձությունների տեղեկամատյանները հետևյալ հավելվածի վարքագծի վերլուծության համար:
- Ստեղծեք միջավայր 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» - Գործարկեք ձեր 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 հավելված - Բացեք ստեղծված .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, որը ներկայացնում է ընդհանուր տեղեկատվություն ձեր հավելվածի կատարողականի մասին.ԾԱՆՈԹԱԳՐՈՒԹՅՈՒՆ Intel Trace Analyzer-ի և Collector-ի ֆունկցիոնալության մասին լրացուցիչ տեղեկությունների համար տե՛ս Իմանալ ավելին:
Վերլուծեք MPI-ի ամենաակտիվ գործառույթները
Վերլուծեք MPI հավելվածի վարքագիծը, գտնեք խոչընդոտներ և բացահայտեք սերիականացումը՝ հավելվածի կատարումը բարելավելու ուղիներ գտնելու համար:
- Ամփոփման էջից բացեք Միջոցառումների ժամանակացույցը view սեղմելով Շարունակել > Գծապատկերներ > Իրադարձությունների ժամանակացույց` լավագույն MPI գործառույթների խորը վերլուծության համար:
Գծապատկերը ցույց է տալիս ժամանակի ընթացքում գործընթացի անհատական գործողությունները:
Կիրառական աշխատանքը կրկնվող է, որտեղ յուրաքանչյուր կրկնություն բաղկացած է հաշվողական մասից և MPI հաղորդակցությունից: - Որոշեք մեկ կրկնություն, որի վրա պետք է կենտրոնանաք և մեծացնեք այն՝ ձեր մկնիկը քաշելով պահանջվող ժամանակային միջակայքի վրա.
Հետքը view ցույց է տալիս հատվածը ձեր ընտրած հետքի մեջ: Իրադարձությունների ժամանակացույցի աղյուսակը ցույց է տալիս այն իրադարձությունները, որոնք ակտիվ էին ընտրված կրկնության ընթացքում:
- Հորիզոնական ձողերը ներկայացնում են գործընթացները այս գործընթացներում կոչվող գործառույթներով:
- Սև գծերը ցույց են տալիս գործընթացների միջև ուղարկված հաղորդագրությունները: Այս տողերը կապում են ուղարկման և ստացման գործընթացները:
- Կապույտ գծերը ներկայացնում են կոլեկտիվ գործողություններ, ինչպիսիք են հեռարձակումը կամ կրճատումը:
- Անցեք Flat Pro-ինfile ներդիրը (A), որպեսզի ավելի մոտիկից նայեք այն գործառույթներին, որոնք կատարվում են ձեր ժամանակային կետում (ընտրված է Իրադարձությունների ժամանակացույցում:
- Ապախմբավորեք MPI գործառույթները՝ ձեր հավելվածում MPI գործընթացի գործունեությունը վերլուծելու համար:
Դա անելու համար Flat Pro-ում աջ սեղմեք All Processes > Group MPI (B):file և ընտրեք UngroupMPI: Այս գործողությունը բացահայտում է անհատական MPI զանգերը: - Վերլուծեք իրենց անմիջական հարևանների հետ հաղորդակցվող գործընթացները՝ օգտագործելով MPI_Sendrecv կրկնության սկզբում: Նախampլե:
- ա. ՍampLe, MPI_Sendrecv տվյալների փոխանակումն ունի խցան. գործընթացը չի փոխանակում տվյալները իր հաջորդ հարևանի հետ, քանի դեռ նախորդի հետ փոխանակումն ավարտված չէ: Իրադարձությունների ժամանակացույցը view ցուցադրում է այս շիշը որպես սանդուղք:
- բ. Կրկնման վերջում MPI_Allreduce-ը նորից համաժամացնում է բոլոր գործընթացները. այդ պատճառով այս բլոկը ունի հակառակ սանդուղքի տեսք։
- Բացահայտեք սերիականացումը՝ օգտագործելով 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 Գծապատկերը՝ ներքևի աջ անկյունում:
Բլոկների գունային կոդավորումը ցույց է տալիս, որ ավելի բարձր աստիճանից ավելի ցածր աստիճանի ուղևորվող հաղորդագրությունները համամասնորեն ավելի շատ ժամանակ են պահանջում, մինչդեռ ավելի ցածր աստիճանից ավելի բարձր աստիճան ուղևորվող հաղորդագրությունները բացահայտում են թույլ զույգ-կենտ օրինաչափություն.
- ա. Միևնույն ժամանակ բացեք գծապատկերները.
Համեմատական վերլուծության արդյունքները ցույց են տալիս, որ հավելվածում բարդ փոխանակման օրինաչափություններ չկան, փոխանակումն իրականացվում է միայն հարևան գործընթացներով: Տեղեկատվությունը կարևոր կլինի ձեր հավելվածի կատարողականը բարելավելու համար՝ փոխելով հաղորդակցությունները, որպեսզի օպտիմալացնեք հավելվածի հաղորդակցման մոդելը:
Բացահայտեք անհավասարակշռված հաղորդակցությունները
Դիտեք ձեր դիմումը իդեալական հանգամանքներում և համեմատեք բնօրինակ հետքը file իդեալականացվածի հետ՝ խնդրահարույց փոխազդեցությունները մեկուսացնելու համար։
- Ստեղծեք իդեալականացված file:
- ա. Ընտրեք Ընդլայնված > Իդեալականացում կամ սեղմեք
(Իդեալականացում) գործիքագոտու կոճակ:
- բ. Ստուգեք իդեալականացման պարամետրերը Idealization երկխոսության վանդակում (իդեալական հետք file անվանումը և փոխակերպման ժամանակի միջակայքը):
- գ. Սեղմեք Սկսել՝ ձեր հետքը իդեալականացնելու համար:
- ա. Ընտրեք Ընդլայնված > Իդեալականացում կամ սեղմեք
- Համեմատեք սկզբնական հետքը իդեալականացված հետքի հետ.
- ա. Ընտրեք Ընդլայնված > Անհավասարակշռության դիագրամ կամ սեղմեք
(Imbalance Diagram) գործիքագոտու կոճակ:
- բ. Անհավասարակշռության դիագրամի երկխոսության վանդակում սեղմեք «Բացել ուրիշը»: File կոճակը, նավարկեք դեպի իդեալականացված հետքը և ընտրեք այն:
- գ. Անհավասարակշռության դիագրամի պատուհանում կտտացրեք «Ընդհանուր ռեժիմ» կոճակը և ընտրեք «Խզման ռեժիմ»:
- ա. Ընտրեք Ընդլայնված > Անհավասարակշռության դիագրամ կամ սեղմեք
Դուք կարող եք տեսնել, որ MPI_Sendrecv-ն ամենաշատ ժամանակատար գործառույթն է: Անհավասարակշռության քաշը ցուցադրվում է
բաց գույն և կազմում է մոտ 10% MPI_Sendrecv ֆունկցիայի համար: Սա այն ժամանակն է, որ գործընթացները ծախսում են միմյանց սպասելով։
Բարելավեք ձեր հավելվածի աշխատանքը՝ փոխելով հաղորդակցությունները
- Բարելավել 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լե: - Օգտագործեք Intel Trace Analyzer Comparison-ը view համեմատել սերիականացված հավելվածը վերանայվածի հետ։ Համեմատեք երկու հետք Համեմատության օգնությամբ View, պատրաստվում է View > Համեմատեք: Համեմատությունը View նման է.
Համեմատության մեջ View, կարող եք տեսնել, որ չարգելափակող հաղորդակցության օգտագործումը օգնում է հեռացնել սերիալացումը և նվազեցնել գործընթացների հաղորդակցման ժամանակը:
ԾԱՆՈԹԱԳՐՈՒԹՅՈՒՆ Ձեր հավելվածի հանգույցի մակարդակի կատարման մասին լրացուցիչ տեղեկությունների համար տե՛ս համապատասխան գործիքների փաստաթղթերը՝ Intel® VTune™ Profiler MPI կոդի վերլուծություն և Intel® MPI հավելվածների վերլուծություն՝ օգտագործելով Intel® Advisor-ը:
Իմացեք ավելին
Intel Trace Analyzer-ի և Collector-ի մասին լրացուցիչ տեղեկությունների համար ուսումնասիրեք հետևյալ ռեսուրսները:
Ծանուցումներ և հերքումներ
- Intel-ի տեխնոլոգիաները կարող են պահանջել միացված ապարատային, ծրագրային ապահովում կամ ծառայության ակտիվացում:
- Ոչ մի ապրանք կամ բաղադրիչ չի կարող բացարձակապես ապահով լինել:
- Ձեր ծախսերն ու արդյունքները կարող են տարբեր լինել:
- © Intel Corporation. Intel-ը, Intel-ի պատկերանշանը և Intel այլ նշանները Intel Corporation-ի կամ նրա դուստր ձեռնարկությունների ապրանքանիշերն են: Այլ անուններ և ապրանքանիշեր կարող են պահանջվել որպես ուրիշների սեփականություն:
- Սույն փաստաթղթով որևէ լիցենզիա (բացահայտ կամ ենթադրյալ, էսթոպել կամ այլ կերպ) մտավոր սեփականության որևէ իրավունքի չի տրվում:
- Նկարագրված ապրանքները կարող են պարունակել դիզայնի թերություններ կամ սխալներ, որոնք հայտնի են որպես սխալ, որոնք կարող են հանգեցնել արտադրանքի շեղմանը հրապարակված բնութագրերից: Ընթացիկ բնութագրված սխալները հասանելի են ըստ պահանջի:
- Intel-ը հրաժարվում է բոլոր հստակ և ենթադրյալ երաշխիքներից, ներառյալ՝ առանց սահմանափակման, առևտրականության, որոշակի նպատակի համար համապատասխանության և ոչ խախտման ենթադրյալ երաշխիքները, ինչպես նաև ցանկացած երաշխիք, որը բխում է աշխատանքի ընթացքից, գործարքի ընթացքից կամ առևտրում օգտագործելուց:
Փաստաթղթեր / ռեսուրսներ
![]() |
intel Սկսեք Intel Trace Analyzer-ով և Collector-ով [pdf] Օգտագործողի ուղեցույց Սկսեք Intel Trace Analyzer-ով և Collector-ով, Սկսեք Intel-ով, Trace Analyzer-ով և Collector-ով, Collector-ով |