Sāciet darbu ar Intel Trace Analyzer un Collector

Sāciet darbu ar Intel-Trace-Analyzer-and-Collector produktu

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

  1. Izsekojiet savu pieteikumu
  2. Analizējiet aktīvākās MPI funkcijas
  3. Identificējiet problemātiskās mijiedarbības
  4. 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.

  1. 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”
  2. 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
  3. 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:Darba sākšana ar Intel-Trace-Analyzer-and-Collector-fig-1Darba sākšana ar Intel-Trace-Analyzer-and-Collector-fig-2PIEZĪ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.

  1. 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.
  2. Atrodiet vienu iterāciju, uz kuru fokusēties, un tuviniet to, velkot peli vajadzīgajā laika intervālā:Darba sākšana ar Intel-Trace-Analyzer-and-Collector-fig-3Izsekot 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.
  3. 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ā.Darba sākšana ar Intel-Trace-Analyzer-and-Collector-fig-4
  4. 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.
  5. Analizējiet procesus, kas sazinās ar saviem tiešajiem kaimiņiem, izmantojot MPI_Sendrecv iterācijas sākumā. Piemēram,ample:Darba sākšana ar Intel-Trace-Analyzer-and-Collector-fig-5
    • 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.
  6. 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:Darba sākšana ar Intel-Trace-Analyzer-and-Collector-fig-6

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.

  1. Izveidojiet idealizētu file:
    • a. Atlasiet Papildu > Idealizācija vai noklikšķiniet uzDarba sākšana ar Intel-Trace-Analyzer-and-Collector-fig-7 (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.
  2. Salīdziniet sākotnējo izsekojumu ar idealizēto trasi:
    • a. Atlasiet Papildu > Nelīdzsvarotības diagramma vai noklikšķiniet uz Darba sākšana ar Intel-Trace-Analyzer-and-Collector-fig-8(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.

Darba sākšana ar Intel-Trace-Analyzer-and-Collector-fig-9

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

  1. 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:Darba sākšana ar Intel-Trace-Analyzer-and-Collector-fig-10
  2. 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:Darba sākšana ar Intel-Trace-Analyzer-and-Collector-fig-11Salī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.Darba sākšana ar Intel-Trace-Analyzer-and-Collector-fig-12Darba sākšana ar Intel-Trace-Analyzer-and-Collector-fig-13

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

Atsauces

Atstājiet komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti *