Pradėkite naudotis „Intel Trace Analyzer“ ir „Collector“.
Pradėkite naudotis „Intel® Trace Analyzer“ ir „Collector“.
Naudokite šį darbo pradžios dokumentą ir iš anksto surinktą pėdsaką file atlikti pagrindinę MPI našumo analizę naudodami „Intel® Trace Analyzer“ ir „Collector“.
„Intel Trace Analyzer“ ir „Collector“ padeda ištirti pranešimų perdavimo sąsajos (MPI) naudojimo efektyvumą ir nustatyti ryšio viešosios interneto prieigos taškus, sinchronizavimo kliūtis ir apkrovos balansavimą. Daugiau informacijos apie gaminį rasite „Intel Trace Analyzer and Collector“ produkto puslapyje.
Atsisiųskite „Intel Trace Analyzer and Collector“.
- kaip Intel® oneAPI HPC Toolkit dalis
- kaip atskiras įrankis
Būtinos sąlygos
- Prieš paleisdami „Intel Trace Analyzer and Collector“ įsitikinkite, kad įdiegėte naujausią „Intel® MPI Library“ ir „Intel® oneAPI DPC++/C++ Compiler“ arba „Intel® Fortran Compiler“.
- Taip nustatomi būtini aplinkos kintamieji kompiliatoriams, „Intel MPI Library“ ir „Intel Trace Analyzer and Collector“, ir jūs esate pasirengę atsekti savo programas.
- Norėdami gauti daugiau informacijos, žr.: „Intel® oneAPI HPC Toolkit“ sistemos reikalavimai.
Supraskite darbo eigą
- Sekite savo programą
- Išanalizuokite aktyviausias MPI funkcijas
- Nustatykite problemines sąveikas
- Pagerinkite programos našumą pakeisdami problemų sukeliančią funkciją
Sekite savo MPI programą
Sukurti pėdsaką file rinkti įvykių žurnalus toliau nurodytai programos veikimo analizei.
- Nustatykite aplinką Intel® Trace Analyzer ir Collector paleisti paleisdami setvars scenarijų iš oneAPI diegimo direktoriaus
PASTABA
Pagal numatytuosius nustatymus „Intel Trace Analyzer and Collector“ yra įdiegtas /opt/intel/oneapi/itac, skirtas Linux* OS ir programai Files (x86)\Intel\oneAPI\itac\naujausia, skirta Windows* OS.
„Linux“ sistemoje:
$ šaltinis /opt/intel/oneapi/setvars.sh
Sistemoje Windows:
„C:\Programa Files (x86)\Intel\oneAPI\setvars.bat“ - Paleiskite savo MPI programą ir sugeneruokite pėdsaką naudodami parinktį -trace.
„Linux“ sistemoje:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
Sistemoje Windows:
Sukompiliuokite programą ir surinkite pėdsaką.
Intel oneAPI DPC++/C++ kompiliatoriui paleiskite:
> mpiicc -trace poisson_sendrecv.single.c
„Intel Fortran Compiler“ paleiskite:
> mpiifort -trace poisson_sendrecv.single.f
Šis buvęsample sukuria pėdsaką (stf*) asample poisson_sendrcv.single MPI programa - Atidarykite sugeneruotą .stf file su Intel Trace Analyzer su Intel Trace Analyzer ir Collector.
„Linux“ sistemoje:
$ traceanalyzer ./ poisson_sendrecv.single.stf
Sistemoje Windows:
traceanalyzer poisson_sendrecv.single.stf
PASTABA
Bandymo tikslais galite atsisiųsti iš anksto surinktą pėdsaką file poisson_sendrecv.single.stf šiame dokumente naudotam poisson ir atidarykite jį naudodami Intel Trace Analyzer and Collector.
.stf file atsidaro santraukos puslapyje view, kurioje pateikiama bendra informacija apie programos našumą:PASTABA Daugiau informacijos apie Intel Trace Analyzer ir Collector funkcijas rasite Sužinokite daugiau.
Išanalizuokite aktyviausias MPI funkcijas
Išanalizuokite MPI programos elgseną, suraskite kliūtis ir nustatykite serializavimą, kad rastumėte būdus, kaip pagerinti programos našumą.
- Suvestinės puslapyje atidarykite įvykio laiko juostą view spustelėdami Tęsti > Diagramos > Įvykio laiko juosta, kad galėtumėte išsamiai analizuoti populiariausias MPI funkcijas.
Diagramoje rodoma atskira proceso veikla laikui bėgant.
Taikymo darbas yra kartotinis, kai kiekvieną iteraciją sudaro skaičiavimo dalis ir MPI komunikacijos. - Nustatykite vieną iteraciją, į kurią norite sufokusuoti, ir priartinkite ją, vilkdami pelės žymeklį per reikiamą laiko intervalą:
Pėdsakas view rodoma sekcija, kurią pasirinkote. Įvykių laiko juostos diagramoje rodomi įvykiai, kurie buvo aktyvūs pasirinktos iteracijos metu.
- Horizontalios juostos vaizduoja procesus su funkcijomis, vadinamomis šiuose procesuose.
- Juodos linijos rodo pranešimus, siunčiamus tarp procesų. Šios linijos jungia siuntimo ir priėmimo procesus.
- Mėlynos linijos žymi kolektyvines operacijas, pvz., transliavimo arba mažinimo operacijas.
- Perjunkite į „Flat Pro“.file skirtuką (A), kad galėtumėte atidžiau pažvelgti į funkcijas, vykdomas jūsų (įvykio laiko juostoje pasirinktu) laiko tašku.
- Išgrupuokite MPI funkcijas, kad galėtumėte analizuoti MPI proceso veiklą jūsų programoje.
Norėdami tai padaryti, „Flat Pro“ dešiniuoju pelės mygtuku spustelėkite Visi procesai > Grupės MPI ( B).file ir pasirinkite UngroupMPI. Ši operacija atskleidžia atskirus MPI skambučius. - Iteracijos pradžioje analizuokite procesus, bendraujančius su savo tiesioginiais kaimynais, naudodami MPI_Sendrecv. Pavyzdžiui,ampLe:
- a. sample, MPI_Sendrecv duomenų mainai turi kliūtį: procesas nesikeičia duomenimis su kitu kaimynu, kol nesikeičia keitimasis su ankstesniuoju. Įvykių tvarkaraščiai view rodo šią kliūtį kaip laiptus.
- b. MPI_Allreduce iteracijos pabaigoje iš naujo sinchronizuoja visus procesus; Štai kodėl šis blokas turi atvirkštinę laiptų išvaizdą.
- Nustatykite serializavimą naudodami Function Profile ir Message Profile views.
- a. Tuo pačiu metu atidarykite diagramas:
Function Profile diagramą, atidarykite skirtuką Apkrovos balansas. - Eikite į diagramos meniu, kad atidarytumėte „Message Pro“.file.
- b. Skirtuke Apkrovos balansas išplėskite MPI_Sendrecv ir MPI_Allreduce. Apkrovos balansavimas rodo, kad laikas, praleistas MPI_Sendrecv, didėja kartu su proceso skaičiumi, o MPI_Allreduce laikas mažėja.
- c. Išnagrinėkite „Message Pro“.file Diagrama žemyn iki apatinio dešiniojo kampo.
Blokų spalvų kodavimas rodo, kad pranešimams, keliaujantiems iš aukštesnio rango į žemesnį, reikia proporcingai daugiau laiko, o pranešimams, keliaujantiems iš žemesnio rango į aukštesnį, atskleidžiamas silpnas lyginis ir nelyginis modelis:
- a. Tuo pačiu metu atidarykite diagramas:
Lyginamosios analizės rezultatai rodo, kad programoje nėra sudėtingų mainų modelių, keitimasis vykdomas tik su kaimyniniais procesais. Informacija bus labai svarbi norint pagerinti programos našumą keičiant komunikacijos veiksmą, siekiant optimizuoti programos komunikacijos modelį.
Nustatykite nesubalansuotą ryšį
Stebėkite savo paraišką idealiomis aplinkybėmis ir palyginkite pradinį pėdsaką file su idealizuotu, kad būtų galima išskirti problemines sąveikas.
- Sukurkite idealizuotą file:
- a. Pasirinkite Išplėstinė > Idealizavimas arba spustelėkite
(Idealizavimo) įrankių juostos mygtukas.
- b. Idealizavimo dialogo lange patikrinkite idealizacijos parametrus (ideal trace file pavadinimas ir konversijos laiko intervalas).
- c. Norėdami idealizuoti savo pėdsaką, spustelėkite Pradėti.
- a. Pasirinkite Išplėstinė > Idealizavimas arba spustelėkite
- Palyginkite pradinį pėdsaką su idealizuotu pėdsaku:
- a. Pasirinkite Išplėstinė > Disbalanso diagrama arba spustelėkite
(Disbalanso diagrama) įrankių juostos mygtukas.
- b. Dialogo lange Disbalanso diagrama spustelėkite Atidaryti kitą File mygtuką, eikite į idealizuotą pėdsaką ir pasirinkite jį.
- c. Disbalanso diagramos lange spustelėkite mygtuką Total Mode ir pasirinkite Breakdown Mode.
- a. Pasirinkite Išplėstinė > Disbalanso diagrama arba spustelėkite
Matote, kad MPI_Sendrecv yra daugiausiai laiko reikalaujanti funkcija. Disbalanso svoris rodomas
šviesios spalvos ir sudaro apie 10 % funkcijai MPI_Sendrecv. Tai laikas, kurį procesai praleidžia laukdami vienas kito.
Pagerinkite programos našumą pakeisdami ryšius
- Pagerinkite MPI programos našumą pakeisdami blokavimą į neblokuojančius ryšius.
Savo kode nuoseklųjį MPI_Sendrcv pakeiskite neblokuojančiu ryšiu: MPI_Isend ir MPI_Irecv. Pavyzdžiui,ample: Originalus kodo fragmentas:
// sienų mainai
void Exchange(para* p, grid* gr){
int i,j;
MPI_Būsena_100, Būsena_200, Būsena_300, Būsena_400;
// nusiųsti pirmąją eilutę
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,
&būsena_100);
// išsiųsti paskutinę eilutę
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);
Naudokite „Intel Trace Analyzer“ palyginimą view palyginti nuosekliąją paraišką su pataisyta
// nukopijuokite kairįjį stulpelį į tmp masyvus
if(gr->left != MPI_PROC_NULL){
gr->x_naujas[i][gr->lcol+1] = dešinysis_stulpelis[i]; dešinysis_stulpelis[i] = gr->x_naujas[i][gr->lcol];
// siųsk teisingai
MPI_Send(right_col, gr->lrow+2, MPI_DOUBLE, gr->right, 400, MPI_COMM_WORLD); }
if(gr->left != 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_naujas[i][0] = left_col[i];
}
}
Atnaujintas kodo fragmentas
MPI_Request req[7];
// nusiųsti pirmąją eilutę
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_Waital(7, req, MPI_STATUSES_IGNORE);
Ištaisius vieną patikslintos programos iteraciją, ji atrodys taip, kaip pvzampLe: - Naudokite „Intel Trace Analyzer“ palyginimą view nuosekliąją paraišką palyginti su pataisyta. Palyginkite du pėdsakus naudodami palyginimą View, vyksta į View > Palyginti. Palyginimas View atrodo panašiai kaip:
Palyginime View, matote, kad neblokuojančio ryšio naudojimas padeda pašalinti serializavimą ir sutrumpinti procesų komunikacijos laiką.
PASTABA Norėdami gauti daugiau informacijos apie programos veikimą mazgo lygiu, žr. atitinkamų įrankių dokumentaciją: Intel® VTune™ Profiler MPI kodo analizė ir Intel® MPI programų analizė naudojant Intel® Advisor.
Sužinokite daugiau
Norėdami gauti daugiau informacijos apie „Intel Trace Analyzer“ ir „Collector“, peržiūrėkite šiuos išteklius.
Pranešimai ir atsakomybės apribojimai
- „Intel“ technologijoms gali reikėti aktyvuotos aparatinės, programinės įrangos ar paslaugų.
- Joks gaminys ar komponentas negali būti visiškai saugūs.
- Jūsų išlaidos ir rezultatai gali skirtis.
- © Intel Corporation. „Intel“, „Intel“ logotipas ir kiti „Intel“ ženklai yra „Intel Corporation“ arba jos dukterinių įmonių prekių ženklai. Kiti pavadinimai ir prekės ženklai gali būti laikomi kitų nuosavybe.
- Šis dokumentas nesuteikia jokios intelektinės nuosavybės teisių licencijos (aiškios ar numanomos, užkertant kelią ar kitaip).
- Aprašytuose gaminiuose gali būti dizaino defektų arba klaidų, vadinamų errata, dėl kurių gaminys gali nukrypti nuo paskelbtų specifikacijų. Esamos charakteristikos klaidos yra prieinamos pagal pageidavimą.
- „Intel“ atsisako visų tiesioginių ir numanomų garantijų, įskaitant, neapsiribojant, numanomas tinkamumo parduoti, tinkamumo tam tikram tikslui ir nepažeidimo garantijas, taip pat bet kokių garantijų, kylančių dėl veiklos, prekybos eigos ar naudojimo prekyboje.
Dokumentai / Ištekliai
![]() |
intel Pradėkite naudodami „Intel Trace Analyzer“ ir „Collector“. [pdfVartotojo vadovas Pradėkite su „Intel Trace Analyzer“ ir „Collector“, „Intel“, „Trace Analyzer“ ir „Collector“, „Collector“ |