Ga aan de slag met Intel Trace Analyzer en Collector

Aan de slag met het Intel-Trace-Analyzer-en-Collector-product

Ga aan de slag met Intel® Trace Analyzer en Collector

Gebruik dit Get Started-document en een vooraf verzamelde tracering file om een ​​eenvoudige MPI-prestatieanalyse te doorlopen met Intel® Trace Analyzer en Collector.
Intel Trace Analyzer en Collector helpt bij het verkennen van de gebruiksefficiëntie van de Message Passing Interface (MPI) en bij het identificeren van communicatiehotspots, synchronisatieknelpunten en taakverdeling. Zie de productpagina Intel Trace Analyzer and Collector voor meer informatie over het product.

Intel Trace Analyzer en Collector downloaden

  • als onderdeel van Intel® oneAPI HPC Toolkit
  • als zelfstandig instrument

Vereisten

  • Voordat u Intel Trace Analyzer en Collector uitvoert, moet u ervoor zorgen dat u de nieuwste Intel® MPI Library en Intel® oneAPI DPC++/C++ Compiler of Intel® Fortran Compiler hebt geïnstalleerd.
  • Hiermee worden de vereiste omgevingsvariabelen voor compilers, de Intel MPI Library en Intel Trace Analyzer and Collector ingesteld, en bent u klaar om uw applicaties te traceren.
  • Zie voor meer informatie: Intel® oneAPI HPC Toolkit Systeemvereisten.

Begrijp de workflow

  1. Traceer uw toepassing
  2. Analyseer de meest actieve MPI-functies
  3. Identificeer problematische interacties
  4. Verbeter de prestaties van uw applicatie door de probleemveroorzakende functie te vervangen

Traceer uw MPI-toepassing

Genereer een tracering file om gebeurtenislogboeken te verzamelen voor de volgende analyse van applicatiegedrag.

  1. Stel de omgeving in voor het starten van de Intel® Trace Analyzer en Collector door het setvars-script uit te voeren vanuit de oneAPI-installatiedirecteur
    OPMERKING
    Standaard wordt Intel Trace Analyzer and Collector geïnstalleerd op /opt/intel/oneapi/itac voor Linux* OS en op Program Files (x86)\Intel\oneAPI\itac\latest voor Windows* besturingssysteem.
    Op Linux:
    $ bron /opt/intel/oneapi/setvars.sh
    Op Windows:
    “C:\Program Files (x86)\Intel\oneAPI\setvars.bat”
  2. Voer uw MPI-toepassing uit en genereer een tracering met de optie -trace.
    Op Linux:
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    Op Windows:
    Compileer de app en verzamel de trace.
    Voer voor Intel oneAPI DPC++/C++ Compiler het volgende uit:
    > mpiicc -trace poisson_sendrecv.single.c
    Voer voor Intel Fortran Compiler het volgende uit:
    > mpiifort -trace poisson_sendrecv.single.f
    Deze example genereert een trace (stf*) voor asample poisson_sendrcv.single MPI-applicatie
  3. Open het gegenereerde .stf-bestand file met Intel Trace Analyzer met Intel Trace Analyzer en Collector.
    Op Linux:
    $ traceanalyzer ./poisson_sendrecv.single.stf
    Op Windows:
    traceanalyzer poisson_sendrecv.single.stf

OPMERKING
Voor testdoeleinden kunt u een vooraf verzameld trace downloaden file poisson_sendrecv.single.stf voor de poisson die in dit document wordt gebruikt en open deze met Intel Trace Analyzer en Collector.
De .stf file wordt geopend op de overzichtspagina view, wat algemene informatie over de prestaties van uw toepassing vertegenwoordigt:Aan de slag-met-Intel-Trace-Analyzer-en-Collector-fig-1Aan de slag-met-Intel-Trace-Analyzer-en-Collector-fig-2OPMERKING Zie Meer informatie voor meer informatie over de functionaliteit van Intel Trace Analyzer en Collector.

Analyseer de meest actieve MPI-functies

