Sāciet darbu ar Intel Trace Analyzer un Collector
Sāciet darbu ar Intel® Trace Analyzer un Collector
Izmantojiet šo darba sākšanas dokumentu un iepriekš savākto izsekojumu file lai izietu pamata MPI veiktspējas analīzi, izmantojot Intel® Trace Analyzer un Collector.
Intel Trace Analyzer un Collector palīdz izpētīt ziņojumu pārsūtīšanas saskarnes (MPI) lietošanas efektivitāti un identificēt sakaru tīklājus, sinhronizācijas vājās vietas un slodzes līdzsvarošanu. Papildinformāciju par produktu skatiet Intel Trace Analyzer un Collector produkta lapā.
Lejupielādējiet Intel Trace Analyzer un Collector
- kā daļa no Intel® oneAPI HPC Toolkit
- kā atsevišķu rīku
Priekšnoteikumi
- Pirms Intel Trace Analyzer un Collector palaišanas pārliecinieties, vai esat instalējis jaunāko Intel® MPI bibliotēku un Intel® oneAPI DPC++/C++ kompilatoru vai Intel® Fortran kompilatoru.
- Tādējādi tiek iestatīti nepieciešamie vides mainīgie kompilatoriem, Intel MPI bibliotēkai un Intel Trace Analyzer and Collector, un jūs esat gatavs izsekot savām lietojumprogrammām.
- Lai iegūtu papildinformāciju, skatiet: Intel® oneAPI HPC Toolkit sistēmas prasības.
Izprotiet darbplūsmu
- Izsekojiet savu pieteikumu
- Analizējiet aktīvākās MPI funkcijas
- Identificējiet problemātiskās mijiedarbības
- Uzlabojiet lietojumprogrammas veiktspēju, nomainot problēmu izraisošo funkciju
Izsekojiet savu MPI lietojumprogrammu
Izveidojiet izsekojumu file lai apkopotu notikumu žurnālus šādai lietojumprogrammu uzvedības analīzei.
- Iestatiet vidi Intel® Trace Analyzer un Collector palaišanai, palaižot setvars skriptu no oneAPI instalācijas direktora
PIEZĪME
Pēc noklusējuma Intel Trace Analyzer un Collector ir instalēts mapē /opt/intel/oneapi/itac operētājsistēmai Linux* un programmai. Files (x86)\Intel\oneAPI\itac\jaunākā operētājsistēmai Windows* OS.
Operētājsistēmā Linux:
$ avots /opt/intel/oneapi/setvars.sh
Operētājsistēmā Windows:
“C:\Programma Files (x86)\Intel\oneAPI\setvars.bat” - Palaidiet savu MPI lietojumprogrammu un ģenerējiet izsekošanu, izmantojot opciju -trace.
Operētājsistēmā Linux:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
Operētājsistēmā Windows:
Apkopojiet lietotni un savāciet pēdas.
Intel oneAPI DPC++/C++ kompilatoram palaidiet:
> mpiicc -trace poisson_sendrecv.single.c
Intel Fortran kompilatoram palaidiet:
> mpiifort -trace poisson_sendrecv.single.f
Šis bijušaisample ģenerē izsekošanu (stf*) asample poisson_sendrcv.single MPI lietojumprogramma - Atveriet ģenerēto .stf file ar Intel Trace Analyzer ar Intel Trace Analyzer un Collector.
Operētājsistēmā Linux:
$ traceanalyzer ./ poisson_sendrecv.single.stf
Operētājsistēmā Windows:
traceanalyzer poisson_sendrecv.single.stf
PIEZĪME
Pārbaudes nolūkos varat lejupielādēt iepriekš savākto izsekojumu file poisson_sendrecv.single.stf šajā dokumentā izmantotajam poisson un atveriet to, izmantojot Intel Trace Analyzer un Collector.
.stf file tiek atvērts kopsavilkuma lapā view, kas atspoguļo vispārīgu informāciju par jūsu lietojumprogrammas veiktspēju:PIEZĪME Lai iegūtu papildinformāciju par Intel Trace Analyzer un Collector funkcionalitāti, skatiet Uzziniet vairāk.
Analizējiet aktīvākās MPI funkcijas
Analizējiet MPI lietojumprogrammas uzvedību, atrodiet vājās vietas un identificējiet serializāciju, lai atrastu veidus, kā uzlabot lietojumprogrammas veiktspēju.
- Kopsavilkuma lapā atveriet notikumu laika skalu view noklikšķinot uz Turpināt > Diagrammas > Notikuma laika skala, lai iegūtu detalizētu galveno MPI funkciju analīzi.
Diagrammā ir parādītas atsevišķas procesa aktivitātes laika gaitā.
Lietojumprogrammu darbs ir iteratīvs, kur katra iterācija sastāv no skaitļošanas daļas un MPI sakariem. - Atrodiet vienu iterāciju, uz kuru fokusēties, un tuviniet to, velkot peli vajadzīgajā laika intervālā:
Izsekot view parāda sadaļu jūsu atlasītajā trasē. Notikumu laika skalas diagramma parāda notikumus, kas bija aktīvi atlasītās iterācijas laikā.
- Horizontālās joslas attēlo procesus ar šajos procesos izsauktajām funkcijām.
- Melnas līnijas norāda ziņojumus, kas nosūtīti starp procesiem. Šīs līnijas savieno nosūtīšanas un saņemšanas procesus.
- Zilas līnijas apzīmē kolektīvas darbības, piemēram, apraides vai samazināšanas darbības.
- Pārslēdzieties uz Flat Profile cilne (A), lai tuvāk apskatītu funkcijas, kas tiek izpildītas jūsu laika punktā (kas atlasīts notikumu laika skalā.
- Atgrupējiet MPI funkcijas, lai analizētu MPI procesa darbību savā lietojumprogrammā.
Lai to izdarītu, programmā Flat Pro ar peles labo pogu noklikšķiniet uz Visi procesi > Grupas MPI (B).file un izvēlieties UngroupMPI. Šī darbība atklāj atsevišķus MPI zvanus. - Analizējiet procesus, kas sazinās ar saviem tiešajiem kaimiņiem, izmantojot MPI_Sendrecv iterācijas sākumā. Piemēram,ample:
- a. sample, MPI_Sendrecv datu apmaiņai ir vājā vieta: process neapmainās ar datiem ar savu nākamo kaimiņu, kamēr apmaiņa ar iepriekšējo nav pabeigta. Pasākumu laika grafiki view parāda šo sašaurinājumu kā kāpnes.
- b. MPI_Allreduce iterācijas beigās atkārtoti sinhronizē visus procesus; tāpēc šim blokam ir reversās kāpņu telpas izskats.
- Identificējiet serializāciju, izmantojot funkciju Function Profile un Message Profile views.
- a. Vienlaikus atveriet diagrammas:
Programmā Function Profile diagrammu, atveriet cilni Load Balance. - Atveriet izvēlni Diagrammas, lai atvērtu Message Profile.
- b. Cilnē Load Balance izvērsiet MPI_Sendrecv un MPI_Allreduce. Slodzes līdzsvarošana norāda, ka MPI_Sendrecv pavadītais laiks palielinās līdz ar procesa numuru, savukārt MPI_Allreduce laiks samazinās.
- c. Pārbaudiet Message Profile Diagramma apakšējā labajā stūrī.
Bloku krāsu kodējums norāda, ka ziņojumiem, kas pāriet no augstāka ranga uz zemāku rangu, ir nepieciešams proporcionāli vairāk laika, savukārt ziņojumiem, kas pārvietojas no zemāka ranga uz augstāku, atklāj vāju pāra-nepāra modeli:
- a. Vienlaikus atveriet diagrammas:
Salīdzinošās analīzes rezultāti liecina, ka lietojumprogrammā nav sarežģītu apmaiņas modeļu, apmaiņa tiek veikta tikai ar blakus procesiem. Informācija būs būtiska, lai uzlabotu lietojumprogrammas veiktspēju, mainot saziņas darbību, lai optimizētu lietojumprogrammas komunikācijas modeli.
Nosakiet nelīdzsvarotus sakarus
Skatieties savu pieteikumu ideālos apstākļos un salīdziniet sākotnējo izsekojumu file ar idealizēto, lai izolētu problemātiskas mijiedarbības.
- Izveidojiet idealizētu file:
- a. Atlasiet Papildu > Idealizācija vai noklikšķiniet uz
(Idealizācijas) rīkjoslas poga.
- b. Pārbaudiet idealizācijas parametrus dialoglodziņā Idealizācija (ideal trace file nosaukums un konversijas laika diapazons).
- c. Noklikšķiniet uz Sākt, lai idealizētu savu izsekošanu.
- a. Atlasiet Papildu > Idealizācija vai noklikšķiniet uz
- Salīdziniet sākotnējo izsekojumu ar idealizēto trasi:
- a. Atlasiet Papildu > Nelīdzsvarotības diagramma vai noklikšķiniet uz
(Nelīdzsvarotības diagramma) rīkjoslas poga.
- b. Dialoglodziņā Nelīdzsvarotības diagramma noklikšķiniet uz Atvērt citu File pogu, dodieties uz idealizēto trasējumu un atlasiet to.
- c. Nelīdzsvarotības diagrammas logā noklikšķiniet uz pogas Kopējais režīms un atlasiet Sadalījuma režīms.
- a. Atlasiet Papildu > Nelīdzsvarotības diagramma vai noklikšķiniet uz
Var redzēt, ka MPI_Sendrecv ir laikietilpīgākā funkcija. Nelīdzsvarotības svars tiek parādīts
gaišā krāsā un satur apmēram 10% funkcijai MPI_Sendrecv. Tas ir laiks, ko procesi pavada, gaidot viens otru.
Uzlabojiet savas lietojumprogrammas veiktspēju, mainot sakarus
- Uzlabojiet MPI lietojumprogrammas veiktspēju, mainot bloķēšanu uz nebloķējošu saziņu.
Savā kodā aizstājiet seriālo MPI_Sendrcv ar nebloķējošu saziņu: MPI_Isend un MPI_Irecv. Piemēram,ample: Oriģinālais koda fragments:
// robežapmaiņa
void Exchange(para* p, grid* gr){
int i,j;
MPI_Statuss statuss_100, statuss_200, statuss_300, statuss_400;
// nosūtīt uz leju pirmo rindu
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,
&statuss_100);
// nosūtīt pēdējo rindu
MPI_Sūtīt(gr->x_jauns[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);
Izmantojiet Intel Trace Analyzer salīdzinājumu view salīdzināt sērijveida pieteikumu ar pārskatīto
// kopēt kreiso kolonnu tmp masīvos
if(gr->left != MPI_PROC_NULL){
gr->x_jauns[i][gr->lcol+1] = labā_kola[i]; labā_kola[i] = gr->x_jauns[i][gr->lcol];
// nosūtīt pa labi
MPI_Send(labā_kola, gr->lrow+2, MPI_DOUBLE, gr->labais, 400, MPI_COMM_WORLD); }
if(gr->left != MPI_PROC_NULL)
{
MPI_Recv(kreisā_kola, gr->lrow+2, MPI_DOUBLE, gr->pa kreisi, 400, MPI_COMM_WORLD,&statuss_400); for(i=0; i< gr->lrow+2; i++
{
gr->x_jauns[i][0] = kreisā_kola[i];
}
}
Atjaunināts koda fragments
MPI_Request req[7];
// nosūtīt uz leju pirmo rindu
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);
Kad tas būs labots, pārskatītās lietojumprogrammas viena iterācija izskatīsies šādiample: - Izmantojiet Intel Trace Analyzer salīdzinājumu view lai salīdzinātu sērijveida pieteikumu ar pārskatīto. Salīdziniet divas pēdas, izmantojot salīdzinājumu View, dodas uz View > Salīdziniet. Salīdzinājums View izskatās līdzīgi:
Salīdzinājumā View, var redzēt, ka nebloķējošas komunikācijas izmantošana palīdz novērst serializāciju un samazina procesu komunikācijas laiku.
PIEZĪME Papildinformāciju par lietojumprogrammas veiktspēju mezgla līmenī skatiet attiecīgo rīku dokumentācijā: Intel® VTune™ Pro.filer MPI koda analīze un Intel® MPI lietojumprogrammu analīze, izmantojot Intel® Advisor.
Uzziniet vairāk
Izpētiet tālāk norādītos resursus, lai iegūtu papildinformāciju par Intel Trace Analyzer un Collector.
Paziņojumi un atrunas
- Intel tehnoloģijām var būt nepieciešama aktivizēta aparatūras, programmatūras vai pakalpojumu aktivizēšana.
- Neviens produkts vai sastāvdaļa nevar būt pilnīgi drošs.
- Jūsu izmaksas un rezultāti var atšķirties.
- © Intel Corporation. Intel, Intel logotips un citas Intel preču zīmes ir Intel Corporation vai tās meitasuzņēmumu preču zīmes. Citi nosaukumi un zīmoli var tikt uzskatīti par citu personu īpašumu.
- Šis dokuments nepiešķir nekādu intelektuālā īpašuma tiesību licenci (tiešu vai netiešu, apturot vai citādi).
- Aprakstītajos produktos var būt dizaina defekti vai kļūdas, kas pazīstamas kā kļūdas, kuru dēļ produkts var atšķirties no publicētajām specifikācijām. Pašreizējās raksturotās kļūdas ir pieejamas pēc pieprasījuma.
- Intel atsakās no visām tiešajām un netiešajām garantijām, tostarp bez ierobežojuma netiešajām garantijām par piemērotību tirdzniecībai, piemērotību noteiktam mērķim un nepārkāpšanu, kā arī no jebkādām garantijām, kas izriet no darbības gaitas, darījumu gaitas vai izmantošanas tirdzniecībā.
Dokumenti / Resursi
![]() |
intel Sāciet darbu ar Intel Trace Analyzer un Collector [pdfLietotāja rokasgrāmata Sāciet darbu ar Intel Trace Analyzer un Collector, Sāciet darbu ar Intel, Trace Analyzer un Collector, Collector |