Filloni me Intel Trace Analyzer dhe Collector
Filloni me Intel® Trace Analyzer dhe Collector
Përdorni këtë dokument Fillimi dhe një gjurmë të mbledhur paraprakisht file për të kaluar nëpër një analizë bazë të performancës MPI me Intel® Trace Analyzer dhe Collector.
Intel Trace Analyzer and Collector ndihmon në eksplorimin e efikasitetit të përdorimit të ndërfaqes së kalimit të mesazheve (MPI) dhe identifikimin e pikave të komunikimit, pengesat e sinkronizimit dhe balancimin e ngarkesës. Për më shumë informacion rreth produktit, shihni faqen e produktit të Intel Trace Analyzer and Collector.
Shkarkoni Intel Trace Analyzer and Collector
- si pjesë e Intel® OneAPI HPC Toolkit
- si një mjet i pavarur
Parakushtet
- Përpara se të përdorni Intel Trace Analyzer and Collector, sigurohuni që të keni instaluar Intel® MPI Library dhe Intel® oneAPI DPC++/C++ Compiler ose Intel® Fortran Compiler.
- Kjo vendos variablat e kërkuara të mjedisit për përpiluesit, Bibliotekën Intel MPI dhe Intel Trace Analyzer and Collector, dhe ju jeni gati të gjurmoni aplikacionet tuaja.
- Për më shumë informacion, shihni: Kërkesat e Sistemit të Intel® OneAPI HPC Toolkit.
Kuptoni rrjedhën e punës
- Gjurmoni aplikacionin tuaj
- Analizoni funksionet më aktive MPI
- Identifikoni ndërveprimet problematike
- Përmirësoni performancën e aplikacionit tuaj duke zëvendësuar funksionin që shkakton problem
Gjurmoni aplikacionin tuaj MPI
Gjeneroni një gjurmë file për të mbledhur regjistrat e ngjarjeve për analizën e mëposhtme të sjelljes së aplikacionit.
- Konfiguro mjedisin për lëshimin e Intel® Trace Analyzer dhe Collector duke ekzekutuar skriptin setvars nga drejtori i instalimit të oneAPI
SHËNIM
Si parazgjedhje, Intel Trace Analyzer and Collector është instaluar në /opt/intel/oneapi/itac për Linux* OS dhe në Program Files (x86)\Intel\oneAPI\itac\më e fundit për Windows* OS.
Në Linux:
burimi $ /opt/intel/oneapi/setvars.sh
Në Windows:
“C:\Programi Files (x86)\Intel\oneAPI\setvars.bat" - Drejtoni aplikacionin tuaj MPI dhe gjeneroni një gjurmë me opsionin -trace.
Në Linux:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
Në Windows:
Përpiloni aplikacionin dhe mblidhni gjurmët.
Për përpiluesin Intel oneAPI DPC++/C++, ekzekutoni:
> mpiicc -gjurmë poisson_sendrecv.single.c
Për përpiluesin Intel Fortran, ekzekutoni:
> mpiifort -gjurmë poisson_sendrecv.single.f
Ky ishample gjeneron një gjurmë (stf*) për asample poisson_sendrcv. aplikacion i vetëm MPI - Hapni .stf të gjeneruar file me Intel Trace Analyzer me Intel Trace Analyzer dhe Collector.
Në Linux:
$ traceanalyzer ./ poisson_sendrecv.single.stf
Në Windows:
traceanalyzer poisson_sendrecv.single.stf
SHËNIM
Për qëllime testimi, mund të shkarkoni një gjurmë të grumbulluar paraprakisht file poisson_sendrecv.single.stf për poisson-in e përdorur në këtë dokument dhe hapeni atë me Intel Trace Analyzer dhe Collector.
.stf file hapet në faqen përmbledhëse view, i cili paraqet informacion të përgjithshëm në lidhje me performancën e aplikacionit tuaj:SHËNIM Për më shumë informacion në lidhje me funksionalitetin e Intel Trace Analyzer dhe Collector, shihni Mësoni më shumë.
Analizoni funksionet më aktive të MPI
Analizoni sjelljen e një aplikacioni MPI, gjeni pengesat dhe identifikoni serializimin për të gjetur mënyra për të përmirësuar performancën e aplikacionit.
- Nga faqja e Përmbledhjes hapni Afatin kohor të ngjarjes view duke klikuar Vazhdo > Grafikët > Kohëzgjatja e ngjarjeve për analizë të thellë të funksioneve kryesore MPI.
Grafiku shfaq aktivitetet individuale të procesit me kalimin e kohës.
Puna e aplikimit është përsëritëse, ku çdo përsëritje përbëhet nga një pjesë llogaritëse dhe komunikimet MPI. - Identifikoni një përsëritje të vetme për t'u fokusuar dhe zmadhuar në të duke zvarritur miun mbi intervalin e kërkuar kohor:
Gjurmën view tregon seksionin brenda gjurmës që keni zgjedhur. Grafiku i linjës kohore të ngjarjeve tregon ngjarjet që ishin aktive gjatë përsëritjes së zgjedhur.
- Shiritat horizontal paraqesin proceset me funksionet e thirrura në këto procese.
- Vijat e zeza tregojnë mesazhet e dërguara ndërmjet proceseve. Këto linja lidhin proceset e dërgimit dhe marrjes.
- Linjat blu përfaqësojnë operacione kolektive, të tilla si operacionet e transmetimit ose të reduktimit.
- Kalo në Flat Profile tab (A) për të parë më nga afër funksionet që ekzekutohen në pikën kohore që keni zgjedhur në "Kronologjinë e ngjarjeve".
- Zhgruponi funksionet MPI për të analizuar aktivitetin e procesit MPI në aplikacionin tuaj.
Për ta bërë këtë, kliko me të djathtën mbi Të gjitha proceset > Grupi MPI (B) në Flat Profile dhe zgjidhni UngroupMPI. Ky operacion ekspozon thirrjet individuale MPI. - Analizoni proceset që komunikojnë me fqinjët e tyre të drejtpërdrejtë duke përdorur MPI_Sendrecv në fillim të përsëritjes. Për shembullampe:
- a. Në shekampLe, shkëmbimi i të dhënave MPI_Sendrecv ka një pengesë: procesi nuk shkëmben të dhëna me fqinjin e tij të ardhshëm derisa të përfundojë shkëmbimi me atë të mëparshëm. Afatet kohore të ngjarjeve view e shfaq këtë pengesë si një shkallë.
- b. MPI_Allreduce në fund të përsëritjes risinkronizon të gjitha proceset; prandaj ky bllok ka pamjen e kundërt të shkallëve.
- Identifikoni serializimin duke përdorur funksionin Profile dhe Message Profile views.
- a. Hapni grafikët në të njëjtën kohë:
Në funksionin Profile grafiku, hapni skedën Load Balance. - Shkoni te menyja Charts për të hapur një Message Profile.
- b. Në skedën Load Balance, zgjeroni MPI_Sendrecv dhe MPI_Allreduce. Balancimi i ngarkesës tregon se koha e kaluar në MPI_Sendrecv rritet me numrin e procesit, ndërsa koha për MPI_Allreduce zvogëlohet.
- c. Ekzaminoni Message Profile Grafikoni poshtë në këndin e poshtëm të djathtë.
Kodimi i ngjyrave të blloqeve tregon se mesazhet që udhëtojnë nga një gradë më e lartë në një gradë më të ulët kanë nevojë proporcionalisht më shumë kohë ndërsa mesazhet që udhëtojnë nga një gradë më e ulët në një renditje më të lartë zbulojnë një lloj modeli të dobët çift-tek:
- a. Hapni grafikët në të njëjtën kohë:
Rezultatet e analizës krahasuese tregojnë se nuk ka modele komplekse shkëmbimi në aplikim, shkëmbimi kryhet vetëm me procese fqinje. Informacioni do të jetë thelbësor për të përmirësuar performancën e aplikacionit tuaj duke ndryshuar hapin e komunikimeve për të optimizuar modelin e komunikimit të aplikacionit.
Identifikoni komunikimet e çekuilibruara
Shikoni aplikacionin tuaj në rrethana ideale dhe krahasoni gjurmën origjinale file me atë të idealizuar për të izoluar ndërveprimet problematike.
- Krijo një të idealizuar file:
- a. Zgjidhni Avancuar > Idealizimi ose klikoni
Butoni i shiritit të veglave (Idealizimi).
- b. Kontrolloni parametrat e idealizimit në kutinë e dialogut Idealizimi (gjurmë ideale file emri dhe diapazoni kohor për konvertim).
- c. Klikoni Start për të idealizuar gjurmën tuaj.
- a. Zgjidhni Avancuar > Idealizimi ose klikoni
- Krahasoni gjurmën origjinale me gjurmën e idealizuar:
- a. Zgjidhni Avancuar > Diagrami i çekuilibrit ose klikoni
Butoni i shiritit të veglave (Diagrami i çekuilibrit).
- b. Në kutinë e dialogut Diagrami i pabarazisë, klikoni Hap një tjetër File butonin, lundroni te gjurma e idealizuar dhe zgjidhni atë.
- c. Në dritaren e Diagramit të Çekuilibrit, klikoni butonin Total Mode dhe zgjidhni Breakdown Mode.
- a. Zgjidhni Avancuar > Diagrami i çekuilibrit ose klikoni
Mund të shihni që MPI_Sendrecv është funksioni që kërkon më shumë kohë. Pesha e çekuilibrit shfaqet në
ngjyra të lehta dhe përbën rreth 10% për funksionin MPI_Sendrecv. Kjo është koha që proceset kalojnë duke pritur njëri-tjetrin.
Përmirësoni performancën e aplikacionit tuaj duke ndryshuar komunikimet
- Përmirësoni performancën e aplikacionit MPI duke ndryshuar bllokimin në komunikime jo-bllokuese.
Në kodin tuaj zëvendësoni serialin MPI_Sendrcv me komunikim jo-bllokues: MPI_Isend dhe MPI_Irecv. Për shembullample: Pjesë e kodit origjinal:
// shkëmbim kufitar
shkëmbim i zbrazët (para* p, rrjet* gr){
int i,j;
MPI_Statusi_status_100, status_200, status_300, status_400;
// dërgoni rreshtin e parë
MPI_Send(gr->x_i ri[1], gr->lcol+2, MPI_DOUBLE, gr->poshtë, 100, MPI_COMM_WORLD); MPI_Recv(gr->x_i ri[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->lart, 100, MPI_COMM_WORLD,
&status_100);
// dërgo rreshtin e fundit
MPI_Send(gr->x_i ri[gr->lrow], gr->lcol+2, MPI_DOUBLE, gr->lart, 200, MPI_COMM_WORLD);
MPI_Recv(gr->x_i ri[0], gr->lcol+2, MPI_DOUBLE, gr->poshtë, 200, MPI_COMM_WORLD, &status_200);
Përdorni krahasimin e analizuesit të gjurmëve Intel view për të krahasuar aplikacionin e serializuar me atë të rishikuar
// kopjoni kolonën e majtë në vargje tmp
if(gr->majtas != MPI_PROC_NULL){
gr->x_i ri[i][gr->lcol+1] = e drejta_col[i]; drejt_col[i] = gr->x_i ri[i][gr->lcol];
// dërgo djathtas
MPI_Send(djathtas_col, gr->lrow+2, MPI_DOUBLE, gr->djathtas, 400, MPI_COMM_WORLD); }
if(gr->majtas != MPI_PROC_NULL)
{
MPI_Recv(left_col, gr->lrow+2, MPI_DOUBLE, gr->majtas, 400, MPI_COMM_WORLD,&status_400); for(i=0; i< gr->lrow+2; i++
{
gr->x_i ri[i][0] = majta_col[i];
}
}
Copë kodi u përditësua
Kërkesa MPI_Kërkesë[7];
// dërgoni rreshtin e parë
MPI_Isend(gr->x_i ri[1], gr->lcol+2, MPI_DOUBLE, gr->poshtë, 100, MPI_COMM_WORLD, &req[0]);
MPI_Irecv(gr->x_i ri[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->lart, 100, MPI_COMM_WORLD, &req[1]);
…..
MPI_Waitall(7, kërkesa, MPI_STATUSES_IGNORE);
Pasi të korrigjohet, përsëritja e vetme e aplikacionit të rishikuar do të duket si shembulli i mëposhtëmampe: - Përdorni krahasimin e analizuesit të gjurmëve Intel view për të krahasuar aplikacionin e serializuar me atë të rishikuar. Krahasoni dy gjurmë me ndihmën e Krahasimit View, duke shkuar në View > Krahaso. Krahasimi View duket e ngjashme me:
Në Krahasimin View, mund të shihni që përdorimi i komunikimit pa bllokim ndihmon në heqjen e serializimit dhe uljen e kohës së komunikimit të proceseve.
SHËNIM Për më shumë informacion në lidhje me performancën e aplikacionit tuaj në nivel nyje, shihni dokumentacionin për mjetet përkatëse: Intel® VTune™ Profiler Analiza e kodit MPI dhe analizimi i aplikacioneve Intel® MPI duke përdorur Intel® Advisor.
Mësoni më shumë
Eksploroni burimet e mëposhtme për më shumë informacion rreth Intel Trace Analyzer dhe Collector.
Njoftimet dhe mohimet
- Teknologjitë Intel mund të kërkojnë aktivizimin e harduerit, softuerëve ose shërbimeve.
- Asnjë produkt apo komponent nuk mund të jetë absolutisht i sigurt.
- Kostot dhe rezultatet tuaja mund të ndryshojnë.
- © Intel Corporation. Intel, logoja e Intel dhe markat e tjera Intel janë marka tregtare të Intel Corporation ose filialeve të saj. Emra dhe marka të tjera mund të pretendohen si pronë e të tjerëve.
- Asnjë licencë (e shprehur ose e nënkuptuar, nga estoppel ose ndryshe) për asnjë të drejtë të pronësisë intelektuale nuk jepet nga ky dokument.
- Produktet e përshkruara mund të përmbajnë defekte të dizajnit ose gabime të njohura si gabime të cilat mund të bëjnë që produkti të devijojë nga specifikimet e publikuara. Gabimet aktuale të karakterizuara janë në dispozicion sipas kërkesës.
- Intel heq dorë nga të gjitha garancitë e shprehura dhe të nënkuptuara, duke përfshirë, pa kufizim, garancitë e nënkuptuara të tregtueshmërisë, përshtatshmërisë për një qëllim të caktuar dhe mos-shkeljes, si dhe çdo garanci që rrjedh nga rrjedha e performancës, kursi i marrëveshjes ose përdorimi në tregti.
Dokumentet / Burimet
![]() |
intel Filloni me Intel Trace Analyzer dhe Collector [pdfUdhëzuesi i përdoruesit Filloni me Intel Trace Analyzer and Collector, Filloni me Intel, Trace Analyzer and Collector, Collector |