Analyseer het gedrag van een MPI-applicatie, vind knelpunten en identificeer serialisatie om manieren te vinden om de applicatieprestaties te verbeteren.

  1. Open vanaf de overzichtspagina de gebeurtenistijdlijn view door te klikken op Doorgaan > Grafieken > Gebeurtenistijdlijn voor een diepgaande analyse van de belangrijkste MPI-functies.
    Het diagram toont individuele procesactiviteiten in de loop van de tijd.
    Het applicatiewerk is iteratief, waarbij elke iteratie bestaat uit een rekengedeelte en MPI-communicatie.
  2. Identificeer een enkele iteratie waarop u zich wilt concentreren en zoom erop in door uw muis over het vereiste tijdsinterval te slepen:Aan de slag-met-Intel-Trace-Analyzer-en-Collector-fig-3Het spoor view toont de sectie binnen de trace die u hebt geselecteerd. In het diagram Gebeurtenistijdlijn worden de gebeurtenissen weergegeven die actief waren tijdens de geselecteerde iteratie.
    • Horizontale balken vertegenwoordigen de processen met de functies die in deze processen worden aangeroepen.
    • Zwarte lijnen geven berichten aan die tussen processen worden verzonden. Deze lijnen verbinden verzend- en ontvangstprocessen.
    • Blauwe lijnen vertegenwoordigen collectieve operaties, zoals uitzendings- of reductieoperaties.
  3. Schakel over naar de Flat Profile tabblad (A) om de functies die worden uitgevoerd op het tijdstip dat u hebt geselecteerd in de gebeurtenistijdlijn nader te bekijken.Aan de slag-met-Intel-Trace-Analyzer-en-Collector-fig-4
  4. Degroepeer MPI-functies om de MPI-procesactiviteit in uw toepassing te analyseren.
    Om dit te doen, klikt u met de rechtermuisknop op Alle processen > Groep MPI (B) in de Flat Profile en kies UngroupMPI. Met deze bewerking worden de afzonderlijke MPI-oproepen zichtbaar.
  5. Analyseer de processen die communiceren met hun directe buren met behulp van MPI_Sendrecv aan het begin van de iteratie. Bijvoorbeeldampon:Aan de slag-met-Intel-Trace-Analyzer-en-Collector-fig-5
    • A. In de "Sample heeft de gegevensuitwisseling MPI_Sendrecv een knelpunt: het proces wisselt pas gegevens uit met de volgende buur als de uitwisseling met de vorige is voltooid. De tijdlijnen van evenementen view geeft dit knelpunt weer als een trap.
    • B. De MPI_Allreduce aan het einde van de iteratie synchroniseert alle processen opnieuw; daarom heeft dit blok het omgekeerde trap-uiterlijk.
  6. Identificeer serialisatie met behulp van Function Profile en Bericht Profile views.
    • A. Open tegelijkertijd de grafieken:
      In de Functie Profile diagram, open het tabblad Belastingsbalans.
    • Ga naar het menu Grafieken om een ​​Message Pro te openenfile.
    • B. Vouw op het tabblad Load Balance MPI_Sendrecv en MPI_Allreduce uit. De Load Balancing geeft aan dat de tijd besteed aan MPI_Sendrecv toeneemt met het procesnummer, terwijl de tijd voor MPI_Allreduce afneemt.
    • C. Bestudeer de Message Profile Grafiek naar beneden naar de rechter benedenhoek.
      De kleurcodering van de blokken geeft aan dat berichten die van een hogere rang naar een lagere rang reizen proportioneel meer tijd nodig hebben, terwijl de berichten die van een lagere rang naar een hogere rang reizen een zwak, even-oneven patroon vertonen:Aan de slag-met-Intel-Trace-Analyzer-en-Collector-fig-6

De resultaten van de vergelijkende analyse laten zien dat er geen complexe uitwisselingspatronen in de applicatie voorkomen; de uitwisseling wordt alleen uitgevoerd met aangrenzende processen. De informatie zal essentieel zijn voor het verbeteren van de prestaties van uw applicatie door de communicatie te veranderen, om het communicatiemodel van de applicatie te optimaliseren.

Identificeer onevenwichtige communicatie

Bekijk uw aanvraag onder de ideale omstandigheden en vergelijk het originele spoor file met de geïdealiseerde om problematische interacties te isoleren.

  1. Creëer een geïdealiseerde file:
    • A. Selecteer Geavanceerd > Idealisatie of klik op deAan de slag-met-Intel-Trace-Analyzer-en-Collector-fig-7 (Idealisatie) werkbalkknop.
    • B. Controleer de idealisatieparameters in het dialoogvenster Idealisatie (ideal trace file naam en tijdsbereik voor conversie).
    • C. Klik op Start om uw trace te idealiseren.
  2. Vergelijk het originele spoor met het geïdealiseerde spoor:
    • A. Selecteer Geavanceerd > Onbalansdiagram of klik op de Aan de slag-met-Intel-Trace-Analyzer-en-Collector-fig-8(Onbalansdiagram) werkbalkknop.
    • B. Klik in het dialoogvenster Onbalansdiagram op Open nog een File knop, navigeer naar het geïdealiseerde spoor en selecteer het.
    • C. In het venster Onbalansdiagram klikt u op de knop Totaalmodus en selecteert u Uitsplitsingsmodus.

Aan de slag-met-Intel-Trace-Analyzer-en-Collector-fig-9

