Te begjinnen mei Intel Trace Analyzer en Collector
Te begjinnen mei Intel® Trace Analyzer en Collector
Brûk dit Get Started dokumint en in foarôf sammele spoar file om troch in basale MPI-prestaasjeanalyse te rinnen mei Intel® Trace Analyzer en Collector.
Intel Trace Analyzer en Collector helpt by it ferkennen fan effisjinsje fan gebrûk fan berjochten trochjaan ynterface (MPI) en identifisearje kommunikaasje hotspots, syngronisaasje knelpunten, en load balancing. Foar mear ynformaasje oer it produkt, sjoch Intel Trace Analyzer en Collector produkt side.
Download Intel Trace Analyzer en samler
- as ûnderdiel fan Intel® oneAPI HPC Toolkit
- as in standalone ark
Betingsten
- Foardat jo Intel Trace Analyzer en Collector útfiere, soargje derfoar dat jo de lêste Intel® MPI-bibleteek en Intel® oneAPI DPC++/C++-kompiler of Intel® Fortran-kompiler ynstalleare hawwe.
- Dit stelt de fereaske omjouwingsfariabelen foar gearstallers, de Intel MPI-bibleteek, en Intel Trace Analyzer en Collector, en jo binne ree om jo applikaasjes op te spoaren.
- Foar mear ynformaasje, sjoch: Intel® oneAPI HPC Toolkit Systeemeasken.
Begryp de Workflow
- Trace jo applikaasje
- Analysearje de meast aktive MPI funksjes
- Identifisearje problematyske ynteraksjes
- Ferbetterje jo prestaasjes fan jo applikaasje troch de funksje dy't it probleem feroarsaakje te ferfangen
Trace jo MPI-applikaasje
Generearje in spoar file om barrenslogboeken te sammeljen foar de folgjende analyze fan tapassinggedrach.
- Stel de omjouwing yn foar it starten fan de Intel® Trace Analyzer en Collector troch it setvars-skript út te fieren fan 'e oneAPI-ynstallaasjedirekteur
NOAT
Standert is Intel Trace Analyzer en Collector ynstalleare op /opt/intel/oneapi/itac foar Linux* OS en foar Programma Files (x86)\Intel\oneAPI\itac\lêste foar Windows* OS.
Op Linux:
$ boarne /opt/intel/oneapi/setvars.sh
Op Windows:
"C:\Programma Files (x86)\Intel\oneAPI\setvars.bat" - Rinne jo MPI-applikaasje en generearje in spoar mei de -trace-opsje.
Op Linux:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
Op Windows:
Kompilearje de app en sammelje it spoar.
Foar Intel oneAPI DPC++/C++-kompiler, útfiere:
> mpiicc -trace poisson_sendrecv.single.c
Foar Intel Fortran Compiler, rinne:
> mpiifort -trace poisson_sendrecv.single.f
Dizze eksample generearret in spoar (stf *) foar asample poisson_sendrcv.single MPI applikaasje - Iepenje de oanmakke .stf file mei Intel Trace Analyzer mei Intel Trace Analyzer en Collector.
Op Linux:
$ traceanalyzer ./ poisson_sendrecv.single.stf
Op Windows:
traceanalyzer poisson_sendrecv.single.stf
NOAT
Foar testdoelen kinne jo in foarôf sammele spoar downloade file poisson_sendrecv.single.stf foar it poisson brûkt yn dit dokumint en iepenje it mei Intel Trace Analyzer en Collector.
De .stf file iepenet yn 'e Gearfetting Side view, dy't algemiene ynformaasje fertsjintwurdiget oer jo applikaasjeprestaasjes:NOAT Foar mear ynformaasje oer Intel Trace Analyzer en Collector-funksjonaliteit, sjoch Learn More.
Analysearje de meast aktive MPI-funksjes
Analysearje in MPI-applikaasjegedrach, fyn knelpunten en identifisearje serialisaasje om de manieren te finen om de applikaasjeprestaasjes te ferbetterjen.
- Fan 'e Gearfetting Side iepenje de Event Timeline view troch te klikken Trochgean> Charts> Event Timeline foar djippe analyze fan de top MPI funksjes.
De grafyk toant yndividuele prosesaktiviteiten oer de tiid.
Applikaasjewurk is iteratyf, wêrby't elke iteraasje bestiet út in berekkeningsdiel en MPI-kommunikaasje. - Identifisearje ien iteraasje om op te fokusjen en yn te zoomjen troch jo mûs oer it fereaske tiidynterval te slepen:
It spoar view toant de seksje binnen it spoar dat jo selektearre hawwe. It Evenemintentiidline-diagram toant de eveneminten dy't aktyf wiene tidens de selektearre iteraasje.
- Horizontale balken fertsjintwurdigje de prosessen mei de funksjes neamd yn dizze prosessen.
- Swarte linen jouwe berjochten oan stjoerd tusken prosessen. Dizze rigels ferbine ferstjoer- en ûntfangprosessen.
- Blauwe rigels fertsjintwurdigje kollektive operaasjes, lykas útstjoering of ferminderje operaasjes.
- Wikselje nei de Flat Profile ljepper (A) om in tichterby te sjen nei funksjes dy't útfiere op it tiidpunt dat jo (selekteare yn 'e Event Timeline.
- Ungroup MPI-funksjes om MPI-prosesaktiviteit yn jo applikaasje te analysearjen.
Om dit te dwaan, klikje jo mei de rechtermuisknop op de Alle prosessen> Groep MPI (B) yn 'e Flat Profile en kies UngroupMPI. Dizze operaasje bleatret de yndividuele MPI-oproppen. - Analysearje de prosessen dy't kommunisearje mei har direkte buorlju mei MPI_Sendrecv oan it begjin fan 'e iteraasje. Bygelyksample:
- in. Yn de sample, de MPI_Sendrecv gegevens útwikseling hat in knelpunt: it proses net útwikselje gegevens mei syn folgjende buorman oant de útwikseling mei de foarige is foltôge. De Event Timelines view toant dizze knelpunt as in trep.
- b. De MPI_Allreduce oan 'e ein fan' e iteraasje resyngronisearret alle prosessen; dat is wêrom dit blok hat de omkearde trap uterlik.
- Identifisearje serialisaasje, mei de Function Profile en Berjocht Profile views.
- in. Iepenje de charts tagelyk:
Yn 'e Funksje Profile chart, iepenje de Load Balancetab. - Gean nei it Charts-menu om in Message Pro te iepenjenfile.
- b. Yn de Load Balance ljepper, útwreidzje MPI_Sendrecv en MPI_Allreduce. De Load Balancing jout oan dat de tiid bestege yn MPI_Sendrecv nimt ta mei it proses nûmer, wylst de tiid foar MPI_Allreduce ôfnimt.
- c. Undersykje de Message Profile Grafyk del nei de legere rjochter hoeke.
De kleurkodearring fan 'e blokken jout oan dat berjochten dy't reizgje fan in hegere rang nei in legere rang proporsjoneel mear tiid nedich binne, wylst de berjochten dy't reizgje fan in legere rang nei in hegere rang in swak even-ûneven soarte patroan sjen litte:
- in. Iepenje de charts tagelyk:
De resultaten fan 'e ferlykjende analyze litte sjen dat d'r gjin komplekse wikselpatroanen binne yn' e applikaasje, de útwikseling wurdt allinich útfierd mei oanbuorjende prosessen. De ynformaasje sil essensjeel wêze foar Ferbetterje jo applikaasjeprestaasjes troch kommunikaasjestap te feroarjen om it kommunikaasjemodel fan 'e applikaasje te optimalisearjen.
Identifisearje Disbalanced Communications
Besjoch jo applikaasje ûnder de ideale omstannichheden en fergelykje it orizjinele spoar file mei de idealisearre om problematyske ynteraksjes te isolearjen.
- Meitsje in idealisearre file:
- in. Selektearje Avansearre > Idealisaasje of klikje op de
(Idealisaasje) arkbalke knop.
- b. Kontrolearje de idealisaasjeparameters yn it dialoochfinster Idealisaasje (ideale trace file namme en tiidberik foar konverzje).
- c. Klikje op Start om jo spoar te idealisearjen.
- in. Selektearje Avansearre > Idealisaasje of klikje op de
- Fergelykje it orizjinele spoar mei it idealisearre spoar:
- in. Selektearje Avansearre > Unbalansdiagram of klikje op de
(Unbalânsdiagram) arkbalke knop.
- b. Klikje yn it dialoochfinster Imbalance Diagram op de Iepenje In oare File knop, navigearje nei it idealisearre spoar, en selektearje it.
- c. Klikje yn it Unbalance Diagram-finster op de knop Totaalmodus en selektearje Breakdown-modus.
- in. Selektearje Avansearre > Unbalansdiagram of klikje op de
Jo kinne sjen dat MPI_Sendrecv de meast tiidslinende funksje is. It ûnbalânsgewicht wurdt werjûn yn
ljochte kleur en omfettet sawat 10% foar de funksje MPI_Sendrecv. Dit is de tiid dy't de prosessen besteegje oan it wachtsjen op elkoar.
Ferbetterje jo applikaasjeprestaasjes troch kommunikaasje te feroarjen
- Ferbetterje de prestaasjes fan 'e MPI-applikaasje troch blokkearjen te feroarjen nei net-blokkearjende kommunikaasje.
Yn jo koade ferfange de serial MPI_Sendrcv mei net-blokkearjende kommunikaasje: MPI_Isend en MPI_Irecv. Bygelyksample: Orizjinele koade snippet:
// grins útwikseling
void exchange(para* p, grid* gr){
ynt i,j;
MPI_Status status_100, status_200, status_300, status_400;
// stjoer del earste rige
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);
// stjoer up lêste rige
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);
Brûk de Intel Trace Analyzer Comparison view om de serialisearre applikaasje te fergelykjen mei de herziene
// kopiearje lofterkolom nei tmp-arrays
if(gr->lofts != MPI_PROC_NULL){
gr->x_new[i][gr->lcol+1] = right_col[i]; right_col[i] = gr->x_new[i][gr->lcol];
// rjochts stjoere
MPI_Send(right_col, gr->lrow+2, MPI_DOUBLE, gr->right, 400, MPI_COMM_WORLD); }
if(gr->lofts != 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];
}
}
Bywurke koade snippet
MPI_Request req[7];
// stjoer del earste rige
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);
Ienris korrizjearre sil de ienige iteraasje fan 'e herziene applikaasje der útsjen as de folgjende eksample: - Brûk de Intel Trace Analyzer Comparison view om de serialisearre applikaasje te fergelykjen mei de herziene. Ferlykje twa spoaren mei help fan de Fergeliking View, gean nei View > Ferlykje. De fergeliking View liket op:
Yn de Fergeliking View, kinne jo sjen dat it brûken fan net-blokkearjende kommunikaasje helpt om serialisaasje te ferwiderjen en de tiid fan kommunikaasje fan prosessen te ferminderjen.
NOAT Foar mear ynformaasje oer prestaasjes op nodenivo fan jo applikaasje, sjoch dokumintaasje foar de oanbelangjende ark: Intel® VTune™ Profiler MPI Code Analysis en analysearje Intel® MPI applikaasjes mei help fan Intel® Advisor.
Learje mear
Ferkenne de folgjende boarnen foar mear ynformaasje oer Intel Trace Analyzer en Collector.
Meidielings en disclaimers
- Intel-technologyen kinne aktivearring fan hardware, software of tsjinst fereaskje.
- Gjin produkt of komponint kin absolút feilich wêze.
- Jo kosten en resultaten kinne ferskille.
- © Intel Corporation. Intel, it Intel-logo en oare Intel-merken binne hannelsmerken fan Intel Corporation of har dochterûndernimmingen. Oare nammen en merken kinne wurde opeaske as eigendom fan oaren.
- Gjin lisinsje (ekspresje of ymplisearre, troch estoppel of oars) oan yntellektuele eigendomsrjochten wurdt ferliend troch dit dokumint.
- De beskreaune produkten kinne ûntwerpdefekten befetsje as flaters bekend as errata dy't kinne feroarsaakje dat it produkt ôfwykt fan publisearre spesifikaasjes. Aktuele karakterisearre errata binne beskikber op oanfraach.
- Intel ûntkent alle útdruklike en ymplisearre garânsjes, ynklusyf sûnder beheining, de ymplisite garânsjes fan hannelberens, fitness foar in bepaald doel, en net-ynbreuk, lykas alle garânsjes dy't fuortkomme út rin fan prestaasjes, rin fan hannel, of gebrûk yn hannel.
Dokuminten / Resources
![]() |
intel Begjin mei Intel Trace Analyzer en Collector [pdf] Brûkersgids Te begjinnen mei Intel Trace Analyzer en Collector, Te begjinnen mei Intel, Trace Analyzer en Collector, Collector |