Započnite s Intel Trace Analyzerom i Collectorom

Get-Started-with-Intel-Trace-Analyzer-and-Collector-product

Započnite s Intel® Trace Analyzer i Collector

Upotrijebite ovaj dokument Prvi koraci i prethodno prikupljeni trag file proći kroz osnovnu analizu performansi MPI-ja s Intel® Trace Analyzer i Collector.
Intel Trace Analyzer and Collector pomaže u istraživanju učinkovitosti korištenja sučelja za prolaz poruka (MPI) i identificiranju komunikacijskih vrućih točaka, uskih grla sinkronizacije i balansiranja opterećenja. Za više informacija o proizvodu pogledajte stranicu proizvoda Intel Trace Analyzer and Collector.

Preuzmite Intel Trace Analyzer and Collector

  • kao dio Intel® oneAPI HPC Toolkita
  • kao samostalan alat

Preduvjeti

  • Prije pokretanja Intel Trace Analyzer and Collector, provjerite jeste li instalirali najnoviju Intel® MPI biblioteku i Intel® oneAPI DPC++/C++ kompajler ili Intel® Fortran kompajler.
  • Ovo postavlja potrebne varijable okruženja za prevoditelje, Intel MPI biblioteku i Intel Trace Analyzer i Collector, i spremni ste za praćenje svojih aplikacija.
  • Za više informacija pogledajte: Intel® oneAPI HPC Toolkit Zahtjevi sustava.

Razumijevanje tijeka rada

  1. Pratite svoju prijavu
  2. Analizirati najaktivnije MPI funkcije
  3. Identificirajte problematične interakcije
  4. Poboljšajte performanse svoje aplikacije zamjenom funkcije koja uzrokuje probleme

Pratite svoju MPI aplikaciju

Generirajte trag file za prikupljanje zapisa događaja za sljedeću analizu ponašanja aplikacije.

  1. Postavite okruženje za pokretanje Intel® Trace Analyzer and Collector pokretanjem setvars skripte iz oneAPI instalacijskog direktora
    BILJEŠKA
    Prema zadanim postavkama, Intel Trace Analyzer and Collector instaliran je u /opt/intel/oneapi/itac za Linux* OS i u Program Files (x86)\Intel\oneAPI\itac\najnovije za Windows* OS.
    Na Linuxu:
    $ izvor /opt/intel/oneapi/setvars.sh
    U sustavu Windows:
    “C:\Program Files (x86)\Intel\oneAPI\setvars.bat”
  2. Pokrenite svoju MPI aplikaciju i generirajte praćenje s opcijom -trace.
    Na Linuxu:
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    U sustavu Windows:
    Kompajlirajte aplikaciju i prikupite trag.
    Za Intel oneAPI DPC++/C++ kompajler pokrenite:
    > mpiicc -trag poisson_sendrecv.single.c
    Za Intel Fortran kompajler pokrenite:
    > mpiifort -trace poisson_sendrecv.single.f
    Ovaj bivšiample generira trag (stf*) za asample poisson_sendrcv.jedna MPI aplikacija
  3. Otvorite generirani .stf file s Intel Trace Analyzer s Intel Trace Analyzer i Collector.
    Na Linuxu:
    $ traceanalyzer ./ poisson_sendrecv.single.stf
    U sustavu Windows:
    analizator tragova poisson_sendrecv.single.stf

BILJEŠKA
Za potrebe testiranja možete preuzeti prethodno prikupljeno praćenje file poisson_sendrecv.single.stf za poisson koji se koristi u ovom dokumentu i otvorite ga s Intel Trace Analyzer i Collector.
.stf file otvara se na stranici sa sažetkom view, koji predstavlja opće informacije o izvedbi vaše aplikacije:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-1Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-2BILJEŠKA Za više informacija o funkcijama Intel Trace Analyzer i Collector pogledajte Saznajte više.

Analizirajte najaktivnije MPI funkcije

