Začnite s Intel Trace Analyzer and Collector

Začnite s produktom Intel-Trace-Analyzer-and-Collector

Začnite s Intel® Trace Analyzer and Collector

Použite tento dokument Začíname a vopred zhromaždené sledovanie file prejsť základnou analýzou výkonu MPI pomocou Intel® Trace Analyzer and Collector.
Intel Trace Analyzer and Collector pomáha skúmať efektivitu využitia rozhrania na odovzdávanie správ (MPI) a identifikovať komunikačné hotspoty, úzke miesta synchronizácie a vyrovnávanie záťaže. Ďalšie informácie o produkte nájdete na stránke produktu Intel Trace Analyzer and Collector.

Stiahnite si Intel Trace Analyzer and Collector

  • ako súčasť Intel® oneAPI HPC Toolkit
  • ako samostatný nástroj

Predpoklady

  • Pred spustením Intel Trace Analyzer and Collector sa uistite, že máte nainštalovanú najnovšiu knižnicu Intel® MPI Library a kompilátor Intel® oneAPI DPC++/C++ alebo kompilátor Intel® Fortran.
  • Týmto nastavíte požadované premenné prostredia pre kompilátory, knižnicu Intel MPI a Intel Trace Analyzer and Collector a ste pripravení sledovať svoje aplikácie.
  • Ďalšie informácie nájdete v časti: Systémové požiadavky Intel® oneAPI HPC Toolkit.

Pochopte pracovný postup

  1. Sledujte svoju aplikáciu
  2. Analyzujte najaktívnejšie funkcie MPI
  3. Identifikujte problematické interakcie
  4. Zlepšite výkon svojej aplikácie nahradením funkcie spôsobujúcej problémy

Sledujte svoju aplikáciu MPI

Vytvorte stopu file na zhromažďovanie protokolov udalostí pre nasledujúcu analýzu správania aplikácie.

  1. Nastavte prostredie na spustenie Intel® Trace Analyzer and Collector spustením skriptu setvars z inštalačného riaditeľa oneAPI
    POZNÁMKA
    V predvolenom nastavení je Intel Trace Analyzer and Collector nainštalovaný do /opt/intel/oneapi/itac pre OS Linux* a do programu Files (x86)\Intel\oneAPI\itac\latest pre operačný systém Windows*.
    V systéme Linux:
    $ source /opt/intel/oneapi/setvars.sh
    V systéme Windows:
    "C:\Program Files (x86)\Intel\oneAPI\setvars.bat”
  2. Spustite svoju aplikáciu MPI a vygenerujte sledovanie pomocou voľby -trace.
    V systéme Linux:
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    V systéme Windows:
    Kompilujte aplikáciu a zbierajte stopy.
    Pre kompilátor Intel oneAPI DPC++/C++ spustite:
    > mpiicc -trace poisson_sendrecv.single.c
    Pre Intel Fortran Compiler spustite:
    > mpiifort -trace poisson_sendrecv.single.f
    Tento example generuje sledovanie (stf*) pre asample poisson_sendrcv.single aplikácie MPI
  3. Otvorte vygenerovaný súbor .stf file s Intel Trace Analyzer s Intel Trace Analyzer a kolektorom.
    V systéme Linux:
    $ traceanalyzer ./ poisson_sendrecv.single.stf
    V systéme Windows:
    traceanalyzer poisson_sendrecv.single.stf

POZNÁMKA
Na testovacie účely si môžete stiahnuť vopred zhromaždenú stopu file poisson_sendrecv.single.stf pre poisson použitý v tomto dokumente a otvorte ho pomocou Intel Trace Analyzer and Collector.
Súbor .stf file sa otvorí na súhrnnej stránke view, ktorá predstavuje všeobecné informácie o výkone vašej aplikácie:Začnite s Intel-Trace-Analyzer-and-Collector-obr-1Začnite s Intel-Trace-Analyzer-and-Collector-obr-2POZNÁMKA Ďalšie informácie o funkciách Intel Trace Analyzer a Collector nájdete v časti Ďalšie informácie.

Analyzujte najaktívnejšie funkcie MPI

Analyzujte správanie aplikácie MPI, nájdite úzke miesta a identifikujte serializáciu, aby ste našli spôsoby, ako zlepšiť výkon aplikácie.

  1. Na stránke Súhrn otvorte časovú os udalosti view kliknutím na Pokračovať > Grafy > Časová os udalosti získate hĺbkovú analýzu najlepších funkcií MPI.
    Graf zobrazuje jednotlivé aktivity procesu v čase.
    Práca s aplikáciou je iteratívna, pričom každá iterácia pozostáva z výpočtovej časti a komunikácie MPI.
  2. Identifikujte jednu iteráciu, na ktorú sa chcete zamerať, a priblížte ju potiahnutím myši cez požadovaný časový interval:Začnite s Intel-Trace-Analyzer-and-Collector-obr-3Stopa view zobrazuje sekciu v rámci stopy, ktorú ste vybrali. Graf časovej osi udalostí zobrazuje udalosti, ktoré boli aktívne počas vybranej iterácie.
    • Vodorovné pruhy predstavujú procesy s funkciami volanými v týchto procesoch.
    • Čierne čiary označujú správy odoslané medzi procesmi. Tieto linky spájajú procesy odosielania a prijímania.
    • Modré čiary predstavujú kolektívne operácie, ako sú operácie vysielania alebo redukcie.
  3. Prejdite na Flat Profile kartu (A), aby ste sa bližšie pozreli na funkcie vykonávané v čase, ktorý ste vybrali (vybratý na časovej osi udalosti.Začnite s Intel-Trace-Analyzer-and-Collector-obr-4
  4. Oddeľte funkcie MPI na analýzu aktivity procesu MPI vo vašej aplikácii.
    Ak to chcete urobiť, kliknite pravým tlačidlom myši na All Processes > Group MPI ( B) v Flat Profile a vyberte UngroupMPI. Táto operácia odkryje jednotlivé volania MPI.
  5. Analyzujte procesy komunikujúce s ich priamymi susedmi pomocou MPI_Sendrecv na začiatku iterácie. Naprample:Začnite s Intel-Trace-Analyzer-and-Collector-obr-5
    • a. V sampVýmena údajov MPI_Sendrecv má úzke miesto: proces si nevymieňa údaje so svojim ďalším susedom, kým sa nedokončí výmena s predchádzajúcim. Časové harmonogramy udalostí view zobrazuje toto úzke miesto ako schodisko.
    • b. MPI_Allreduce na konci iterácie resynchronizuje všetky procesy; preto má tento blok vzhľad reverzného schodiska.
  6. Identifikujte serializáciu pomocou Function Profile a Message Profile views.
    • a. Otvorte grafy súčasne:
      Vo funkcii Profile grafe, otvorte kartu Vyváženie zaťaženia.
    • Prejdite do ponuky Grafy a otvorte aplikáciu Message Profile.
    • b. Na karte Vyváženie zaťaženia rozbaľte položku MPI_Sendrecv a MPI_Allreduce. Vyvažovanie záťaže indikuje, že čas strávený v MPI_Sendrecv sa zvyšuje s číslom procesu, zatiaľ čo čas pre MPI_Allreduce klesá.
    • c. Preskúmajte aplikáciu Message Profile Graf nadol do pravého dolného rohu.
      Farebné kódovanie blokov naznačuje, že správy, ktoré prechádzajú z vyššej hodnosti do nižšej hodnosti, potrebujú proporcionálne viac času, zatiaľ čo správy putujúce z nižšej hodnosti do vyššej hodnosti odhaľujú slabý párny-nepárny druh vzoru:Začnite s Intel-Trace-Analyzer-and-Collector-obr-6

Výsledky porovnávacej analýzy ukazujú, že v aplikácii nie sú žiadne zložité vzorce výmeny, výmena sa uskutočňuje iba so susednými procesmi. Tieto informácie budú nevyhnutné na zlepšenie výkonu vašej aplikácie zmenou komunikácie, aby sa optimalizoval komunikačný model aplikácie.

Identifikujte nevyváženú komunikáciu

Sledujte svoju aplikáciu za ideálnych okolností a porovnajte pôvodnú stopu file s idealizovanou na izoláciu problematických interakcií.

  1. Vytvorte idealizované file:
    • a. Vyberte Rozšírené > Idealizácia alebo kliknite naZačnite s Intel-Trace-Analyzer-and-Collector-obr-7 Tlačidlo na paneli nástrojov (Idealizácia).
    • b. Skontrolujte parametre idealizácie v dialógovom okne Idealizácia (ideálna stopa file názov a časový rozsah konverzie).
    • c. Kliknutím na tlačidlo Štart idealizujte svoju stopu.
  2. Porovnajte pôvodnú stopu s idealizovanou stopou:
    • a. Vyberte Rozšírené > Diagram nerovnováhy alebo kliknite na Začnite s Intel-Trace-Analyzer-and-Collector-obr-8(Diagram nerovnováhy) tlačidlo na paneli nástrojov.
    • b. V dialógovom okne Diagram nerovnováhy kliknite na položku Otvoriť ďalší File prejdite na idealizovanú stopu a vyberte ju.
    • c. V okne Diagram nerovnováhy kliknite na tlačidlo Total Mode a vyberte položku Breakdown Mode.

Začnite s Intel-Trace-Analyzer-and-Collector-obr-9

Môžete vidieť, že MPI_Sendrecv je časovo najnáročnejšia funkcia. Váha nevyváženosti sa zobrazí v
svetlej farby a tvorí asi 10 % pre funkciu MPI_Sendrecv. Toto je čas, ktorý procesy trávia čakaním na seba.

Zlepšite výkon svojej aplikácie zmenou komunikácie

  1. Zlepšite výkon aplikácie MPI zmenou blokovania na neblokovanú komunikáciu.
    Vo svojom kóde nahraďte sériové MPI_Sendrcv neblokujúcou komunikáciou: MPI_Isend a MPI_Irecv. Napríkladample: Pôvodný útržok kódu:
    // výmena hraníc
    void exchange(para* p, grid* gr){
    int i,j;
    MPI_Status stav_100, stav_200, stav_300, stav_400;
    // odoslanie prvého riadku
    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);
    // odošlite posledný riadok
    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->dole, 200, MPI_COMM_WORLD, &status_200);
    Použite porovnanie Intel Trace Analyzer view na porovnanie serializovanej aplikácie s revidovanou
    // skopírujte ľavý stĺpec do polí tmp
    if(gr->left != MPI_PROC_NULL){
    gr->x_new[i][gr->lcol+1] = right_col[i]; right_col[i] = gr->x_new[i][gr->lcol];
    // poslať správne
    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_new[i][0] = left_col[i];
    }
    }
    Aktualizovaný útržok kódu
    MPI_Request req[7];
    // odoslanie prvého riadku
    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, požiadavka, MPI_STATUSES_IGNORE);
    Po oprave bude jediná iterácia revidovanej aplikácie vyzerať takto:ample:Začnite s Intel-Trace-Analyzer-and-Collector-obr-10
  2. Použite porovnanie Intel Trace Analyzer view na porovnanie serializovanej aplikácie s revidovanou aplikáciou. Porovnajte dve stopy pomocou Porovnania View, chystá sa View > Porovnať. Porovnanie View vyzerá podobne ako:Začnite s Intel-Trace-Analyzer-and-Collector-obr-11V Porovnaní View, môžete vidieť, že používanie neblokovanej komunikácie pomáha odstrániť serializáciu a skrátiť čas komunikácie procesov.
    POZNÁMKA Ďalšie informácie o výkone vašej aplikácie na úrovni uzla nájdete v dokumentácii k príslušným nástrojom: Intel® VTune™ Profiler Analýza MPI kódu a analýza aplikácií Intel® MPI pomocou Intel® Advisor.

Zistite viac

Ďalšie informácie o Intel Trace Analyzer and Collector nájdete v nasledujúcich zdrojoch.Začnite s Intel-Trace-Analyzer-and-Collector-obr-12Začnite s Intel-Trace-Analyzer-and-Collector-obr-13

Oznámenia a vylúčenia zodpovednosti

  • Technológie Intel môžu vyžadovať aktiváciu hardvéru, softvéru alebo služby.
  • Žiadny produkt alebo komponent nemôže byť absolútne bezpečný.
  • Vaše náklady a výsledky sa môžu líšiť.
  • © Intel Corporation. Intel, logo Intel a ďalšie značky Intel sú ochranné známky spoločnosti Intel Corporation alebo jej dcérskych spoločností. Iné názvy a značky môžu byť majetkom iných.
  • Týmto dokumentom nie je udelená žiadna licencia (výslovná alebo implicitná, prekážkou alebo inak) na akékoľvek práva duševného vlastníctva.
  • Popísané produkty môžu obsahovať konštrukčné chyby alebo chyby známe ako errata, ktoré môžu spôsobiť odchýlku produktu od publikovaných špecifikácií. Aktuálne charakterizované chyby sú k dispozícii na vyžiadanie.
  • Spoločnosť Intel sa zrieka všetkých výslovných a implicitných záruk, vrátane, bez obmedzenia, implicitných záruk predajnosti, vhodnosti na konkrétny účel a neporušenia, ako aj akejkoľvek záruky vyplývajúcej z priebehu výkonu, priebehu obchodovania alebo používania v obchode.

Dokumenty / zdroje

intel Začnite s Intel Trace Analyzer and Collector [pdf] Používateľská príručka
Začnite s Intel Trace Analyzer and Collector, Začnite s Intel, Trace Analyzer and Collector, Collector

Referencie

Zanechajte komentár

Vaša emailová adresa nebude zverejnená. Povinné polia sú označené *