Alustage Intel Trace Analyzeri ja Collectoriga
Alustage Intel® Trace Analyzeri ja Collectoriga
Kasutage seda alustusdokumenti ja eelkogutud jälge file et läbida põhiline MPI jõudlusanalüüs Intel® Trace Analyzeri ja Collectoriga.
Intel Trace Analyzer ja Collector aitavad uurida sõnumi edastamise liidese (MPI) kasutamise tõhusust ning tuvastada side levialad, sünkroonimise kitsaskohad ja koormuse tasakaalustamine. Toote kohta lisateabe saamiseks vaadake Intel Trace Analyzeri ja Collectori tootelehte.
Laadige alla Intel Trace Analyzer ja Collector
- Intel® oneAPI HPC Toolkiti osana
- eraldiseisva tööriistana
Eeldused
- Enne Intel Trace Analyzeri ja Collectori käivitamist veenduge, et oleksite installinud uusima Intel® MPI raamatukogu ja Intel® oneAPI DPC++/C++ kompilaatori või Intel® Fortrani kompilaatori.
- See määrab kompilaatorite, Inteli MPI teegi ning Intel Trace Analyzer and Collectori jaoks vajalikud keskkonnamuutujad ning olete valmis oma rakendusi jälgima.
- Lisateabe saamiseks vaadake: Intel® oneAPI HPC tööriistakomplekti süsteeminõuded.
Töövoo mõistmine
- Jälgige oma rakendust
- Analüüsige kõige aktiivsemaid MPI funktsioone
- Tuvastage probleemsed interaktsioonid
- Parandage oma rakenduse jõudlust, asendades probleeme tekitava funktsiooni
Jälgige oma MPI rakendust
Looge jälg file sündmuste logide kogumiseks järgmise rakenduse käitumise analüüsi jaoks.
- Seadistage keskkond Intel® Trace Analyzeri ja Collectori käivitamiseks, käivitades skripti setvars oneAPI installidirektorist
MÄRKUS
Vaikimisi installitakse Intel Trace Analyzer ja Collector asukohta /opt/intel/oneapi/itac Linux* OS-i ja programmi jaoks Files (x86)\Intel\oneAPI\itac\latest Windows* OS-i jaoks.
Linuxis:
$ allikas /opt/intel/oneapi/setvars.sh
Windowsis:
"C:\Programm Files (x86)\Intel\oneAPI\setvars.bat” - Käivitage oma MPI rakendus ja genereerige jälgi võtmega -trace.
Linuxis:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
Windowsis:
Kompileerige rakendus ja koguge jälg.
Intel oneAPI DPC++/C++ kompilaatori jaoks käivitage:
> mpiicc -trace poisson_sendrecv.single.c
Intel Fortran Compileri jaoks käivitage:
> mpiifort -trace poisson_sendrecv.single.f
See eksample genereerib jälje (stf*) as-ileample poisson_sendrcv.single MPI rakendus - Avage loodud .stf file Intel Trace Analyzeriga koos Intel Trace Analyzeri ja kogujaga.
Linuxis:
$ traceanalyzer ./ poisson_sendrecv.single.stf
Windowsis:
traceanalyzer poisson_sendrecv.single.stf
MÄRKUS
Testimise eesmärgil saate alla laadida eelnevalt kogutud jälje file poisson_sendrecv.single.stf selles dokumendis kasutatud poissoni jaoks ja avage see Intel Trace Analyzeri ja Collectoriga.
.stf file avaneb kokkuvõtte lehel view, mis esindab üldist teavet teie rakenduse toimivuse kohta:MÄRKUS Lisateavet Intel Trace Analyzeri ja Collectori funktsioonide kohta leiate jaotisest Lisateave.
Analüüsige kõige aktiivsemaid MPI funktsioone
Analüüsige MPI rakenduse käitumist, leidke kitsaskohad ja tuvastage serialiseerimine, et leida viise rakenduse jõudluse parandamiseks.
- Avage kokkuvõtte lehel sündmuse ajaskaala view klõpsates nuppu Jätka > Diagrammid > Sündmuse ajaskaala, et MPI populaarsemaid funktsioone põhjalikult analüüsida.
Diagramm kuvab üksikute protsesside tegevused aja jooksul.
Rakendustöö on iteratiivne, kus iga iteratsioon koosneb arvutuslikust osast ja MPI-suhtlusest. - Tuvastage üks iteratsioon, millele keskenduda, ja suumige seda, lohistades hiirt üle vajaliku ajavahemiku:
Jälg view näitab teie valitud jälje sees olevat lõiku. Sündmuse ajaskaala diagramm näitab sündmusi, mis olid valitud iteratsiooni ajal aktiivsed.
- Horisontaalsed ribad tähistavad protsesse nendes protsessides kutsutavate funktsioonidega.
- Mustad jooned näitavad protsesside vahel saadetud sõnumeid. Need liinid ühendavad saatmis- ja vastuvõtuprotsesse.
- Sinised jooned tähistavad kollektiivseid toiminguid, näiteks levi- või vähendamisetoiminguid.
- Lülituge Flat Pro pealefile sakk (A), et näha lähemalt funktsioone, mis töötavad teie (sündmuse ajajoonel valitud) ajahetkel.
- Lahutage MPI funktsioonide rühmitamine, et analüüsida MPI protsessi aktiivsust teie rakenduses.
Selleks paremklõpsake Flat Pro valikul Kõik protsessid > Rühma MPI ( B).file ja valige UngroupMPI. See toiming paljastab üksikud MPI-kõned. - Analüüsige protsesse, mis suhtlevad nende otseste naabritega, kasutades iteratsiooni alguses MPI_Sendrecv. Näiteksample:
- a. Aastal sample, on MPI_Sendrecv andmevahetusel kitsaskoht: protsess ei vaheta andmeid oma järgmise naabriga enne, kui vahetus eelmisega on lõppenud. Sündmuste ajakava view näitab seda kitsaskohta trepina.
- b. MPI_Allreduce iteratsiooni lõpus sünkroniseerib uuesti kõik protsessid; Seetõttu on sellel plokil vastupidine trepp.
- Tehke Function Pro abil kindlaks serialiseeriminefile ja Message Profile views.
- a. Avage diagrammid samal ajal:
Funktsioonis Profile diagrammi, avage vahekaart Koormuse tasakaal. - Message Pro avamiseks minge menüüsse Diagrammidfile.
- b. Laiendage vahekaardil Koormusbilanss MPI_Sendrecv ja MPI_Allreduce. Koormuse tasakaalustamine näitab, et MPI_Sendrecv-s kulutatud aeg pikeneb protsessi numbriga, samas kui MPI_Allreduce jaoks kuluv aeg väheneb.
- c. Uurige rakendust Message Profile Diagramm alla paremasse alanurka.
Plokkide värvikoodid näitavad, et sõnumid, mis liiguvad kõrgemalt astmelt madalamale, vajavad proportsionaalselt rohkem aega, samas kui sõnumid, mis liiguvad madalamalt astmelt kõrgemale, näitavad nõrka paaris-paaritu mustrit:
- a. Avage diagrammid samal ajal:
Võrdleva analüüsi tulemused näitavad, et rakenduses puuduvad keerulised vahetusmustrid, vahetus toimub ainult naaberprotsessidega. See teave on oluline rakenduse toimivuse parandamiseks sidet muutes, et optimeerida rakenduse suhtlusmudelit.
Tuvastage tasakaalustamata side
Vaadake oma rakendust ideaalsetes tingimustes ja võrrelge algset jälge file idealiseeritud ühega, et eraldada probleemsed interaktsioonid.
- Loo idealiseeritud file:
- a. Valige Täpsem > Idealiseerimine või klõpsake nuppu
(Idealiseerimise) tööriistariba nupp.
- b. Kontrollige idealiseerimise parameetreid dialoogiboksis Idealiseerimine (ideaalne jälg file konversiooni nimi ja ajavahemik).
- c. Jälje idealiseerimiseks klõpsake nuppu Start.
- a. Valige Täpsem > Idealiseerimine või klõpsake nuppu
- Võrrelge algset jälge idealiseeritud jäljega:
- a. Valige Täpsem > Tasakaalustamatuse diagramm või klõpsake nuppu
(tasakaalustamatuse diagramm) tööriistariba nupp.
- b. Dialoogiboksis Tasakaalustamatuse diagramm klõpsake nuppu Ava teine File nuppu, navigeerige idealiseeritud jäljeni ja valige see.
- c. Tasakaalustamatuse diagrammi aknas klõpsake nuppu Kogurežiim ja valige Jaotusrežiim.
- a. Valige Täpsem > Tasakaalustamatuse diagramm või klõpsake nuppu
Näete, et MPI_Sendrecv on kõige aeganõudvam funktsioon. Tasakaalustamatuse kaal kuvatakse
heledat värvi ja sisaldab umbes 10% funktsiooni MPI_Sendrecv jaoks. See on aeg, mille protsessid kulutavad üksteist oodates.
Parandage oma rakenduse jõudlust suhtlust muutes
- Parandage MPI-rakenduse jõudlust, muutes blokeerimise mitteblokeerivaks suhtluseks.
Asendage oma koodis jada MPI_Sendrcv mitteblokeeriva sidega: MPI_Isend ja MPI_Irecv. Näiteksample: Algne koodilõik:
// piirivahetus
void Exchange(para* p, grid* gr){
int i,j;
MPI_oleku olek_100, olek_200, olek_300, olek_400;
// saadab esimene rida alla
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);
// saadab üles viimane rida
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);
Kasutage Intel Trace Analyzeri võrdlust view jadarakenduse võrdlemiseks muudetud rakendusega
// kopeerige vasak veerg tmp-massiividesse
if(gr->left != MPI_PROC_NULL){
gr->x_uus[i][gr->lcol+1] = parem_kolv[i]; parem_kolv[i] = gr->x_uus[i][gr->lcol];
// saata paremale
MPI_Send(parem_kolb, gr->lrow+2, MPI_DOUBLE, gr->parem, 400, MPI_COMM_WORLD); }
if(gr->left != MPI_PROC_NULL)
{
MPI_Recv(vasak_kolb, gr->lrow+2, MPI_DOUBLE, gr->vasak, 400, MPI_COMM_WORLD,&olek_400); for(i=0; i< gr->lrow+2; i++
{
gr->x_uus[i][0] = vasak_col[i];
}
}
Uuendatud koodilõik
MPI_Request req[7];
// saadab esimene rida alla
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_Ooteaeg(7, req, MPI_STATUSES_IGNORE);
Pärast parandamist näeb muudetud rakenduse üksik iteratsioon välja nagu järgmine näitample: - Kasutage Intel Trace Analyzeri võrdlust view seeriarakenduse võrdlemiseks muudetud rakendusega. Võrrelge kahte jälge võrdluse abil View, läheb View > Võrdle. Võrdlus View näeb välja sarnane:
Võrdluses View, näete, et mitteblokeeriva suhtluse kasutamine aitab eemaldada serialiseerimist ja lühendada protsesside suhtlusaega.
MÄRKUS Lisateavet rakenduse sõlmetasemel jõudluse kohta leiate vastavate tööriistade dokumentatsioonist: Intel® VTune™ Profiler MPI koodi analüüs ja Intel® MPI rakenduste analüüs Intel® Advisori abil.
Lisateave
Intel Trace Analyzeri ja Collectori kohta lisateabe saamiseks uurige järgmisi ressursse.
Märkused ja lahtiütlused
- Inteli tehnoloogiad võivad nõuda riistvara, tarkvara või teenuse aktiveerimist.
- Ükski toode ega komponent ei saa olla täiesti turvaline.
- Teie kulud ja tulemused võivad erineda.
- © Intel Corporation. Intel, Inteli logo ja muud Inteli kaubamärgid on Intel Corporationi või selle tütarettevõtete kaubamärgid. Teisi nimesid ja kaubamärke võidakse pidada teiste omandiks.
- See dokument ei anna intellektuaalomandi õiguste litsentsi (otsesõnalist ega kaudset, tõkestamise teel või muul viisil).
- Kirjeldatud tooted võivad sisaldada konstruktsiooni vigu või vigu, mida nimetatakse errata-ks, mille tõttu toode võib avaldatud spetsifikatsioonidest kõrvale kalduda. Praegused iseloomustatud vead on saadaval nõudmisel.
- Intel loobub kõikidest otsestest ja kaudsetest garantiidest, sealhulgas ilma piiranguteta kaudsetest garantiidest kaubeldavuse, konkreetseks otstarbeks sobivuse ja mitterikkumise kohta, samuti mis tahes garantiidest, mis tulenevad toimivusest, tehingute käigust või kaubanduses kasutamisest.
Dokumendid / Ressursid
![]() |
intel Alustage Intel Trace Analyzeri ja Collectoriga [pdfKasutusjuhend Alustage Intel Trace Analyzeri ja Collectoriga, alustage Inteliga, Trace Analyzer ja Collector, Collector |