Analizirajte ponašanje MPI aplikacije, pronađite uska grla i identificirajte serijalizaciju kako biste pronašli načine za poboljšanje izvedbe aplikacije.

  1. Na stranici sa sažetkom otvorite vremensku traku događaja view klikom na Nastavi > Grafikoni > Vremenska traka događaja za detaljnu analizu vrhunskih MPI funkcija.
    Grafikon prikazuje pojedinačne aktivnosti procesa tijekom vremena.
    Rad aplikacije je iterativan, gdje se svaka iteracija sastoji od računalnog dijela i MPI komunikacije.
  2. Identificirajte jednu iteraciju na koju se želite usredotočiti i zumirajte je povlačenjem miša preko potrebnog vremenskog intervala:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-3Trag view prikazuje odjeljak unutar traga koji ste odabrali. Grafikon Vremenska traka događaja prikazuje događaje koji su bili aktivni tijekom odabrane iteracije.
    • Horizontalne trake predstavljaju procese s funkcijama pozvanim u tim procesima.
    • Crne linije označavaju poruke poslane između procesa. Ove linije povezuju procese slanja i primanja.
    • Plave linije predstavljaju skupne operacije, kao što su operacije emitiranja ili smanjenja.
  3. Prijeđite na Flat Profile karticu (A) kako biste pobliže pogledali funkcije koje se izvršavaju u vremenskoj točki koju ste ( odabrali na vremenskoj traci događaja.Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-4
  4. Razgrupirajte MPI funkcije za analizu aktivnosti MPI procesa u vašoj aplikaciji.
    Da biste to učinili, desnom tipkom miša kliknite Svi procesi > Grupa MPI (B) u programu Flat Profile i odaberite UngroupMPI. Ova operacija izlaže pojedinačne MPI pozive.
  5. Analizirajte procese koji komuniciraju sa svojim izravnim susjedima koristeći MPI_Sendrecv na početku iteracije. Na primjerampono:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-5
    • a. U sample, razmjena podataka MPI_Sendrecv ima usko grlo: proces ne razmjenjuje podatke sa svojim sljedećim susjedom dok se ne završi razmjena s prethodnim. Vremenske crte događaja view prikazuje ovo usko grlo kao stubište.
    • b. MPI_Allreduce na kraju iteracije ponovno sinkronizira sve procese; zato ovaj blok ima izgled obrnutog stubišta.
  6. Identificirajte serijalizaciju pomoću Function Profile i Message Profile views.
    • a. Otvorite grafikone u isto vrijeme:
      U funkciji Profile grafikon, otvorite karticu Balance opterećenja.
    • Idite na izbornik Grafikoni da biste otvorili Message Profile.
    • b. Na kartici Balans opterećenja proširite MPI_Sendrecv i MPI_Allreduce. Balansiranje opterećenja pokazuje da se vrijeme provedeno u MPI_Sendrecv povećava s brojem procesa, dok se vrijeme za MPI_Allreduce smanjuje.
    • c. Ispitajte Message Profile Grafikon prema donjem desnom kutu.
      Kodiranje boja blokova pokazuje da poruke koje putuju od višeg ranga do nižeg ranga trebaju proporcionalno više vremena, dok poruke koje putuju od nižeg ranga do višeg ranga otkrivaju slabu vrstu uzorka par-nepar:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-6

Rezultati usporedne analize pokazuju da u aplikaciji nema složenih obrazaca razmjene, razmjena se provodi samo sa susjednim procesima. Informacije će biti bitne za korak Poboljšajte izvedbu svoje aplikacije promjenom komunikacije kako biste optimizirali komunikacijski model aplikacije.

Identificirajte neuravnotežene komunikacije

Promatrajte svoju aplikaciju u idealnim okolnostima i usporedite izvorni trag file s idealiziranim za izolaciju problematičnih interakcija.

  1. Stvorite idealizirani file:
    • a. Odaberite Napredno > Idealizacija ili klikniteGet-Started-with-Intel-Trace-Analyzer-and-Collector-fig-7 Gumb alatne trake (Idealizacija).
    • b. Provjerite parametre idealizacije u dijaloškom okviru Idealizacija (idealni trag file naziv i vremenski raspon za konverziju).
    • c. Pritisnite Start da biste idealizirali svoj trag.
  2. Usporedite izvorni trag s idealiziranim tragom:
    • a. Odaberite Napredno > Dijagram neravnoteže ili kliknite Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-8Gumb alatne trake (Dijagram neravnoteže).
    • b. U dijaloškom okviru Dijagram neravnoteže kliknite Otvori drugo File gumb, dođite do idealiziranog traga i odaberite ga.
    • c. U prozoru dijagrama neravnoteže kliknite gumb Total Mode i odaberite Breakdown Mode.

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

Možete vidjeti da je MPI_Sendrecv funkcija koja oduzima najviše vremena. Težina debalansa je prikazana u
svijetle boje i sadrži oko 10% za funkciju MPI_Sendrecv. To je vrijeme koje procesi provode čekajući jedni druge.

Poboljšajte izvedbu svoje aplikacije promjenom komunikacije

  1. Poboljšajte performanse MPI aplikacije promjenom blokiranja u neblokirajuću komunikaciju.
    U svom kodu zamijenite serijski MPI_Sendrcv s komunikacijom bez blokiranja: MPI_Isend i MPI_Irecv. Na primjerample: izvorni isječak koda:
    // granična razmjena
    void exchange(para* p, grid* gr){
    int i,j;
    MPI_Status status_100, status_200, status_300, status_400;
    // poslati dolje prvi red
    MPI_Send(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD); MPI_Recv(gr->x_novo[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->gore, 100, MPI_COMM_WORLD,
    &status_100);
    // pošalji zadnji red
    MPI_Send(gr->x_novo[gr->lrow], gr->lcol+2, MPI_DOUBLE, gr->gore, 200, MPI_COMM_WORLD);
    MPI_Recv(gr->x_new[0], gr->lcol+2, MPI_DOUBLE, gr->down, 200, MPI_COMM_WORLD, &status_200);
    Koristite Intel Trace Analyzer Comparison view za usporedbu serijalizirane aplikacije s revidiranom
    // kopiraj lijevi stupac u tmp nizove
    if(gr->lijevo != MPI_PROC_NULL){
    gr->x_novi[i][gr->lcol+1] = desni_kol[i]; desni_kol[i] = gr->x_novi[i][gr->lkol];
    // poslati desno
    MPI_Send(desni_kol, gr->lrow+2, MPI_DOUBLE, gr->desno, 400, MPI_COMM_WORLD); }
    if(gr->lijevo != MPI_PROC_NULL)
    {
    MPI_Recv(lijevo_stupac, gr->lrow+2, MPI_DOUBLE, gr->lijevo, 400, MPI_COMM_WORLD,&status_400); for(i=0; i< gr->lrow+2; i++
    {
    gr->x_novo[i][0] = lijevi_stupac[i];
    }
    }
    Ažurirani isječak koda
    MPI_Zahtjev zahtjev[7];
    // poslati dolje prvi red
    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->gore, 100, MPI_COMM_WORLD, &req[1]);
    …..
    MPI_Waitall(7, req, MPI_STATUSES_IGNORE);
    Nakon što se ispravi, pojedinačna iteracija revidirane aplikacije izgledat će kao sljedeći primjerampono:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-10
  2. Koristite Intel Trace Analyzer Comparison view za usporedbu serijalizirane aplikacije s revidiranom. Usporedite dva traga uz pomoć Usporedbe View, ide u View > Usporedi. Usporedba View izgleda slično:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-11U Usporedbi View, možete vidjeti da korištenje neblokirajuće komunikacije pomaže ukloniti serijalizaciju i smanjiti vrijeme komunikacije procesa.
    BILJEŠKA Za više informacija o izvedbi vaše aplikacije na razini čvora pogledajte dokumentaciju za odgovarajuće alate: Intel® VTune™ Profiler Analiza MPI koda i analiza Intel® MPI aplikacija pomoću Intel® Advisora.

Saznajte više

Istražite sljedeće resurse za više informacija o Intel Trace Analyzer i Collector.Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-12Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-13

Obavijesti i odricanje od odgovornosti

  • Intelove tehnologije mogu zahtijevati omogućen hardver, softver ili uslugu aktiviranja.
  • Nijedan proizvod ili komponenta ne može biti apsolutno siguran.
  • Vaši troškovi i rezultati mogu varirati.
  • © Intel Corporation. Intel, Intelov logotip i druge Intelove oznake zaštitni su znakovi Intel Corporation ili njegovih podružnica. Ostala imena i marke mogu se smatrati vlasništvom drugih.
  • Ovaj dokument ne daje nikakvu licencu (izričitu ili prešutnu, estoppelom ili na neki drugi način) za bilo koja prava intelektualnog vlasništva.
  • Opisani proizvodi mogu sadržavati nedostatke u dizajnu ili pogreške poznate kao errata koje mogu uzrokovati odstupanje proizvoda od objavljenih specifikacija. Trenutačne karakterizirane pogreške dostupne su na zahtjev.
  • Intel se odriče svih izričitih i implicitnih jamstava, uključujući, bez ograničenja, implicitna jamstva o utrživosti, prikladnosti za određenu svrhu i nekršenju, kao i bilo koje jamstvo koje proizlazi iz izvedbe, tijeka poslovanja ili uporabe u trgovini.

Dokumenti / Resursi

intel Započnite s Intel Trace Analyzer i Collector [pdf] Korisnički priručnik
Započnite s Intel Trace Analyzer i Collector, Započnite s Intelom, Trace Analyzer i Collector, Collector

Reference

Ostavite komentar

Vaša email adresa neće biti objavljena. Obavezna polja su označena *