Comenceu amb Intel Trace Analyzer and Collector

Comenceu amb el producte Intel Trace Analyzer and Collector

Comenceu amb Intel® Trace Analyzer and Collector

Utilitzeu aquest document d'iniciació i una traça prèviament recollida file per recórrer una anàlisi bàsica del rendiment MPI amb Intel® Trace Analyzer and Collector.
Intel Trace Analyzer and Collector ajuda a explorar l'eficiència en l'ús de la interfície de pas de missatges (MPI) i a identificar els punts d'accés de comunicació, els colls d'ampolla de sincronització i l'equilibri de càrrega. Per obtenir més informació sobre el producte, consulteu la pàgina del producte Intel Trace Analyzer and Collector.

Baixeu Intel Trace Analyzer and Collector

  • com a part d'Intel® oneAPI HPC Toolkit
  • com a eina autònoma

Requisits previs

  • Abans d'executar Intel Trace Analyzer and Collector, assegureu-vos que heu instal·lat la darrera biblioteca Intel® MPI i Intel® oneAPI DPC++/C++ Compiler o Intel® Fortran Compiler.
  • Això estableix les variables d'entorn necessàries per als compiladors, la biblioteca Intel MPI i Intel Trace Analyzer and Collector, i ja esteu preparat per rastrejar les vostres aplicacions.
  • Per obtenir més informació, consulteu: Requisits del sistema Intel® oneAPI HPC Toolkit.

Entendre el flux de treball

  1. Traceu la vostra aplicació
  2. Analitzar les funcions MPI més actives
  3. Identificar interaccions problemàtiques
  4. Milloreu el rendiment de la vostra aplicació substituint la funció que causa problemes

Traceu la vostra aplicació MPI

Generar un rastre file per recopilar registres d'esdeveniments per a l'anàlisi del comportament de l'aplicació següent.

  1. Configureu l'entorn per llançar Intel® Trace Analyzer and Collector executant l'script setvars des del director d'instal·lació oneAPI
    NOTA
    Per defecte, Intel Trace Analyzer and Collector s'instal·la a /opt/intel/oneapi/itac per al sistema operatiu Linux* i al programa Files (x86)\Intel\oneAPI\itac\latest per al sistema operatiu Windows*.
    A Linux:
    $ font /opt/intel/oneapi/setvars.sh
    A Windows:
    “C:\Programa Files (x86)\Intel\oneAPI\setvars.bat”
  2. Executeu la vostra aplicació MPI i genereu un rastre amb l'opció -trace.
    A Linux:
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    A Windows:
    Compileu l'aplicació i recolliu el rastre.
    Per al compilador Intel oneAPI DPC++/C++, executeu:
    > mpiicc -trace poisson_sendrecv.single.c
    Per al compilador Intel Fortran, executeu:
    > mpiifort -trace poisson_sendrecv.single.f
    Aquest example genera una traça (stf*) per a asampl'aplicació MPI le poisson_sendrcv.single
  3. Obriu el fitxer .stf generat file amb Intel Trace Analyzer amb Intel Trace Analyzer i Collector.
    A Linux:
    $ traceanalyzer ./ poisson_sendrecv.single.stf
    A Windows:
    traceanalyzer poisson_sendrecv.single.stf

NOTA
Amb finalitats de prova, podeu descarregar una traça prèviament recollida file poisson_sendrecv.single.stf per al poisson utilitzat en aquest document i obriu-lo amb Intel Trace Analyzer and Collector.
El .stf file s'obre a la pàgina de resum view, que representa informació general sobre el rendiment de la vostra aplicació:Comenceu amb l'Analitzador-i-Collector-Intel-Trace-fig-1Comenceu amb l'Analitzador-i-Collector-Intel-Trace-fig-2NOTA Per obtenir més informació sobre la funcionalitat Intel Trace Analyzer i Collector, vegeu Més informació.

Analitzeu les funcions MPI més actives

Analitzeu el comportament d'una aplicació MPI, trobeu colls d'ampolla i identifiqueu la serialització per trobar maneres de millorar el rendiment de l'aplicació.

  1. Des de la pàgina de resum, obriu la cronologia de l'esdeveniment view fent clic a Continuar > Gràfics > Cronologia d'esdeveniments per a una anàlisi profunda de les funcions MPI principals.
    El gràfic mostra les activitats del procés individual al llarg del temps.
    El treball d'aplicació és iteratiu, on cada iteració consta d'una part computacional i comunicacions MPI.
  2. Identifiqueu una sola iteració per centrar-vos i apropeu-la arrossegant el ratolí per l'interval de temps necessari:Comenceu amb l'Analitzador-i-Collector-Intel-Trace-fig-3El rastre view mostra la secció dins de la traça que heu seleccionat. El gràfic de cronologia d'esdeveniments mostra els esdeveniments que estaven actius durant la iteració seleccionada.
    • Les barres horitzontals representen els processos amb les funcions anomenades en aquests processos.
    • Les línies negres indiquen missatges enviats entre processos. Aquestes línies connecten processos d'enviament i de recepció.
    • Les línies blaves representen operacions col·lectives, com ara operacions de difusió o reducció.
  3. Canvia al Flat Profile pestanya (A) per veure amb més detall les funcions que s'executen en el punt de temps que heu seleccionat a la línia de temps de l'esdeveniment.Comenceu amb l'Analitzador-i-Collector-Intel-Trace-fig-4
  4. Desagrupeu les funcions MPI per analitzar l'activitat del procés MPI a la vostra aplicació.
    Per fer-ho, feu clic amb el botó dret a Tots els processos > Grup MPI (B) al Flat Profile i trieu UngroupMPI. Aquesta operació exposa les trucades MPI individuals.
  5. Analitzeu els processos que es comuniquen amb els seus veïns directes mitjançant MPI_Sendrecv a l'inici de la iteració. Per exampLI:Comenceu amb l'Analitzador-i-Collector-Intel-Trace-fig-5
    • a. Al sampli, l'intercanvi de dades MPI_Sendrecv té un coll d'ampolla: el procés no intercanvia dades amb el seu veí següent fins que s'ha completat l'intercanvi amb l'anterior. L'horari d'esdeveniments view mostra aquest coll d'ampolla com una escala.
    • b. El MPI_Allreduce al final de la iteració resincronitza tots els processos; per això aquest bloc té l'aspecte d'escala inversa.
  6. Identifiqueu la serialització mitjançant Function Profile i Message Profile views.
    • a. Obriu els gràfics al mateix temps:
      A la funció Profile gràfic, obriu la pestanya Balanç de càrrega.
    • Aneu al menú Gràfics per obrir un missatge professionalfile.
    • b. A la pestanya Balanç de càrrega, expandiu MPI_Sendrecv i MPI_Allreduce. L'equilibri de càrrega indica que el temps passat a MPI_Sendrecv augmenta amb el nombre de procés, mentre que el temps per a MPI_Allreduce disminueix.
    • c. Examineu el missatge Profile Gràfic a la cantonada inferior dreta.
      La codificació de colors dels blocs indica que els missatges que viatgen d'un rang més alt a un rang inferior necessiten proporcionalment més temps, mentre que els missatges que viatgen d'un rang inferior a un rang superior revelen un tipus de patró feble parell-estrany:Comenceu amb l'Analitzador-i-Collector-Intel-Trace-fig-6

Els resultats de l'anàlisi comparativa mostren que no hi ha patrons d'intercanvi complexos a l'aplicació, l'intercanvi només es realitza amb processos veïns. La informació serà essencial per millorar el rendiment de la vostra aplicació canviant el pas de comunicacions per optimitzar el model de comunicació de l'aplicació.

Identificar les comunicacions desequilibrades

Observeu la vostra aplicació en les circumstàncies ideals i compareu el rastre original file amb l'idealitzat per aïllar les interaccions problemàtiques.

  1. Crea un idealitzat file:
    • a. Seleccioneu Avançat > Idealització o feu clic aComenceu amb l'Analitzador-i-Collector-Intel-Trace-fig-7 Botó de la barra d'eines (idealització).
    • b. Comproveu els paràmetres d'idealització al quadre de diàleg Idealització (traça ideal file nom i interval de temps per a la conversió).
    • c. Feu clic a Comença per idealitzar el vostre rastre.
  2. Compareu la traça original amb la traça idealitzada:
    • a. Seleccioneu Avançat > Diagrama de desequilibri o feu clic a Comenceu amb l'Analitzador-i-Collector-Intel-Trace-fig-8Botó de la barra d'eines (Diagrama de desequilibri).
    • b. Al quadre de diàleg Diagrama de desequilibri, feu clic a Obre un altre File botó, navegueu fins a la traça idealitzada i seleccioneu-la.
    • c. A la finestra Diagrama de desequilibri, feu clic al botó Mode total i seleccioneu Mode d'avaria.

Comenceu amb l'Analitzador-i-Collector-Intel-Trace-fig-9

Podeu veure que MPI_Sendrecv és la funció que consumeix més temps. El pes del desequilibri es mostra a
color clar i comprèn aproximadament un 10% per a la funció MPI_Sendrecv. Aquest és el temps que els processos passen esperant els uns als altres.

Milloreu el rendiment de les vostres aplicacions canviant les comunicacions

  1. Milloreu el rendiment de l'aplicació MPI canviant comunicacions de bloqueig a comunicacions que no bloquegen.
    Al vostre codi, substituïu la sèrie MPI_Sendrcv per una comunicació sense bloqueig: MPI_Isend i MPI_Irecv. Per example: Fragment de codi original:
    // intercanvi de límits
    void exchange(para* p, quadrícula* gr){
    int i,j;
    MPI_Status status_100, status_200, status_300, status_400;
    // envia la primera fila avall
    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);
    // envia l'última fila
    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);
    Utilitzeu l'Intel Trace Analyzer Comparaison view per comparar l'aplicació serialitzada amb la revisada
    // copia la columna de l'esquerra a les matrius tmp
    if(gr->esquerra != MPI_PROC_NULL){
    gr->x_new[i][gr->lcol+1] = right_col[i]; right_col[i] = gr->x_new[i][gr->lcol];
    // envia correctament
    MPI_Send(right_col, gr->lrow+2, MPI_DOUBLE, gr->right, 400, MPI_COMM_WORLD); }
    if(gr->esquerra != 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];
    }
    }
    Fragment de codi actualitzat
    MPI_Request req[7];
    // envia la primera fila avall
    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, req, MPI_STATUSES_IGNORE);
    Un cop corregida, l'iteració única de l'aplicació revisada serà com el següent exampLI:Comenceu amb l'Analitzador-i-Collector-Intel-Trace-fig-10
  2. Utilitzeu l'Intel Trace Analyzer Comparaison view per comparar l'aplicació serialitzada amb la revisada. Compara dues traces amb l'ajuda de la Comparació View, anant a View > Compara. La Comparació View sembla semblant a:Comenceu amb l'Analitzador-i-Collector-Intel-Trace-fig-11A la Comparació View, podeu veure que l'ús de la comunicació sense bloqueig ajuda a eliminar la serialització i disminuir el temps de comunicació dels processos.
    NOTA Per obtenir més informació sobre el rendiment a nivell de node de la vostra aplicació, consulteu la documentació de les eines respectives: Intel® VTune™ Profiler Anàlisi de codi MPI i anàlisi d'aplicacions Intel® MPI mitjançant Intel® Advisor.

Més informació

Exploreu els recursos següents per obtenir més informació sobre Intel Trace Analyzer and Collector.Comenceu amb l'Analitzador-i-Collector-Intel-Trace-fig-12Comenceu amb l'Analitzador-i-Collector-Intel-Trace-fig-13

Avisos i exempcions de responsabilitat

  • Les tecnologies Intel poden requerir l'activació de maquinari, programari o servei activat.
  • Cap producte o component pot ser absolutament segur.
  • Els vostres costos i resultats poden variar.
  • © Intel Corporation. Intel, el logotip d'Intel i altres marques d'Intel són marques comercials d'Intel Corporation o de les seves filials. Altres noms i marques es poden reclamar com a propietat d'altres.
  • Aquest document no concedeix cap llicència (expressa o implícita, per preclusió o d'una altra manera) sobre cap dret de propietat intel·lectual.
  • Els productes descrits poden contenir defectes de disseny o errors coneguts com a errates que poden provocar que el producte es desviï de les especificacions publicades. Les errates caracteritzades actuals estan disponibles a petició.
  • Intel renuncia a totes les garanties explícites i implícites, incloses, sense limitació, les garanties implícites de comerciabilitat, adequació per a un propòsit particular i no infracció, així com qualsevol garantia derivada del curs de rendiment, el curs de la negociació o l'ús en el comerç.

Documents/Recursos

intel Comenceu amb Intel Trace Analyzer and Collector [pdfGuia de l'usuari
Comenceu amb Intel Trace Analyzer i Collector, Comenceu amb Intel, Trace Analyzer i Collector, Collector

Referències

Deixa un comentari

La teva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats *