Comeza con Intel Trace Analyzer and Collector
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
- Rastrexa a túa aplicación
- Analiza as funcións MPI máis activas
- Identificar interaccións problemáticas
- 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.
- 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” - 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 - 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:NOTA 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.
- 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. - Identifique unha única iteración na que enfocar e amplíea arrastrando o rato sobre o intervalo de tempo necesario:
O 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.
- 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.
- 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. - Analiza os procesos que se comunican cos seus veciños directos mediante MPI_Sendrecv ao inicio da iteración. Por exampLe:
- 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.
- 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:
- a. Abre os gráficos ao mesmo tempo:
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.
- Crea un idealizado file:
- a. Seleccione Avanzado > Idealización ou faga clic en
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.
- a. Seleccione Avanzado > Idealización ou faga clic en
- Compara a traza orixinal coa traza idealizada:
- a. Seleccione Avanzado > Diagrama de desequilibrio ou faga clic en
Botó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.
- a. Seleccione Avanzado > Diagrama de desequilibrio ou faga clic en
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
- 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: - 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:
Na 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.
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 |