Kom i gang med Intel Trace Analyzer og Collector

Kom-i-gang-med-Intel-Trace-Analyzer-and-Collector-produkt

Kom i gang med Intel® Trace Analyzer og Collector

Bruk dette Kom i gang-dokumentet og et forhåndsinnhentet spor file å gå gjennom en grunnleggende MPI-ytelsesanalyse med Intel® Trace Analyzer and Collector.
Intel Trace Analyzer og Collector hjelper til med å utforske brukseffektiviteten til meldingsoverføringsgrensesnitt (MPI) og identifisere kommunikasjonshotspots, synkroniseringsflaskehalser og lastbalansering. For mer informasjon om produktet, se Intel Trace Analyzer and Collector produktside.

Last ned Intel Trace Analyzer and Collector

  • som en del av Intel® oneAPI HPC Toolkit
  • som et frittstående verktøy

Forutsetninger

  • Før du kjører Intel Trace Analyzer og Collector, sørg for at du har installert det nyeste Intel® MPI Library og Intel® oneAPI DPC++/C++ Compiler eller Intel® Fortran Compiler.
  • Dette setter de nødvendige miljøvariablene for kompilatorer, Intel MPI Library og Intel Trace Analyzer and Collector, og du er klar til å spore applikasjonene dine.
  • For mer informasjon, se: Systemkrav for Intel® oneAPI HPC Toolkit.

Forstå arbeidsflyten

  1. Spor søknaden din
  2. Analyser de mest aktive MPI-funksjonene
  3. Identifiser problematiske interaksjoner
  4. Forbedre applikasjonsytelsen ved å erstatte den problemskapende funksjonen

Spor MPI-applikasjonen din

Generer et spor file for å samle hendelseslogger for følgende applikasjonsatferdsanalyse.

  1. Sett opp miljøet for å starte Intel® Trace Analyzer and Collector ved å kjøre setvars-skriptet fra oneAPI-installasjonsdirektøren
    NOTE
    Som standard er Intel Trace Analyzer and Collector installert til /opt/intel/oneapi/itac for Linux* OS og til Program Files (x86)\Intel\oneAPI\itac\nyeste for Windows* OS.
    På Linux:
    $ kilde /opt/intel/oneapi/setvars.sh
    På Windows:
    "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
  2. Kjør MPI-applikasjonen og generer en sporing med -trace-alternativet.
    På Linux:
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    På Windows:
    Kompiler appen og samle inn sporet.
    For Intel oneAPI DPC++/C++ Compiler, kjør:
    > mpiicc -trace poisson_sendrecv.single.c
    For Intel Fortran Compiler, kjør:
    > mpiifort -trace poisson_sendrecv.single.f
    Denne eksample genererer et spor (stf*) for asample poisson_sendrcv.single MPI-applikasjon
  3. Åpne den genererte .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
For testformål kan du laste ned et forhåndsinnhentet spor file poisson_sendrecv.single.stf for giften som brukes i dette dokumentet, og åpne den med Intel Trace Analyzer og Collector.
.stf file åpnes på sammendragssiden view, som representerer generell informasjon om appytelsen din:Kom-i-gang-med-Intel-Trace-Analyzer-and-Collector-fig-1Kom-i-gang-med-Intel-Trace-Analyzer-and-Collector-fig-2NOTE For mer informasjon om Intel Trace Analyzer og Collector-funksjonalitet, se Lær mer.

Analyser de mest aktive MPI-funksjonene

