Comeza con Intel Trace Analyzer and Collector

Comeza-co-produto-analizador-e-colector-Intel-Trace

Comeza con Intel® Trace Analyzer and Collector

Use este documento de Iniciación e unha traza recollida previamente file para percorrer unha análise básica de rendemento MPI con Intel® Trace Analyzer and Collector.
Intel Trace Analyzer and Collector axuda a explorar a eficiencia de uso da interface de paso de mensaxes (MPI) e a identificar os puntos de comunicación, os pescozos de botella de sincronización e o equilibrio de carga. Para obter máis información sobre o produto, consulte a páxina do produto Intel Trace Analyzer and Collector.

Descargar Intel Trace Analyzer and Collector

  • como parte de Intel® oneAPI HPC Toolkit
  • como ferramenta autónoma

Requisitos previos

  • Antes de executar Intel Trace Analyzer and Collector, asegúrese de ter instalado a biblioteca Intel® MPI máis recente e o compilador Intel® oneAPI DPC++/C++ ou o compilador Intel® Fortran.
  • Isto establece as variables de ambiente necesarias para os compiladores, a biblioteca Intel MPI e o analizador e recopilador de rastrexos de Intel, e xa está preparado para rastrexar as súas aplicacións.
  • Para obter máis información, consulte: Requisitos do sistema Intel® oneAPI HPC Toolkit.

Comprender o fluxo de traballo

  1. Rastrexa a túa aplicación
  2. Analiza as funcións MPI máis activas
  3. Identificar interaccións problemáticas
  4. Mellora o rendemento da túa aplicación substituíndo a función que causa problemas

Rastrexa a túa aplicación MPI

Xerar un rastro file para recoller rexistros de eventos para a seguinte análise do comportamento da aplicación.

  1. Configure o ambiente para iniciar o Intel® Trace Analyzer and Collector executando o script setvars desde o director de instalación de oneAPI
    NOTA
    De forma predeterminada, Intel Trace Analyzer and Collector está instalado en /opt/intel/oneapi/itac para Linux* OS e no programa Files (x86)\Intel\oneAPI\itac\latest para Windows* OS.
    En Linux:
    $ source /opt/intel/oneapi/setvars.sh
    En Windows:
    “C:\Programa Files (x86)\Intel\oneAPI\setvars.bat”
  2. Executa a túa aplicación MPI e xera un rastrexo coa opción -trace.
    En Linux:
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    En Windows:
    Compile a aplicación e recolle o rastro.
    Para o compilador Intel oneAPI DPC++/C++, execute:
    > mpiicc -trace poisson_sendrecv.single.c
    Para Intel Fortran Compiler, execute:
    > mpiifort -trace poisson_sendrecv.single.f
    Este example xera un rastro (stf*) para asample poisson_sendrcv.aplicación MPI única
  3. Abre o ficheiro .stf xerado file con Intel Trace Analyzer con Intel Trace Analyzer e Collector.
    En Linux:
    $ traceanalyzer ./ poisson_sendrecv.single.stf
    En Windows:
    Traceanalyzer poisson_sendrecv.single.stf

NOTA
Para fins de proba, podes descargar unha traza recollida previamente file poisson_sendrecv.single.stf para o poisson usado neste documento e ábreo con Intel Trace Analyzer e Collector.
O .stf file ábrese na páxina de resumo view, que representa información xeral sobre o rendemento da súa aplicación:Comeza-con-Intel-Trace-Analyzer-and-Collector-fig-1Comeza-con-Intel-Trace-Analyzer-and-Collector-fig-2NOTA Para obter máis información sobre a funcionalidade Intel Trace Analyzer e Collector, consulte Máis información.

Analiza as funcións MPI máis activas

Analiza o comportamento dunha aplicación MPI, busca colos de botella e identifica a serialización para atopar formas de mellorar o rendemento da aplicación.

  1. Desde a páxina de resumo, abra a cronoloxía do evento view facendo clic en Continuar > Gráficos > Cronograma de eventos para unha análise profunda das principais funcións MPI.
    O gráfico mostra as actividades individuais do proceso ao longo do tempo.
    O traballo de aplicación é iterativo, onde cada iteración consta dunha parte computacional e comunicacións MPI.
  2. Identifique unha única iteración na que enfocar e amplíea arrastrando o rato sobre o intervalo de tempo necesario:Comeza-con-Intel-Trace-Analyzer-and-Collector-fig-3O rastro view mostra a sección dentro do trazo que seleccionou. O gráfico de cronograma de eventos mostra os eventos que estiveron activos durante a iteración seleccionada.
    • As barras horizontais representan os procesos coas funcións denominadas nestes procesos.
    • As liñas negras indican mensaxes enviadas entre procesos. Estas liñas conectan os procesos de envío e recepción.
    • As liñas azuis representan operacións colectivas, como operacións de difusión ou reducción.
  3. Cambia ao Flat Profile pestana (A) para ver máis de cerca as funcións que se executan no momento que seleccionou na liña de tempo do evento.Comeza-con-Intel-Trace-Analyzer-and-Collector-fig-4
  4. Desagrupar as funcións MPI para analizar a actividade do proceso MPI na súa aplicación.
    Para iso, fai clic co botón dereito en Todos os procesos > Grupo MPI ( B) no Flat Profile e escolla DesagruparMPI. Esta operación expón as chamadas MPI individuais.
  5. Analiza os procesos que se comunican cos seus veciños directos mediante MPI_Sendrecv ao inicio da iteración. Por exampLe:Comeza-con-Intel-Trace-Analyzer-and-Collector-fig-5
    • a. No sample, o intercambio de datos MPI_Sendrecv ten un pescozo de botella: o proceso non intercambia datos co seu próximo veciño ata que se completa o intercambio co anterior. Cronogramas dos eventos view mostra este pescozo de botella como unha escaleira.
    • b. O MPI_Allreduce ao final da iteración resincroniza todos os procesos; por iso este bloque ten o aspecto de escaleira inversa.
  6. Identifique a serialización mediante Function Profile e Message Profile views.
    • a. Abre os gráficos ao mesmo tempo:
      Na función Profile gráfico, abra a pestana Balance de carga.
    • Vaia ao menú Gráficos para abrir un Message Profile.
    • b. Na pestana Balance de carga, expanda MPI_Sendrecv e MPI_Allreduce. O balance de carga indica que o tempo empregado en MPI_Sendrecv aumenta co número de proceso, mentres que o tempo para MPI_Allreduce diminúe.
    • c. Examine o Message Profile Gráfica na esquina inferior dereita.
      A codificación de cores dos bloques indica que as mensaxes que viaxan dun rango máis alto a un rango inferior necesitan proporcionalmente máis tempo mentres que as mensaxes que viaxan dun rango inferior a un rango superior revelan un tipo de patrón débil e impar:Comeza-con-Intel-Trace-Analyzer-and-Collector-fig-6

Os resultados da análise comparativa mostran que non hai patróns de intercambio complexos na aplicación, o intercambio realízase só con procesos veciños. A información será esencial para mellorar o rendemento da aplicación cambiando as comunicacións para optimizar o modelo de comunicación da aplicación.

Identificar as comunicacións desequilibradas

Observa a túa aplicación nas circunstancias ideais e compara o trazo orixinal file coa idealizada para illar as interaccións problemáticas.

  1. Crea un idealizado file:
    • a. Seleccione Avanzado > Idealización ou faga clic enComeza-con-Intel-Trace-Analyzer-and-Collector-fig-7 Botón da barra de ferramentas (Idealización).
    • b. Comprobe os parámetros de idealización no cadro de diálogo Idealización (rastro ideal file nome e intervalo de tempo para a conversión).
    • c. Fai clic en Inicio para idealizar o teu trazo.
  2. Compara a traza orixinal coa traza idealizada:
    • a. Seleccione Avanzado > Diagrama de desequilibrio ou faga clic en Comeza-con-Intel-Trace-Analyzer-and-Collector-fig-8Botón da barra de ferramentas (Diagrama de desequilibrio).
    • b. No cadro de diálogo Diagrama de desequilibrio, faga clic en Abrir outro File botón, navegue ata o trazo idealizado e selecciónao.
    • c. Na xanela Diagrama de desequilibrio, faga clic no botón Modo total e seleccione Modo de descomposición.

Comeza-con-Intel-Trace-Analyzer-and-Collector-fig-9

Podes ver que MPI_Sendrecv é a función que máis tempo leva. O peso do desequilibrio móstrase en
cor clara e comprende preto do 10 % para a función MPI_Sendrecv. Este é o tempo que pasan os procesos agardando.

Mellora o rendemento da túa aplicación cambiando as comunicacións

  1. Mellora o rendemento da aplicación MPI cambiando as comunicacións de bloqueo a non bloqueadoras.
    No teu código substitúe o serial MPI_Sendrcv por comunicación non bloqueadora: MPI_Isend e MPI_Irecv. Por example: Fragmento de código orixinal:
    // intercambio de fronteiras
    intercambio vacío (para* p, cuadrícula* gr){
    int i,j;
    MPI_Status status_100, status_200, status_300, status_400;
    // enviar a primeira fila
    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);
    // enviar a ú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);
    Use o Intel Trace Analyzer Comparison view para comparar a aplicación serializada coa revisada
    // copiar a columna da esquerda a matrices tmp
    if(gr->esquerda != MPI_PROC_NULL){
    gr->x_new[i][gr->lcol+1] = right_col[i]; right_col[i] = gr->x_new[i][gr->lcol];
    // enviar dereito
    MPI_Send(col_dereita, gr->lrow+2, MPI_DOUBLE, gr->dereita, 400, MPI_COMM_WORLD); }
    if(gr->esquerda != 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];
    }
    }
    Fragmento de código actualizado
    MPI_Solicitude de solicitude[7];
    // enviar a primeira fila
    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);
    Unha vez corrixida, a única iteración da aplicación revisada terá un aspecto similar ao seguinte exampLe:Comeza-con-Intel-Trace-Analyzer-and-Collector-fig-10
  2. Use o Intel Trace Analyzer Comparison view para comparar a aplicación serializada coa revisada. Compara dúas trazas coa axuda da Comparación View, indo a View > Comparar. A Comparación View parece semellante a:Comeza-con-Intel-Trace-Analyzer-and-Collector-fig-11Na Comparación View, podes ver que usar comunicacións sen bloqueo axuda a eliminar a serialización e diminuír o tempo de comunicación dos procesos.
    NOTA Para obter máis información sobre o rendemento a nivel de nodo da súa aplicación, consulte a documentación das ferramentas respectivas: Intel® VTune™ Profiler Análise de código MPI e análise de aplicacións Intel® MPI mediante Intel® Advisor.

Máis información

Explore os seguintes recursos para obter máis información sobre Intel Trace Analyzer and Collector.Comeza-con-Intel-Trace-Analyzer-and-Collector-fig-12Comeza-con-Intel-Trace-Analyzer-and-Collector-fig-13

Avisos e exencións de responsabilidade

  • As tecnoloxías Intel poden requirir a activación de hardware, software ou servizo habilitado.
  • Ningún produto ou compoñente pode ser absolutamente seguro.
  • Os teus custos e resultados poden variar.
  • © Intel Corporation. Intel, o logotipo de Intel e outras marcas de Intel son marcas comerciais de Intel Corporation ou das súas subsidiarias. Outros nomes e marcas pódense reclamar como propiedade doutros.
  • Este documento non concede ningunha licenza (expresa ou implícita, por exclusión ou doutra forma) sobre ningún dereito de propiedade intelectual.
  • Os produtos descritos poden conter defectos de deseño ou erros coñecidos como erratas que poden provocar que o produto se desvíe das especificacións publicadas. As erratas caracterizadas actuais están dispoñibles baixo petición.
  • Intel renuncia a todas as garantías explícitas e implícitas, incluídas, entre outras, as garantías implícitas de comerciabilidade, adecuación para un fin determinado e non infracción, así como calquera garantía derivada do curso do rendemento, do curso da negociación ou do uso no comercio.

Documentos/Recursos

intel Comezar con Intel Trace Analyzer and Collector [pdfGuía do usuario
Comeza con Intel Trace Analyzer e Collector, Comeza con Intel, Trace Analyzer e Collector, Collector

Referencias

Deixa un comentario

O teu enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados *