Cumincià cù Intel Trace Analyzer è Collector
Iniziate cù Intel® Trace Analyzer è Collector
Aduprate stu documentu Get Started è una traccia pre-colta file per marchjà per un'analisi di basa di rendiment MPI cù Intel® Trace Analyzer and Collector.
Intel Trace Analyzer and Collector aiuta à esplorà l'efficienza di l'usu di l'interfaccia di passaghju di messagiu (MPI) è identificà i punti di cumunicazione, i colli di bottiglia di sincronizazione è l'equilibriu di carica. Per più infurmazione nantu à u pruduttu, vede a pagina di produttu Intel Trace Analyzer è Collector.
Scaricate Intel Trace Analyzer and Collector
- cum'è parte di Intel® oneAPI HPC Toolkit
- cum'è un strumentu autonomu
Prerequisites
- Prima di eseguisce Intel Trace Analyzer and Collector, assicuratevi di avè installatu l'ultima Intel® MPI Library è Intel® oneAPI DPC++/C++ Compiler o Intel® Fortran Compiler.
- Questu stabilisce e variabili di l'ambienti necessarii per i compilatori, a Biblioteca Intel MPI, è l'Analizzatore è u Collettore di Trace Intel, è site prontu à tracciate e vostre applicazioni.
- Per più infurmazione, vede: Intel® oneAPI HPC Toolkit System Requirements.
Capisce u flussu di travagliu
- Trace a vostra applicazione
- Analizà e funzioni MPI più attive
- Identificà interazzione problematica
- Migliurà a vostra prestazione di l'applicazione rimpiazzendu a funzione chì causa u prublema
Trace a vostra applicazione MPI
Generate una traccia file per cullà i logs di l'avvenimenti per l'analisi di cumportamentu di l'applicazione seguente.
- Configurate l'ambiente per lancià l'Intel® Trace Analyzer and Collector eseguendu u script setvars da u direttore d'installazione oneAPI
NOTA
Per automaticamente, Intel Trace Analyzer and Collector hè stallatu à /opt/intel/oneapi/itac per Linux * OS è à u prugramma. Files (x86)\Intel\oneAPI\itac\latest per Windows* OS.
In Linux:
$ source /opt/intel/oneapi/setvars.sh
À Windows:
"C:\Program Files (x86)\Intel\oneAPI\setvars.bat" - Eseguite a vostra applicazione MPI è generà una traccia cù l'opzione -trace.
In Linux:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
À Windows:
Cumpilà l'app è raccoglie a traccia.
Per Intel oneAPI DPC++/C++ Compiler, eseguite:
> mpiicc -trace poisson_sendrecv.single.c
Per Intel Fortran Compiler, eseguite:
> mpiifort -trace poisson_sendrecv.single.f
Questu example genera una traccia (stf*) per asample poisson_sendrcv.single applicazione MPI - Aprite u .stf generatu file cù Intel Trace Analyzer cù Intel Trace Analyzer è Collector.
In Linux:
$ traceanalyzer ./ poisson_sendrecv.single.stf
À Windows:
traceanalyzer poisson_sendrecv.single.stf
NOTA
Per scopi di teste, pudete scaricà una traccia pre-colta file poisson_sendrecv.single.stf per u poisson utilizatu in stu documentu è apre cù Intel Trace Analyzer and Collector.
U .stf file apre in a Pagina di Riassuntu view, chì rapprisenta infurmazione generale nantu à a vostra prestazione di l'applicazione:NOTA Per più infurmazione nantu à a funziunalità Intel Trace Analyzer è Collector, vede Saperne di più.
Analizà e Funzioni MPI più attive
Analizà un cumpurtamentu di l'applicazione MPI, truvate i colli di bottiglia è identificà a serializazione per truvà modi per migliurà u rendiment di l'applicazione.
- Da a Pagina di Riassuntu apre u Timeline di l'Eventi view clicchendu Continue > Charts > Event Timeline per l'analisi profonda di e funzioni MPI superiore.
U graficu mostra l'attività di u prucessu individuale cù u tempu.
U travagliu di l'applicazione hè iterativu, induve ogni iterazione hè custituita da una parte computazionale è cumunicazioni MPI. - Identificà una sola iterazione per fucalizza è zoom in ella trascinendu u mouse nantu à l'intervallu di tempu necessariu:
A traccia view mostra a sezione in a traccia chì avete sceltu. U graficu di l'Event Timeline mostra l'avvenimenti chì eranu attivi durante l'iterazione selezziunata.
- Bars horizontale rapprisentanu i prucessi cù e funzioni chjamati in questi prucessi.
- E linee nere indicanu i missaghji mandati trà i prucessi. Queste linee culliganu i prucessi di mandatu è di ricezione.
- E linee blu rapprisentanu l'operazioni cullettive, cum'è l'operazioni di broadcast o riduzzione.
- Cambia à u Flat Profile tabulazione (A) per avè un sguardu più attentu à e funzioni in esecuzione in u puntu di tempu chì avete (selettu in u Timeline di l'Eventi.
- Ungroup e funzioni MPI per analizà l'attività di prucessu MPI in a vostra applicazione.
Per fà questu, cliccate right-click u All Processes> Group MPI (B) in Flat Profile è sceglite UngroupMPI. Questa operazione espone i chjamati MPI individuali. - Analizà i prucessi chì cumunicanu cù i so vicini diretti cù MPI_Sendrecv à l'iniziu di l'iterazione. Per esampLe:
- a. In u sample, u scambiu di dati MPI_Sendrecv hà una buttiglia: u prucessu ùn scambia micca dati cù u so vicinu vicinu finu à chì u scambiu cù u precedente hè cumpletu. I Timelines di l'avvenimenti view mostra stu collu di bottiglia cum'è una scala.
- b. U MPI_Allreduce à a fine di l'iterazione resynchronizes tutti i prucessi; hè per quessa chì stu bloccu hà l'aspettu di a scala inversa.
- Identificà a serializazione, usendu a Funzione Profile è Message Profile views.
- a. Aprite i grafici à u stessu tempu:
In a Funzione Profile chart, apre u Load Balancetab. - Andate à u menù Charts per apre un Message Profile.
- b. In a tabulazione Load Balance, espansione MPI_Sendrecv è MPI_Allreduce. U Load Balancing indica chì u tempu passatu in MPI_Sendrecv aumenta cù u numeru di prucessu, mentre chì u tempu per MPI_Allreduce diminuisce.
- c. Esaminà u messagiu Profile Graficu finu à l'angulu in basso à destra.
A codificazione di u culore di i blocchi indica chì i missaghji chì viaghjanu da un rangu più altu à un rangu più bassu necessitanu proporzionalmente più tempu, mentre chì i missaghji chì viaghjanu da un rangu più bassu à un rangu più altu palesanu un tipu debbuli pari-stranu di mudellu:
- a. Aprite i grafici à u stessu tempu:
I risultati di l'analisi comparativa mostra chì ùn ci sò micca mudelli di scambiu cumplessi in l'applicazione, u scambiu hè realizatu solu cù prucessi vicini. L'infurmazione serà essenziale per migliurà a vostra prestazione di l'applicazione cambiendu u passu di cumunicazione per ottimisà u mudellu di cumunicazione di l'applicazione.
Identificà e cumunicazioni sbilanciate
Fighjate a vostra applicazione in e circustanze ideali è paragunate a traccia originale file cù l'idealizatu per isolà l'interazzione problematica.
- Crea un idealizatu file:
- a. Selezziunate Avanzate> Idealizazione o cliccate
(Idealizazione) buttone di a barra di strumenti.
- b. Verificate i paràmetri di idealizazione in a finestra di dialogu Idealizazione (traccia ideale file nome è intervallu di tempu per a cunversione).
- c. Cliccate Start per idealizà a vostra traccia.
- a. Selezziunate Avanzate> Idealizazione o cliccate
- Comparare a traccia originale cù a traccia idealizzata:
- a. Selezziunà Avanzate> Diagramma di sbilanciu o cliccate
(Diagramma di sbilanciamentu) buttone di a barra di strumenti.
- b. In a finestra di dialogu Diagramma di sbilanciamentu, cliccate nantu à Apertu un altru File buttone, navigate à a traccia idealizata, è selezziunate.
- c. In a finestra di Diagramma di sbilanciamentu, cliccate nantu à u buttone Modu Totale è selezziunate Modu Breakdown.
- a. Selezziunà Avanzate> Diagramma di sbilanciu o cliccate
Pudete vede chì MPI_Sendrecv hè a funzione di più tempu. U pesu di sbilanciamentu hè visualizatu in
culore chjaru è cumprendi circa 10% per a funzione MPI_Sendrecv. Questu hè u tempu chì i prucessi passanu aspittendu l'un l'altru.
Migliurate a vostra prestazione di l'applicazione cambiendu e cumunicazioni
- Migliurà u rendiment di l'applicazione MPI cambiendu u bloccu à e cumunicazioni senza bloccu.
In u vostru còdice rimpiazzà u seriale MPI_Sendrcv cù a cumunicazione non-blocking: MPI_Isend è MPI_Irecv. Per esample: Frammentu di codice originale:
// scambiu di cunfini
void exchange(para* p, grid* gr){
int i,j;
MPI_Status status_100, status_200, status_300, status_400;
// manda a prima 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);
// Mandate l'ultima 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);
Aduprate l'Intel Trace Analyzer Comparaison view per paragunà l'applicazione serializzata cù a rivista
// copià a colonna di manca in arrays 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];
// manda diritta
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];
}
}
Snippet di codice aghjurnatu
MPI_Request req [7];
// manda a prima 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);
Una volta curretta, l'iterazione unica di l'applicazione rivista serà cum'è a seguente exampLe: - Aduprate l'Intel Trace Analyzer Comparaison view per paragunà l'applicazione serializzata cù quella rivista. Comparare dui tracce cù l'aiutu di u Paragone View, in traccia d'andà à View > Compara. U Paragone View s'assumiglia à:
In u Paragone View, Pudete vede chì l'usu di a cumunicazione senza bloccu aiuta à sguassà a serializazione è diminuite u tempu di cumunicazione di i prucessi.
NOTA Per più infurmazione nantu à e prestazioni à livellu di nodu di a vostra applicazione, vede a documentazione per i rispettivi strumenti: Intel® VTune™ Profiler Analisi di codice MPI è analisi di applicazioni Intel® MPI cù Intel® Advisor.
Sapè ne di più
Esplora e seguenti risorse per più infurmazione nantu à Intel Trace Analyzer and Collector.
Avvisi è Disclaimers
- I tecnulugii Intel ponu necessità attivazione di hardware, software o serviziu.
- Nisun pruduttu o cumpunente pò esse assolutamente sicuru.
- I vostri costi è risultati pò varià.
- © Intel Corporation. Intel, u logu Intel è altri marchi Intel sò marchi di Intel Corporation o di e so filiali. Altri nomi è marche ponu esse rivendicate cum'è a pruprietà di l'altri.
- Nisuna licenza (espressa o implicita, per estoppel o altrimenti) à qualsiasi diritti di pruprietà intellettuale hè cuncessa da stu documentu.
- I prudutti descritti ponu cuntene difetti di cuncepimentu o errori cunnisciuti cum'è errata chì ponu causà à u pruduttu di devià da e specificazioni publicate. L'errata carattarizatu attuale sò dispunibili nantu à dumanda.
- Intel declina tutte e garanzie espresse è implicite, cumprese senza limitazione, e garanzie implicite di cummerciabilità, idoneità per un scopu particulari, è non-infrazione, è ancu qualsiasi guaranzia derivante da u cursu di prestazione, u cursu di trattu o l'usu in u cummerciu.
Documenti / Risorse
![]() |
intel Iniziate cù Intel Trace Analyzer è Collector [pdfGuida di l'utente Cuminciate cù Intel Trace Analyzer è Collector, Iniziate cù Intel, Trace Analyzer è Collector, Collector |