Analyser en MPI-applikasjonsatferd, finn flaskehalser og identifiser serialisering for å finne måter å forbedre applikasjonsytelsen på.

  1. Fra sammendragssiden åpner du hendelsestidslinjen view ved å klikke Fortsett > Diagrammer > Tidslinje for hendelse for dyp analyse av de beste MPI-funksjonene.
    Diagrammet viser individuelle prosessaktiviteter over tid.
    Applikasjonsarbeid er iterativt, hvor hver iterasjon består av en beregningsdel og MPI-kommunikasjon.
  2. Identifiser en enkelt iterasjon å fokusere på og zoom inn på den ved å dra musen over det nødvendige tidsintervallet:Kom-i-gang-med-Intel-Trace-Analyzer-and-Collector-fig-3Sporet view viser delen i sporet du valgte. Hendelsestidslinjediagrammet viser hendelsene som var aktive under den valgte iterasjonen.
    • Horisontale stolper representerer prosessene med funksjonene som kalles i disse prosessene.
    • Svarte linjer indikerer meldinger sendt mellom prosesser. Disse linjene forbinder sende- og mottaksprosesser.
    • Blå linjer representerer kollektive operasjoner, for eksempel kringkasting eller redusering av operasjoner.
  3. Bytt til Flat Profile fane (A) for å se nærmere på funksjoner som utføres på tidspunktet du (valgt i hendelsestidslinjen.Kom-i-gang-med-Intel-Trace-Analyzer-and-Collector-fig-4
  4. Dele opp MPI-funksjoner for å analysere MPI-prosessaktivitet i applikasjonen din.
    For å gjøre dette, høyreklikk på Alle prosesser > Gruppe MPI ( B) i Flat Profile og velg UngroupMPI. Denne operasjonen avslører de individuelle MPI-anropene.
  5. Analyser prosessene som kommuniserer med sine direkte naboer ved å bruke MPI_Sendrecv ved starten av iterasjonen. For eksampde:Kom-i-gang-med-Intel-Trace-Analyzer-and-Collector-fig-5
    • en. I sample, MPI_Sendrecv-datautvekslingen har en flaskehals: prosessen utveksler ikke data med sin neste nabo før utvekslingen med den forrige er fullført. Tidslinjene for hendelsen view viser denne flaskehalsen som en trapp.
    • b. MPI_Allreduce på slutten av iterasjonen resynkroniserer alle prosesser; det er derfor denne blokken har omvendt trapputseende.
  6. Identifiser serialisering ved hjelp av Function Profile og Message Profile views.
    • en. Åpne diagrammene samtidig:
      I Function Profile diagrammet åpner du fanen Lastbalanse.
    • Gå til Charts-menyen for å åpne en Message Profile.
    • b. I kategorien Lastbalanse utvider du MPI_Sendrecv og MPI_Allreduce. Load Balancing indikerer at tiden brukt i MPI_Sendrecv øker med prosessnummeret, mens tiden for MPI_Allreduce reduseres.
    • c. Undersøk Message Profile Kart ned til nedre høyre hjørne.
      Fargekodingen til blokkene indikerer at meldinger som går fra en høyere rangering til en lavere rangering trenger proporsjonalt mer tid mens meldingene som går fra en lavere rangering til en høyere rangering avslører et svakt partalls-odde-mønster:Kom-i-gang-med-Intel-Trace-Analyzer-and-Collector-fig-6

Resultatene av den komparative analysen viser at det ikke er noen komplekse utvekslingsmønstre i søknaden, utvekslingen utføres kun med naboprosesser. Informasjonen vil være avgjørende for å forbedre applikasjonsytelsen din ved å endre kommunikasjonstrinn for å optimalisere kommunikasjonsmodellen til applikasjonen.

Identifiser ubalansert kommunikasjon

Se søknaden din under de ideelle omstendighetene og sammenlign det originale sporet file med den idealiserte for å isolere problematiske interaksjoner.

  1. Lag en idealisert file:
    • en. Velg Avansert > Idealisering eller klikk påKom-i-gang-med-Intel-Trace-Analyzer-and-Collector-fig-7 (Idealisering) verktøylinjeknapp.
    • b. Sjekk idealiseringsparametrene i Idealisering-dialogboksen (ideell sporing file navn og tidsrom for konvertering).
    • c. Klikk Start for å idealisere sporet.
  2. Sammenlign det originale sporet med det idealiserte sporet:
    • en. Velg Avansert > Ubalansediagram eller klikk på Kom-i-gang-med-Intel-Trace-Analyzer-and-Collector-fig-8(Ubalansediagram) verktøylinjeknapp.
    • b. I dialogboksen Ubalansediagram klikker du på Åpne en annen File -knappen, naviger til det idealiserte sporet, og velg det.
    • c. I vinduet Ubalansediagram klikker du på Totalmodus-knappen og velger Nedbrytingsmodus.

Kom-i-gang-med-Intel-Trace-Analyzer-and-Collector-fig-9

Du kan se at MPI_Sendrecv er den mest tidkrevende funksjonen. Ubalansevekten vises i
lys farge og omfatter omtrent 10 % for MPI_Sendrecv-funksjonen. Dette er tiden prosessene bruker på å vente på hverandre.

Forbedre applikasjonsytelsen din ved å endre kommunikasjon

  1. Forbedre ytelsen til MPI-applikasjonen ved å endre blokkering til ikke-blokkerende kommunikasjon.
    Bytt ut den serielle MPI_Sendrcv i koden din med ikke-blokkerende kommunikasjon: MPI_Isend og MPI_Irecv. For eksample: Original kodebit:
    // grensebytte
    void exchange(para* p, rutenett* gr){
    int i, j;
    MPI_Status status_100, status_200, status_300, status_400;
    // send ned første rad
    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 opp siste rad
    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);
    Bruk Intel Trace Analyzer Comparison view å sammenligne den serialiserte applikasjonen med den reviderte
    // kopier venstre kolonne til tmp-matriser
    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 rett
    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];
    }
    }
    Oppdatert kodebit
    MPI_Request req[7];
    // send ned første rad
    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 korrigert, vil den enkelte iterasjonen av den reviderte søknaden se ut som følgende eksampde:Kom-i-gang-med-Intel-Trace-Analyzer-and-Collector-fig-10
  2. Bruk Intel Trace Analyzer Comparison view å sammenligne den serialiserte applikasjonen med den reviderte. Sammenlign to spor ved hjelp av sammenligningen View, skal View > Sammenlign. Sammenligningen View ligner på:Kom-i-gang-med-Intel-Trace-Analyzer-and-Collector-fig-11I sammenligningen View, kan du se at bruk av ikke-blokkerende kommunikasjon bidrar til å fjerne serialisering og redusere tiden for kommunikasjon av prosesser.
    NOTE For mer informasjon om ytelse på nodenivå for applikasjonen din, se dokumentasjonen for de respektive verktøyene: Intel® VTune™ Profiler MPI-kodeanalyse og analyse av Intel® MPI-applikasjoner ved hjelp av Intel® Advisor.

Lær mer

Utforsk følgende ressurser for mer informasjon om Intel Trace Analyzer og Collector.Kom-i-gang-med-Intel-Trace-Analyzer-and-Collector-fig-12Kom-i-gang-med-Intel-Trace-Analyzer-and-Collector-fig-13

Merknader og ansvarsfraskrivelser

  • Intel-teknologier kan kreve aktivert maskinvare-, programvare- eller tjenesteaktivering.
  • Ingen produkter eller komponenter kan være helt sikre.
  • Kostnadene og resultatene dine kan variere.
  • © Intel Corporation. Intel, Intel-logoen og andre Intel-merker er varemerker for Intel Corporation eller dets datterselskaper. Andre navn og merker kan gjøres krav på som andres eiendom.
  • Ingen lisens (uttrykkelig eller underforstått, ved estoppel eller på annen måte) til noen immaterielle rettigheter er gitt av dette dokumentet.
  • Produktene som beskrives kan inneholde designfeil eller feil kjent som errata som kan føre til at produktet avviker fra publiserte spesifikasjoner. Gjeldende karakteriserte errata er tilgjengelig på forespørsel.
  • Intel fraskriver seg alle uttrykte og underforståtte garantier, inkludert, uten begrensning, underforståtte garantier for salgbarhet, egnethet for et bestemt formål og ikke-krenkelse, samt enhver garanti som oppstår fra ytelsesforløpet, handelsforløpet eller bruk i handelen.

Dokumenter / Ressurser

intel Kom i gang med Intel Trace Analyzer og Collector [pdfBrukerhåndbok
Kom i gang med Intel Trace Analyzer og Collector, Kom i gang med Intel, Trace Analyzer og Collector, Collector

Referanser

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket *