Začnite z Intel Trace Analyzer in Collector
Začnite z Intel® Trace Analyzer in Collector
Uporabite ta dokument za začetek in vnaprej zbrano sled file sprehod skozi osnovno analizo zmogljivosti MPI z Intel® Trace Analyzer in Collector.
Intel Trace Analyzer and Collector pomaga raziskati učinkovitost uporabe vmesnika za posredovanje sporočil (MPI) in prepoznati komunikacijske vroče točke, ozka grla pri sinhronizaciji in uravnoteženje obremenitve. Za več informacij o izdelku glejte stran izdelka Intel Trace Analyzer and Collector.
Prenesite Intel Trace Analyzer and Collector
- kot del orodja Intel® oneAPI HPC Toolkit
- kot samostojno orodje
Predpogoji
- Preden zaženete Intel Trace Analyzer in Collector, se prepričajte, da ste namestili najnovejšo knjižnico Intel® MPI in prevajalnik Intel® oneAPI DPC++/C++ ali prevajalnik Intel® Fortran.
- To nastavi zahtevane spremenljivke okolja za prevajalnike, Intel MPI Library ter Intel Trace Analyzer and Collector in pripravljeni ste na sledenje svojim aplikacijam.
- Za več informacij glejte: Sistemske zahteve za Intel® oneAPI HPC Toolkit.
Razumeti potek dela
- Izsledite svojo prijavo
- Analizirajte najbolj aktivne funkcije MPI
- Ugotovite problematične interakcije
- Izboljšajte delovanje svoje aplikacije z zamenjavo funkcije, ki povzroča težave
Izsledite svojo aplikacijo MPI
Ustvarite sled file za zbiranje dnevnikov dogodkov za naslednjo analizo vedenja aplikacije.
- Nastavite okolje za zagon Intel® Trace Analyzer and Collector tako, da zaženete skript setvars iz namestitvenega direktorja oneAPI
OPOMBA
Intel Trace Analyzer and Collector je privzeto nameščen v /opt/intel/oneapi/itac za Linux* OS in v Program Files (x86)\Intel\oneAPI\itac\najnovejše za Windows* OS.
V sistemu Linux:
$ vir /opt/intel/oneapi/setvars.sh
V sistemu Windows:
“C:\Program Files (x86)\Intel\oneAPI\setvars.bat" - Zaženite aplikacijo MPI in ustvarite sled z možnostjo -trace.
V sistemu Linux:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
V sistemu Windows:
Prevedite aplikacijo in zberite sled.
Za prevajalnik Intel oneAPI DPC++/C++ zaženite:
> mpiicc -trace poisson_sendrecv.single.c
Za prevajalnik Intel Fortran zaženite:
> mpiifort -trace poisson_sendrecv.single.f
Ta bivšiample ustvari sled (stf*) za asample poisson_sendrcv.enotna aplikacija MPI - Odprite ustvarjeni .stf file z Intel Trace Analyzerjem z Intel Trace Analyzerjem in zbiralnikom.
V sistemu Linux:
$ traceanalyzer ./ poisson_sendrecv.single.stf
V sistemu Windows:
analizator sledi poisson_sendrecv.single.stf
OPOMBA
Za namene testiranja lahko prenesete vnaprej zbrano sled file poisson_sendrecv.single.stf za poisson, uporabljen v tem dokumentu, in ga odprite z Intel Trace Analyzer in Collector.
.stf file se odpre na strani s povzetkom view, ki predstavlja splošne informacije o delovanju vaše aplikacije:OPOMBA Za več informacij o funkciji Intel Trace Analyzer in Collector glejte Več o tem.
Analizirajte najbolj aktivne funkcije MPI
Analizirajte obnašanje aplikacije MPI, poiščite ozka grla in prepoznajte serializacijo, da poiščete načine za izboljšanje zmogljivosti aplikacije.
- Na strani s povzetkom odprite časovnico dogodka view tako da kliknete Nadaljuj > Grafikoni > Časovnica dogodkov za poglobljeno analizo najboljših funkcij MPI.
Grafikon prikazuje posamezne aktivnosti procesa skozi čas.
Delo aplikacije je iterativno, kjer je vsaka iteracija sestavljena iz računskega dela in komunikacij MPI. - Določite posamezno ponovitev, na katero se želite osredotočiti, in jo povečajte tako, da miško povlečete čez zahtevani časovni interval:
Sled view prikazuje odsek znotraj sledi, ki ste ga izbrali. Grafikon časovne premice dogodkov prikazuje dogodke, ki so bili aktivni med izbrano ponovitvijo.
- Vodoravne črte predstavljajo procese s funkcijami, klicanimi v teh procesih.
- Črne črte označujejo sporočila, poslana med procesi. Te linije povezujejo procese pošiljanja in prejemanja.
- Modre črte predstavljajo skupne operacije, kot so operacije oddajanja ali zmanjševanja.
- Preklopite na Flat Profile (A), da si podrobneje ogledate funkcije, ki se izvajajo v časovni točki, ki ste jo izbrali na časovnici dogodkov.
- Razdružite funkcije MPI za analizo dejavnosti procesa MPI v vaši aplikaciji.
Če želite to narediti, z desno miškino tipko kliknite Vsi procesi > Skupina MPI (B) v programu Flat Profile in izberite UngroupMPI. Ta operacija razkrije posamezne klice MPI. - Analizirajte procese, ki komunicirajo s svojimi neposrednimi sosedi z uporabo MPI_Sendrecv na začetku ponovitve. Na primerample:
- a. V sample ima izmenjava podatkov MPI_Sendrecv ozko grlo: proces ne izmenjuje podatkov z naslednjim sosedom, dokler ni končana izmenjava s prejšnjim. Časovnice dogodkov view prikaže to ozko grlo kot stopnišče.
- b. MPI_Allreduce na koncu iteracije ponovno sinhronizira vse procese; zato ima ta blok videz obrnjenega stopnišča.
- Prepoznajte serializacijo s funkcijo Function Profile in Message Profile views.
- a. Hkrati odprite grafikone:
V funkciji Profile grafikonu odprite zavihek Ravnovesje obremenitve. - Pojdite v meni Grafikoni, da odprete Message Profile.
- b. Na zavihku Load Balance razširite MPI_Sendrecv in MPI_Allreduce. Izravnavanje obremenitve kaže, da se čas, porabljen v MPI_Sendrecv, povečuje s številko procesa, medtem ko se čas za MPI_Allreduce zmanjšuje.
- c. Preglejte Message Profile Graf navzdol do spodnjega desnega kota.
Barvno kodiranje blokov kaže, da sporočila, ki potujejo od višjega ranga do nižjega ranga, potrebujejo sorazmerno več časa, medtem ko sporočila, ki potujejo od nižjega ranga do višjega ranga, razkrivajo šibek vzorec sodo-liho:
- a. Hkrati odprite grafikone:
Rezultati primerjalne analize kažejo, da v aplikaciji ni zapletenih vzorcev izmenjave, izmenjava se izvaja samo s sosednjimi procesi. Informacije bodo bistvenega pomena za izboljšanje učinkovitosti vaše aplikacije s spremembo komunikacij v koraku za optimizacijo komunikacijskega modela aplikacije.
Prepoznajte neuravnotežene komunikacije
Opazujte svojo aplikacijo v idealnih okoliščinah in primerjajte izvirno sled file z idealiziranim za izolacijo problematičnih interakcij.
- Ustvarite idealizirano file:
- a. Izberite Napredno > Idealizacija ali kliknite
Gumb orodne vrstice (Idealizacija).
- b. Preverite parametre idealizacije v pogovornem oknu Idealizacija (idealna sled file ime in časovni razpon za pretvorbo).
- c. Kliknite Start, da idealizirate svojo sled.
- a. Izberite Napredno > Idealizacija ali kliknite
- Primerjaj prvotno sled z idealizirano sledjo:
- a. Izberite Napredno > Diagram neravnovesja ali kliknite
Gumb v orodni vrstici (Diagram neravnovesja).
- b. V pogovornem oknu Diagram neravnovesja kliknite Odpri drugo File gumb, se pomaknite do idealizirane sledi in jo izberite.
- c. V oknu Diagram neuravnoteženosti kliknite gumb Total Mode in izberite Breakdown Mode.
- a. Izberite Napredno > Diagram neravnovesja ali kliknite
Vidite lahko, da je MPI_Sendrecv najbolj zamudna funkcija. Teža odstopanja je prikazana v
svetle barve in obsega približno 10 % za funkcijo MPI_Sendrecv. To je čas, ki ga procesi čakajo drug na drugega.
Izboljšajte delovanje svoje aplikacije s spremembo komunikacije
- Izboljšajte delovanje aplikacije MPI tako, da blokiranje spremenite v neblokirajoče komunikacije.
V svoji kodi zamenjajte serijski MPI_Sendrcv z neblokirno komunikacijo: MPI_Isend in MPI_Irecv. Na primerample: izvirni delček kode:
// mejna izmenjava
void exchange(para* p, grid* gr){
int i,j;
MPI_Status status_100, status_200, status_300, status_400;
// pošlji prvo vrstico navzdol
MPI_Send(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->dol, 100, MPI_COMM_WORLD); MPI_Recv(gr->x_novo[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->gor, 100, MPI_COMM_WORLD,
&stanje_100);
// pošlji gor zadnjo vrstico
MPI_Send(gr->x_novo[gr->lrow], gr->lcol+2, MPI_DOUBLE, gr->gor, 200, MPI_COMM_WORLD);
MPI_Recv(gr->x_novo[0], gr->lcol+2, MPI_DOUBLE, gr->dol, 200, MPI_COMM_WORLD, &status_200);
Uporabite Intel Trace Analyzer Comparison view za primerjavo serializirane aplikacije z revidirano
// kopiraj levi stolpec v polja tmp
if(gr->levo != MPI_PROC_NULL){
gr->x_novo[i][gr->lcol+1] = desni_kol[i]; desni_kol[i] = gr->x_novo[i][gr->lkol];
// pošlji desno
MPI_Send(desni_kol, gr->lrow+2, MPI_DOUBLE, gr->desno, 400, MPI_COMM_WORLD); }
če(gr->levo != 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_novo[i][0] = levi_kol[i];
}
}
Posodobljen delček kode
MPI_Request req[7];
// pošlji prvo vrstico navzdol
MPI_Isend(gr->x_novo[1], gr->lcol+2, MPI_DOUBLE, gr->dol, 100, MPI_COMM_WORLD, &req[0]);
MPI_Irecv(gr->x_novo[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->gor, 100, MPI_COMM_WORLD, &req[1]);
…..
MPI_Waitall(7, req, MPI_STATUSES_IGNORE);
Ko bo popravljena, bo posamezna ponovitev revidirane aplikacije videti kot naslednji primerample: - Uporabite Intel Trace Analyzer Comparison view za primerjavo serializirane aplikacije z revidirano. Primerjaj dve sledi s pomočjo Primerjave View, grem v View > Primerjaj. Primerjava View izgleda podobno kot:
V Primerjavi View, lahko vidite, da uporaba neblokirne komunikacije pomaga odstraniti serializacijo in zmanjša čas komunikacije procesov.
OPOMBA Za več informacij o zmogljivosti vaše aplikacije na ravni vozlišča si oglejte dokumentacijo za ustrezna orodja: Intel® VTune™ Profiler Analiza kode MPI in analiziranje aplikacij Intel® MPI z uporabo Intel® Advisor.
Več o tem
Raziščite naslednje vire za več informacij o Intel Trace Analyzer in Collector.
Obvestila in zavrnitve odgovornosti
- Intelove tehnologije morda zahtevajo aktivirano strojno, programsko opremo ali storitve.
- Noben izdelek ali komponenta ne more biti popolnoma varna.
- Stroški in rezultati se lahko razlikujejo.
- © Intel Corporation. Intel, logotip Intel in druge znamke Intel so blagovne znamke družbe Intel Corporation ali njenih podružnic. Druga imena in blagovne znamke se lahko zahtevajo kot last drugih.
- Ta dokument ne podeljuje nobene licence (izrecne ali implicitne, z ustavitvijo ali kako drugače) za kakršne koli pravice intelektualne lastnine.
- Opisani izdelki lahko vsebujejo oblikovne pomanjkljivosti ali napake, znane kot errata, zaradi katerih lahko izdelek odstopa od objavljenih specifikacij. Trenutne karakterizirane napake so na voljo na zahtevo.
- Intel zavrača vsa izrecna in implicitna jamstva, vključno brez omejitev z implicitnimi jamstvi glede primernosti za prodajo, primernosti za določen namen in nekršitve, kot tudi vsa jamstva, ki izhajajo iz poteka delovanja, poteka poslovanja ali uporabe v trgovini.
Dokumenti / Viri
![]() |
intel Začnite z Intel Trace Analyzer in Collector [pdf] Uporabniški priročnik Začnite z Intel Trace Analyzer in Collector, Začnite z Intel, Trace Analyzer in Collector, Collector |