U kunt zien dat MPI_Sendrecv de meest tijdrovende functie is. Het onbalansgewicht wordt weergegeven in
lichte kleur en omvat ongeveer 10% voor de MPI_Sendrecv-functie. Dit is de tijd die de processen besteden aan het wachten op elkaar.

Verbeter de prestaties van uw applicaties door de communicatie te veranderen

  1. Verbeter de prestaties van de MPI-applicatie door blokkerende communicatie te wijzigen in niet-blokkerende communicatie.
    Vervang in uw code de seriële MPI_Sendrcv door niet-blokkerende communicatie: MPI_Isend en MPI_Irecv. Bijvoorbeeldample: Origineel codefragment:
    // grensuitwisseling
    ongeldige uitwisseling(para* p, raster* gr){
    int ik,j;
    MPI_Status status_100, status_200, status_300, status_400;
    // stuur de eerste rij naar beneden
    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);
    // stuur de laatste rij omhoog
    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);
    Gebruik de Intel Trace Analyzer-vergelijking view om de geserialiseerde toepassing te vergelijken met de herziene
    // kopieer de linkerkolom naar tmp-arrays
    als(gr->links!= MPI_PROC_NULL){
    gr->x_new[i][gr->lcol+1] = rechter_col[i]; rechts_col[i] = gr->x_new[i][gr->lcol];
    // stuur rechts
    MPI_Send(right_col, gr->lrow+2, MPI_DOUBLE, gr->right, 400, MPI_COMM_WORLD); }
    als(gr->links != MPI_PROC_NULL)
    {
    MPI_Recv(links_col, gr->lrow+2, MPI_DOUBLE, gr->links, 400, MPI_COMM_WORLD,&status_400); for(i=0; i< gr->lrow+2; i++
    {
    gr->x_new[i][0] = linker_col[i];
    }
    }
    Bijgewerkt codefragment
    MPI_Request verzoek[7];
    // stuur de eerste rij naar beneden
    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_Waitall(7, verzoek, MPI_STATUSES_IGNORE);
    Eenmaal gecorrigeerd, zal de enkele iteratie van de herziene applicatie er als volgt uitzienampon:Aan de slag-met-Intel-Trace-Analyzer-en-Collector-fig-10
  2. Gebruik de Intel Trace Analyzer-vergelijking view om de geserialiseerde toepassing te vergelijken met de herziene toepassing. Vergelijk twee sporen met behulp van de vergelijking View, gaan naar View > Vergelijk. De vergelijking View lijkt op:Aan de slag-met-Intel-Trace-Analyzer-en-Collector-fig-11In de vergelijking View, kunt u zien dat het gebruik van niet-blokkerende communicatie helpt om serialisatie te verwijderen en de communicatietijd van processen te verkorten.
    OPMERKING Voor meer informatie over de prestaties van uw toepassing op knooppuntniveau raadpleegt u de documentatie voor de betreffende tools: Intel® VTune™ Profiler MPI-codeanalyse en analyse van Intel® MPI-applicaties met Intel® Advisor.

Meer informatie

Bekijk de volgende bronnen voor meer informatie over Intel Trace Analyzer en Collector.Aan de slag-met-Intel-Trace-Analyzer-en-Collector-fig-12Aan de slag-met-Intel-Trace-Analyzer-en-Collector-fig-13

Kennisgevingen en disclaimers

  • Voor Intel-technologieën is mogelijk geactiveerde hardware, software of serviceactivering vereist.
  • Geen enkel product of onderdeel kan absoluut veilig zijn.
  • Uw kosten en resultaten kunnen variëren.
  • © Intel Corporation. Intel, het Intel-logo en andere Intel-merken zijn handelsmerken van Intel Corporation of haar dochterondernemingen. Andere namen en merken kunnen worden geclaimd als eigendom van anderen.
  • Er wordt met dit document geen licentie (expliciet of impliciet, door uitsluiting of anderszins) op intellectuele eigendomsrechten verleend.
  • De beschreven producten kunnen ontwerpfouten of fouten bevatten die bekend staan ​​als errata, waardoor het product kan afwijken van de gepubliceerde specificaties. Actuele gekarakteriseerde errata zijn op aanvraag beschikbaar.
  • Intel wijst alle uitdrukkelijke en impliciete garanties af, inclusief maar niet beperkt tot de impliciete garanties van verkoopbaarheid, geschiktheid voor een bepaald doel en niet-inbreuk, evenals elke garantie die voortvloeit uit de uitvoering, handelswijze of gebruik in de handel.

Documenten / Bronnen

intel Aan de slag met Intel Trace Analyzer en Collector [pdf] Gebruikershandleiding
Aan de slag met Intel Trace Analyzer en Collector, Aan de slag met Intel, Trace Analyzer en Collector, Collector

Referenties

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *