Kezdje el az Intel Trace Analyzer és Collector használatát
Kezdje el az Intel® Trace Analyzer és Collector használatát
Használja ezt a Kezdő lépések dokumentumot és egy előre összegyűjtött nyomkövetést file az Intel® Trace Analyzer és Collector segítségével végzett alapvető MPI-teljesítményelemzésen.
Az Intel Trace Analyzer and Collector segít feltárni az üzenettovábbítási interfész (MPI) használatának hatékonyságát, és azonosítani a kommunikációs hotspotokat, a szinkronizálási szűk keresztmetszeteket és a terheléselosztást. A termékkel kapcsolatos további információkért tekintse meg az Intel Trace Analyzer and Collector termékoldalát.
Töltse le az Intel Trace Analyzer and Collector programot
- az Intel® oneAPI HPC Toolkit részeként
- önálló eszközként
Előfeltételek
- Az Intel Trace Analyzer and Collector futtatása előtt győződjön meg arról, hogy telepítette a legújabb Intel® MPI Library-t és az Intel® oneAPI DPC++/C++ fordítót vagy az Intel® Fortran fordítót.
- Ez beállítja a szükséges környezeti változókat a fordítók, az Intel MPI Library és az Intel Trace Analyzer and Collector számára, és máris nyomon követheti alkalmazásait.
- További információkért lásd: Intel® oneAPI HPC Toolkit rendszerkövetelmények.
A munkafolyamat megértése
- Kövesse nyomon az alkalmazást
- Elemezze a legaktívabb MPI-függvényeket
- A problémás interakciók azonosítása
- Javítsa alkalmazásának teljesítményét a problémát okozó funkció lecserélésével
Kövesse nyomon MPI-alkalmazását
Nyom létrehozása file eseménynaplók gyűjtéséhez a következő alkalmazások viselkedésének elemzéséhez.
- Állítsa be az Intel® Trace Analyzer and Collector elindításához szükséges környezetet a setvars szkript futtatásával a oneAPI telepítési igazgatóból
JEGYZET
Alapértelmezés szerint az Intel Trace Analyzer and Collector az /opt/intel/oneapi/itac könyvtárba van telepítve Linux* operációs rendszerhez és a Programhoz. Files (x86)\Intel\oneAPI\itac\legújabb Windows* operációs rendszerhez.
Linuxon:
$ forrás /opt/intel/oneapi/setvars.sh
Windows rendszeren:
„C:\Program Files (x86)\Intel\oneAPI\setvars.bat” - Futtassa az MPI-alkalmazást, és generáljon nyomkövetést a -trace kapcsolóval.
Linuxon:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
Windows rendszeren:
Fordítsa le az alkalmazást, és gyűjtse össze a nyomot.
Intel oneAPI DPC++/C++ fordító esetén futtassa:
> mpiicc -trace poisson_sendrecv.single.c
Intel Fortran Compiler esetén futtassa:
> mpiifort -trace poisson_sendrecv.single.f
Ez az example nyomkövetést (stf*) generál az as számáraample poisson_sendrcv.single MPI alkalmazás - Nyissa meg a létrehozott .stf fájlt file Intel Trace Analyzerrel, Intel Trace Analyzerrel és Collectorral.
Linuxon:
$ traceanalyzer ./ poisson_sendrecv.single.stf
Windows rendszeren:
traceanalyzer poisson_sendrecv.single.stf
JEGYZET
Tesztelési célokra letölthet egy előre összegyűjtött nyomkövetést file poisson_sendrecv.single.stf a jelen dokumentumban használt poisson számára, és nyissa meg az Intel Trace Analyzer and Collector segítségével.
Az .stf file megnyílik az Összefoglaló oldalon view, amely általános információkat tartalmaz az alkalmazás teljesítményéről:JEGYZET Az Intel Trace Analyzer és Collector funkcióiról a További információ című témakörben olvashat bővebben.
Elemezze a legaktívabb MPI-funkciókat
Elemezze az MPI-alkalmazások viselkedését, keresse meg a szűk keresztmetszeteket és azonosítsa a sorozatosítást, hogy megtalálja az alkalmazás teljesítményének javításának módjait.
- Az Összefoglaló oldalon nyissa meg az Esemény idővonalát view Kattintson a Folytatás > Diagramok > Esemény idővonala elemre a legfontosabb MPI-funkciók részletes elemzéséhez.
A diagram az egyes folyamattevékenységeket mutatja az idő függvényében.
Az alkalmazási munka iteratív, ahol minden iteráció egy számítási részből és MPI-kommunikációból áll. - Határozzon meg egyetlen iterációt, amelyre fókuszálhat, és nagyítson rá úgy, hogy az egeret a kívánt időintervallum fölé húzza:
A nyom view a kiválasztott nyomvonalon belüli szakaszt jeleníti meg. Az Esemény idővonal diagramja azokat az eseményeket mutatja, amelyek a kiválasztott iteráció során aktívak voltak.
- A vízszintes sávok jelzik a folyamatokat az ezekben a folyamatokban elnevezett függvényekkel.
- Fekete vonalak jelzik a folyamatok között küldött üzeneteket. Ezek a vonalak kötik össze a küldési és fogadási folyamatokat.
- A kék vonalak kollektív műveleteket jelölnek, mint például a broadcast vagy a redukciós műveleteket.
- Váltson a Flat Pro-rafile fül (A), hogy közelebbről megtekinthesse az Ön által ( az Esemény idővonalán kiválasztott) időpontban végrehajtott funkciókat.
- Az MPI-függvények csoportosítása az MPI-folyamatok tevékenységének elemzéséhez az alkalmazásban.
Ehhez kattintson a jobb gombbal a Minden folyamat > Csoport MPI ( B) elemre a Flat Pro alkalmazásbanfile és válassza az UngroupMPI lehetőséget. Ez a művelet felfedi az egyes MPI-hívásokat. - Elemezze a közvetlen szomszédaikkal kommunikáló folyamatokat az MPI_Sendrecv használatával az iteráció elején. Plample:
- a. A szample, az MPI_Sendrecv adatcserének van egy szűk keresztmetszete: a folyamat addig nem cserél adatot a következő szomszédjával, amíg az előzővel való csere be nem fejeződik. Az események idővonalai view ezt a szűk keresztmetszetet lépcsőként jeleníti meg.
- b. Az MPI_Allreduce az iteráció végén újraszinkronizálja az összes folyamatot; ezért van ennek a blokknak a fordított lépcsőházi megjelenése.
- Azonosítsa a sorozatosítást a Function Pro segítségévelfile és a Message Profile views.
- a. Nyissa meg egyszerre a diagramokat:
A Function Pro-banfile diagramot, nyissa meg a Load Balance lapot. - A Message Pro megnyitásához lépjen a Diagramok menübefile.
- b. A Load Balance lapon bontsa ki az MPI_Sendrecv és az MPI_Allreduce elemet. A Load Balancing azt jelzi, hogy az MPI_Sendrecv-ben eltöltött idő a folyamatszámmal növekszik, míg az MPI_Allreduce ideje csökken.
- c. Vizsgálja meg a Message Pro-tfile Diagram le a jobb alsó sarokhoz.
A blokkok színkódolása azt jelzi, hogy a magasabb rangról alacsonyabb rangra jutó üzeneteknek arányosan több időre van szükségük, míg az alacsonyabb rangról magasabb rangra jutó üzenetek gyenge páros-páratlan mintázatot mutatnak:
- a. Nyissa meg egyszerre a diagramokat:
Az összehasonlító elemzés eredményei azt mutatják, hogy az alkalmazásban nincsenek bonyolult cseremintázatok, a csere csak szomszédos folyamatokkal történik. Az információ elengedhetetlen lesz az alkalmazás teljesítményének javítása a kommunikáció megváltoztatásával lépéséhez, amely az alkalmazás kommunikációs modelljét optimalizálja.
Azonosítsa a kiegyensúlyozatlan kommunikációt
Nézze meg alkalmazását ideális körülmények között, és hasonlítsa össze az eredeti nyomot file az idealizálttal a problematikus kölcsönhatások elkülönítésére.
- Hozzon létre egy idealizált file:
- a. Válassza a Speciális > Idealizálás lehetőséget, vagy kattintson a gombra
(Idealizálás) eszköztár gombja.
- b. Ellenőrizze az idealizálási paramétereket az Idealizálás párbeszédpanelen (ideal trace file név és időtartomány a konverzióhoz).
- c. Kattintson a Start gombra a nyomkövetés idealizálásához.
- a. Válassza a Speciális > Idealizálás lehetőséget, vagy kattintson a gombra
- Hasonlítsa össze az eredeti nyomot az idealizált nyomvonallal:
- a. Válassza a Speciális > Kiegyensúlyozatlansági diagram lehetőséget, vagy kattintson a gombra
(Egyensúlyi diagram) eszköztár gombja.
- b. Az egyensúlyi diagram párbeszédpanelen kattintson a Másik megnyitása elemre File gombot, keresse meg az ideális nyomkövetést, és válassza ki.
- c. Az egyensúlyi diagram ablakban kattintson a Teljes mód gombra, és válassza a Lebontási módot.
- a. Válassza a Speciális > Kiegyensúlyozatlansági diagram lehetőséget, vagy kattintson a gombra
Látható, hogy az MPI_Sendrecv a legidőigényesebb funkció. Az egyensúlyhiány súlya a következőben jelenik meg:
világos szín, és körülbelül 10%-ot tartalmaz az MPI_Sendrecv függvény számára. Ez az az idő, amit a folyamatok egymásra várva töltenek.
Javítsa alkalmazása teljesítményét a kommunikáció megváltoztatásával
- Javítsa az MPI-alkalmazás teljesítményét azáltal, hogy a blokkolást nem blokkoló kommunikációra változtatja.
A kódban cserélje ki a soros MPI_Sendrcv-t nem blokkoló kommunikációra: MPI_Isend és MPI_Irecv. Plample: Eredeti kódrészlet:
// határcsere
void Exchange(para* p, grid* gr){
int i,j;
MPI_Állapot_100, állapot_200, állapot_300, állapot_400;
// elküldi az első sort
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,
&állapot_100);
// küldd fel az utolsó sort
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);
Használja az Intel Trace Analyzer összehasonlítását view összehasonlítani a soros alkalmazást az átdolgozottal
// bal oldali oszlop másolása tmp tömbökbe
if(gr->left != MPI_PROC_NULL){
gr->x_új[i][gr->lcol+1] = jobb_oszlop[i]; right_col[i] = gr->x_new[i][gr->lcol];
// jobbra küldeni
MPI_Send(jobb_col, gr->lrow+2, MPI_DOUBLE, gr->jobb, 400, MPI_COMM_WORLD); }
if(gr->left != MPI_PROC_NULL)
{
MPI_Recv(bal_col, gr->lrow+2, MPI_DOUBLE, gr->bal, 400, MPI_COMM_WORLD,&állapot_400); for(i=0; i< gr->lrow+2; i++
{
gr->x_új[i][0] = left_col[i];
}
}
Frissített kódrészlet
MPI_Request req[7];
// elküldi az első sort
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_Waital(7, req, MPI_STATUSES_IGNORE);
A kijavítás után a felülvizsgált alkalmazás egyetlen iterációja a következőképpen fog kinézni, plample: - Használja az Intel Trace Analyzer összehasonlítását view összehasonlítani a soros alkalmazást a felülvizsgáltal. Hasonlítson össze két nyomot az Összehasonlítás segítségével View, megy View > Hasonlítsa össze. Az összehasonlítás View hasonlít ehhez:
Az Összehasonlításban View, láthatja, hogy a nem blokkoló kommunikáció segít eltávolítani a szerializációt és csökkenti a folyamatok kommunikációs idejét.
JEGYZET Az alkalmazás csomóponti szintű teljesítményével kapcsolatos további információkért tekintse meg a megfelelő eszközök dokumentációját: Intel® VTune™ Profiler MPI-kódelemzés és Intel® MPI-alkalmazások elemzése az Intel® Advisor segítségével.
További információ
Az Intel Trace Analyzer és Collector szoftverrel kapcsolatos további információkért tekintse meg a következő forrásokat.
Megjegyzések és felelősség kizárása
- Az Intel technológiákhoz engedélyezni kell a hardver, a szoftver vagy a szolgáltatás aktiválását.
- Egyetlen termék vagy alkatrész sem lehet teljesen biztonságos.
- A költségek és az eredmények változhatnak.
- © Intel Corporation. Az Intel, az Intel logó és más Intel védjegyek az Intel Corporation vagy leányvállalatai védjegyei. Más nevek és márkák mások tulajdonát képezhetik.
- Ez a dokumentum nem ad engedélyt (kifejezetten vagy hallgatólagosan, megtagadással vagy más módon) semmilyen szellemi tulajdonjogra.
- A leírt termékek tervezési hibákat vagy hibáknak nevezett hibákat tartalmazhatnak, amelyek miatt a termék eltérhet a közzétett specifikációktól. Az aktuális jellemző hibák kérésre rendelkezésre állnak.
- Az Intel elhárít minden kifejezett és vélelmezett garanciát, beleértve korlátozás nélkül az eladhatóságra, az adott célra való alkalmasságra és a jogsértésekre vonatkozó hallgatólagos garanciákat, valamint a teljesítés menetéből, a kereskedés menetéből vagy a kereskedelmi felhasználásból eredő minden garanciát.
Dokumentumok / Források
![]() |
intel Kezdő lépések az Intel Trace Analyzer és Collector használatával [pdf] Felhasználói útmutató Indítsa el az Intel Trace Analyzer és Collector használatát, ismerkedjen meg az Intellel, Trace Analyzer és Collector, Collector |