Kom godt i gang med Intel Trace Analyzer og Collector
Kom godt i gang med Intel® Trace Analyzer og Collector
Brug dette Kom godt i gang-dokument og et forudindsamlet spor file at gennemgå en grundlæggende MPI-ydelsesanalyse med Intel® Trace Analyzer og Collector.
Intel Trace Analyzer og Collector hjælper med at udforske MPI-brugseffektiviteten (Message Passing Interface) og identificere kommunikationshotspots, synkroniseringsflaskehalse og belastningsbalancering. For mere information om produktet, se Intel Trace Analyzer and Collector produktside.
Download Intel Trace Analyzer and Collector
- som en del af Intel® oneAPI HPC Toolkit
- som et selvstændigt værktøj
Forudsætninger
- Før du kører Intel Trace Analyzer og Collector, skal du sørge for, at du har installeret det nyeste Intel® MPI Library og Intel® oneAPI DPC++/C++ Compiler eller Intel® Fortran Compiler.
- Dette indstiller de nødvendige miljøvariabler for compilere, Intel MPI Library og Intel Trace Analyzer and Collector, og du er klar til at spore dine applikationer.
- For mere information, se: Systemkrav til Intel® oneAPI HPC Toolkit.
Forstå arbejdsgangen
- Spor din ansøgning
- Analyser de mest aktive MPI-funktioner
- Identificer problematiske interaktioner
- Forbedre din applikations ydeevne ved at erstatte den problemskabende funktion
Spor din MPI-applikation
Generer et spor file for at indsamle hændelseslogfiler til følgende applikationsadfærdsanalyse.
- Konfigurer miljøet til at starte Intel® Trace Analyzer og Collector ved at køre setvars-scriptet fra oneAPI-installationsdirektøren
NOTE
Som standard er Intel Trace Analyzer and Collector installeret til /opt/intel/oneapi/itac til Linux* OS og til Program Files (x86)\Intel\oneAPI\itac\seneste til Windows* OS.
På Linux:
$ source /opt/intel/oneapi/setvars.sh
På Windows:
"C:\Program Files (x86)\Intel\oneAPI\setvars.bat" - Kør dit MPI-program og generer et spor med -trace-indstillingen.
På Linux:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
På Windows:
Kompiler appen og saml sporet.
For Intel oneAPI DPC++/C++ Compiler, kør:
> mpiicc -trace poisson_sendrecv.single.c
For Intel Fortran Compiler, kør:
> mpiifort -trace poisson_sendrecv.single.f
Denne example genererer et spor (stf*) for asample poisson_sendrcv.single MPI-applikation - Åbn den genererede .stf file med Intel Trace Analyzer med Intel Trace Analyzer og Collector.
På Linux:
$ traceanalyzer ./ poisson_sendrecv.single.stf
På Windows:
traceanalyzer poisson_sendrecv.single.stf
NOTE
Til testformål kan du downloade et forudindsamlet spor file poisson_sendrecv.single.stf for den gift, der bruges i dette dokument, og åbn den med Intel Trace Analyzer og Collector.
.stf file åbnes på oversigtssiden view, som repræsenterer generelle oplysninger om din applikations ydeevne:NOTE For flere oplysninger om Intel Trace Analyzer og Collector-funktionalitet, se Lær mere.
Analyser de mest aktive MPI-funktioner
Analyser en MPI-applikationsadfærd, find flaskehalse og identificer serialisering for at finde måder at forbedre applikationens ydeevne på.
- Fra oversigtssiden åbner begivenhedens tidslinje view ved at klikke på Fortsæt > Diagrammer > Hændelsestidslinje for en dyb analyse af de øverste MPI-funktioner.
Diagrammet viser individuelle procesaktiviteter over tid.
Applikationsarbejdet er iterativt, hvor hver iteration består af en beregningsdel og MPI-kommunikation. - Identificer en enkelt iteration at fokusere på og zoom ind på den ved at trække musen over det påkrævede tidsinterval:
Sporet view viser sektionen i det spor, du har valgt. Hændelsestidslinjediagrammet viser de hændelser, der var aktive under den valgte iteration.
- Vandrette søjler repræsenterer processerne med de funktioner, der kaldes i disse processer.
- Sorte streger angiver beskeder sendt mellem processer. Disse linjer forbinder afsendelses- og modtageprocesser.
- Blå linjer repræsenterer kollektive operationer, såsom broadcast eller reducere operationer.
- Skift til Flat Profile fane (A) for at se nærmere på funktioner, der udføres på det tidspunkt, du (valgt i hændelsestidslinjen).
- Opdel MPI-funktioner for at analysere MPI-procesaktivitet i din applikation.
For at gøre dette skal du højreklikke på Alle processer > Grupper MPI ( B) i Flat Profile og vælg UngroupMPI. Denne operation afslører de individuelle MPI-opkald. - Analyser de processer, der kommunikerer med deres direkte naboer ved hjælp af MPI_Sendrecv i starten af iterationen. F.eksampdet:
- en. I sample, MPI_Sendrecv-dataudvekslingen har en flaskehals: processen udveksler ikke data med sin næste nabo, før udvekslingen med den forrige er fuldført. Begivenhedens tidslinjer view viser denne flaskehals som en trappe.
- b. MPI_Allreduce i slutningen af iterationen resynkroniserer alle processer; derfor har denne blok det omvendte trappeudseende.
- Identificer serialisering ved hjælp af Function Profile og Message Profile views.
- en. Åbn diagrammerne på samme tid:
I Function Profile diagram, skal du åbne fanen Load Balance. - Gå til Charts-menuen for at åbne en Message Profile.
- b. Udvid MPI_Sendrecv og MPI_Allreduce på fanen Load Balance. Load Balancing indikerer, at tiden brugt i MPI_Sendrecv stiger med procesnummeret, mens tiden for MPI_Allreduce falder.
- c. Undersøg Message Profile Kort ned til nederste højre hjørne.
Blokkenes farvekodning indikerer, at beskeder, der rejser fra en højere rang til en lavere rang, har brug for proportionelt mere tid, mens beskeder, der rejser fra en lavere rang til en højere rang, afslører et svagt lige-ulige mønster:
- en. Åbn diagrammerne på samme tid:
Resultaterne af den sammenlignende analyse viser, at der ikke er komplekse udvekslingsmønstre i applikationen, udvekslingen udføres kun med naboprocesser. Oplysningerne vil være afgørende for at forbedre din applikationsydelse ved at ændre kommunikationstrin for at optimere applikationens kommunikationsmodel.
Identificer ubalanceret kommunikation
Se din ansøgning under de ideelle omstændigheder og sammenlign det originale spor file med den idealiserede for at isolere problematiske interaktioner.
- Skab en idealiseret file:
- en. Vælg Avanceret > Idealisering, eller klik på
(Idealisering) værktøjslinjeknap.
- b. Kontroller idealiseringsparametrene i dialogboksen Idealisering (ideelt spor file navn og tidsinterval for konvertering).
- c. Klik på Start for at idealisere dit spor.
- en. Vælg Avanceret > Idealisering, eller klik på
- Sammenlign det originale spor med det idealiserede spor:
- en. Vælg Avanceret > Ubalancediagram, eller klik på
(Ubalancediagram) værktøjslinjeknap.
- b. Klik på Åbn en anden i dialogboksen Ubalancediagram File knappen, naviger til det idealiserede spor, og vælg det.
- c. I vinduet Ubalancediagram skal du klikke på knappen Totaltilstand og vælge Opdelingstilstand.
- en. Vælg Avanceret > Ubalancediagram, eller klik på
Du kan se, at MPI_Sendrecv er den mest tidskrævende funktion. Ubalancevægten vises i
lys farve og omfatter omkring 10 % for MPI_Sendrecv-funktionen. Det er den tid, processerne bruger på at vente på hinanden.
Forbedre din applikationsydelse ved at ændre kommunikation
- Forbedre ydeevnen af MPI-applikationen ved at ændre blokering til ikke-blokerende kommunikation.
I din kode skal du erstatte den serielle MPI_Sendrcv med ikke-blokerende kommunikation: MPI_Isend og MPI_Irecv. F.eksample: Originalt kodestykke:
// grænseudveksling
void exchange(para* p, grid* gr){
int i,j;
MPI_Status status_100, status_200, status_300, status_400;
// send ned første række
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,
&status_100);
// send sidste række op
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);
Brug Intel Trace Analyzer Comparison view at sammenligne den serialiserede applikation med den reviderede
// kopier venstre kolonne til tmp-arrays
if(gr->venstre != MPI_PROC_NULL){
gr->x_new[i][gr->lcol+1] = right_col[i]; right_col[i] = gr->x_new[i][gr->lcol];
// send ret
MPI_Send(right_col, gr->lrow+2, MPI_DOUBLE, gr->right, 400, MPI_COMM_WORLD); }
if(gr->venstre != 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];
}
}
Opdateret kodestykke
MPI_Request req[7];
// send ned første række
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, req, MPI_STATUSES_IGNORE);
Når den er rettet, vil den enkelte iteration af den reviderede ansøgning se ud som følgende f.eksampdet: - Brug Intel Trace Analyzer Comparison view at sammenligne den serialiserede applikation med den reviderede. Sammenlign to spor ved hjælp af sammenligningen View, går til View > Sammenlign. Sammenligningen View ligner:
I sammenligningen View, kan du se, at brug af ikke-blokerende kommunikation hjælper med at fjerne serialisering og reducere tiden for kommunikation af processer.
NOTE For mere information om din applikations ydeevne på nodeniveau, se dokumentationen til de respektive værktøjer: Intel® VTune™ Profiler MPI-kodeanalyse og analyse af Intel® MPI-applikationer ved hjælp af Intel® Advisor.
Lær mere
Udforsk følgende ressourcer for at få flere oplysninger om Intel Trace Analyzer og Collector.
Meddelelser og ansvarsfraskrivelser
- Intel-teknologier kan kræve aktiveret hardware, software eller service-aktivering.
- Intet produkt eller komponent kan være helt sikkert.
- Dine omkostninger og resultater kan variere.
- © Intel Corporation. Intel, Intel-logoet og andre Intel-mærker er varemærker tilhørende Intel Corporation eller dets datterselskaber. Andre navne og mærker kan hævdes som andres ejendom.
- Ingen licens (udtrykt eller underforstået, ved estoppel eller på anden måde) til nogen intellektuel ejendomsret er givet af dette dokument.
- De beskrevne produkter kan indeholde designfejl eller fejl kendt som errata, som kan få produktet til at afvige fra offentliggjorte specifikationer. Aktuelle karakteriserede errata er tilgængelige på anmodning.
- Intel fraskriver sig alle udtrykkelige og underforståede garantier, herunder uden begrænsning de underforståede garantier for salgbarhed, egnethed til et bestemt formål og ikke-krænkelse, såvel som enhver garanti, der opstår som følge af ydeevne, handel eller brug i handelen.
Dokumenter/ressourcer
![]() |
intel Kom godt i gang med Intel Trace Analyzer og Collector [pdfBrugervejledning Kom godt i gang med Intel Trace Analyzer og Collector, Kom godt i gang med Intel, Trace Analyzer og Collector, Collector |