Začněte s Intel Trace Analyzer and Collector
Začněte s Intel® Trace Analyzer and Collector
Použijte tento dokument Začínáme a předem shromážděné trasování file projít základní analýzou výkonu MPI pomocí Intel® Trace Analyzer and Collector.
Intel Trace Analyzer and Collector pomáhá prozkoumat efektivitu využití rozhraní pro předávání zpráv (MPI) a identifikovat komunikační hotspoty, úzká hrdla synchronizace a vyvažování zátěže. Další informace o produktu naleznete na stránce produktu Intel Trace Analyzer and Collector.
Stáhněte si Intel Trace Analyzer and Collector
- jako součást Intel® oneAPI HPC Toolkit
- jako samostatný nástroj
Předpoklady
- Před spuštěním Intel Trace Analyzer and Collector se ujistěte, že máte nainstalovanou nejnovější knihovnu Intel® MPI Library a kompilátor Intel® oneAPI DPC++/C++ nebo kompilátor Intel® Fortran.
- Tím nastavíte požadované proměnné prostředí pro kompilátory, knihovnu Intel MPI a Intel Trace Analyzer and Collector a jste připraveni sledovat své aplikace.
- Další informace naleznete v části: Systémové požadavky Intel® oneAPI HPC Toolkit.
Pochopte pracovní postup
- Sledujte svou aplikaci
- Analyzujte nejaktivnější funkce MPI
- Identifikujte problematické interakce
- Zlepšete výkon své aplikace nahrazením funkce způsobující problémy
Sledujte svou aplikaci MPI
Vygenerujte stopu file shromáždit protokoly událostí pro následující analýzu chování aplikace.
- Nastavte prostředí pro spouštění Intel® Trace Analyzer and Collector spuštěním skriptu setvars z instalačního adresáře oneAPI
POZNÁMKA
Ve výchozím nastavení je Intel Trace Analyzer and Collector nainstalován do /opt/intel/oneapi/itac pro Linux* OS a do programu Files (x86)\Intel\oneAPI\itac\latest pro operační systém Windows*.
V systému Linux:
$ source /opt/intel/oneapi/setvars.sh
V systému Windows:
"C:\Program Files (x86)\Intel\oneAPI\setvars.bat” - Spusťte svou aplikaci MPI a vygenerujte trasování pomocí volby -trace.
V systému Linux:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
V systému Windows:
Zkompilujte aplikaci a shromážděte trasování.
Pro kompilátor Intel oneAPI DPC++/C++ spusťte:
> mpiicc -trace poisson_sendrecv.single.c
Pro Intel Fortran Compiler spusťte:
> mpiifort -trace poisson_sendrecv.single.f
Tento example generuje trasování (stf*) pro asample poisson_sendrcv.single aplikace MPI - Otevřete vygenerovaný soubor .stf file s Intel Trace Analyzer s Intel Trace Analyzer and Collector.
V systému Linux:
$ traceanalyzer ./ poisson_sendrecv.single.stf
V systému Windows:
traceanalyzer poisson_sendrecv.single.stf
POZNÁMKA
Pro účely testování si můžete stáhnout předem shromážděné trasování file poisson_sendrecv.single.stf pro poisson použitý v tomto dokumentu a otevřete jej pomocí Intel Trace Analyzer and Collector.
Soubor .stf file se otevře na stránce Souhrn view, který představuje obecné informace o výkonu vaší aplikace:POZNÁMKA Další informace o funkcích Intel Trace Analyzer a Collector najdete v části Další informace.
Analyzujte nejaktivnější funkce MPI
Analyzujte chování aplikace MPI, najděte úzká hrdla a identifikujte serializaci, abyste našli způsoby, jak zlepšit výkon aplikace.
- Na stránce Souhrn otevřete časovou osu události view kliknutím na Pokračovat > Grafy > Časová osa události získáte podrobnou analýzu hlavních funkcí MPI.
Graf zobrazuje jednotlivé aktivity procesu v čase.
Práce s aplikací je iterativní, přičemž každá iterace se skládá z výpočetní části a MPI komunikace. - Identifikujte jednu iteraci, na kterou se chcete zaměřit, a přibližte ji tažením myši přes požadovaný časový interval:
Stopa view zobrazuje sekci v rámci trasování, které jste vybrali. Graf časové osy událostí zobrazuje události, které byly aktivní během vybrané iterace.
- Vodorovné pruhy představují procesy s funkcemi volanými v těchto procesech.
- Černé čáry označují zprávy odeslané mezi procesy. Tyto linky propojují odesílací a přijímací procesy.
- Modré čáry představují kolektivní operace, jako jsou operace vysílání nebo snížení.
- Přepněte na Flat Profile kartu (A), abyste se blíže podívali na funkce prováděné v časovém bodě, který jste vybrali (vybraný na časové ose události.
- Oddělte funkce MPI pro analýzu aktivity procesu MPI ve vaší aplikaci.
Chcete-li to provést, klepněte pravým tlačítkem myši na Všechny procesy > Skupina MPI ( B) v Flat Profile a zvolte UngroupMPI. Tato operace zpřístupní jednotlivá volání MPI. - Analyzujte procesy komunikující se svými přímými sousedy pomocí MPI_Sendrecv na začátku iterace. Napřampten:
- A. V sampVýměna dat MPI_Sendrecv má úzké hrdlo: proces si nevyměňuje data se svým dalším sousedem, dokud není dokončena výměna s předchozím. Časové osy událostí view zobrazuje toto úzké hrdlo jako schodiště.
- b. MPI_Allreduce na konci iterace znovu synchronizuje všechny procesy; proto má tento blok vzhled obráceného schodiště.
- Identifikujte serializaci pomocí Function Profile a Message Profile views.
- A. Otevřete grafy současně:
Ve funkci Profile grafu, otevřete záložku Load Balance. - Přejděte do nabídky Grafy a otevřete aplikaci Message Profile.
- b. Na kartě Vyvážení zatížení rozbalte MPI_Sendrecv a MPI_Allreduce. Vyrovnávání zatížení udává, že čas strávený v MPI_Sendrecv se zvyšuje s číslem procesu, zatímco čas pro MPI_Allreduce klesá.
- C. Prozkoumejte aplikaci Message Profile Graf dolů do pravého dolního rohu.
Barevné kódování bloků ukazuje, že zprávy putující z vyšší hodnosti do nižší hodnosti potřebují úměrně více času, zatímco zprávy putující z nižší hodnosti do vyšší hodnosti odhalují slabý sudý-lichý druh vzoru:
- A. Otevřete grafy současně:
Výsledky srovnávací analýzy ukazují, že v aplikaci nejsou žádné složité vzorce výměny, výměna se provádí pouze se sousedními procesy. Tyto informace budou nezbytné pro zlepšení výkonu vaší aplikace změnou komunikace za účelem optimalizace komunikačního modelu aplikace.
Identifikujte nevyváženou komunikaci
Sledujte svou aplikaci za ideálních okolností a porovnejte původní stopu file s idealizovanou k izolaci problematických interakcí.
- Vytvořte si idealizované file:
- A. Vyberte Upřesnit > Idealizace nebo klikněte na
(Idealizace) tlačítko panelu nástrojů.
- b. Zkontrolujte parametry idealizace v dialogovém okně Idealizace (ideální trasování file název a časový rozsah převodu).
- C. Kliknutím na Start idealizujte trasování.
- A. Vyberte Upřesnit > Idealizace nebo klikněte na
- Porovnejte původní stopu s idealizovanou stopou:
- A. Vyberte Upřesnit > Diagram nerovnováhy nebo klikněte na
(Diagram nevyváženosti) tlačítko panelu nástrojů.
- b. V dialogovém okně Diagram nerovnováhy klikněte na Otevřít další File přejděte na idealizovanou stopu a vyberte ji.
- C. V okně Diagram nerovnováhy klikněte na tlačítko Total Mode a vyberte položku Breakdown Mode.
- A. Vyberte Upřesnit > Diagram nerovnováhy nebo klikněte na
Můžete vidět, že MPI_Sendrecv je časově nejnáročnější funkce. Hmotnost nevyváženosti se zobrazí v
světlou barvu a tvoří asi 10 % pro funkci MPI_Sendrecv. Toto je čas, který procesy stráví čekáním na sebe.
Zlepšete výkon své aplikace změnou komunikace
- Zlepšete výkon aplikace MPI změnou blokování na neblokující komunikaci.
Ve svém kódu nahraďte sériové MPI_Sendrcv neblokující komunikací: MPI_Isend a MPI_Irecv. Napřample: Původní fragment kódu:
// výměna hranic
void exchange(para* p, grid* gr){
int i,j;
MPI_Status stav_100, stav_200, stav_300, stav_400;
// odeslat první řádek
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);
// odeslat poslední řádek
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->dolů, 200, MPI_COMM_WORLD, &status_200);
Použijte srovnání Intel Trace Analyzer view porovnat serializovanou aplikaci s revidovanou
// zkopírujte levý sloupec do polí 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];
// odeslat vpravo
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];
}
}
Aktualizovaný fragment kódu
MPI_Request req[7];
// odeslat první řádek
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, požadavek, MPI_STATUSES_IGNORE);
Po opravě bude jednotlivá iterace revidované aplikace vypadat jako následující příkladampten: - Použijte srovnání Intel Trace Analyzer view porovnat serializovanou aplikaci s revidovanou. Porovnejte dvě stopy pomocí Porovnání View, jít do View > Porovnat. Srovnání View vypadá podobně jako:
Ve Srovnání View, můžete vidět, že používání neblokující komunikace pomáhá odstranit serializaci a zkrátit dobu komunikace procesů.
POZNÁMKA Další informace o výkonu vaší aplikace na úrovni uzlů naleznete v dokumentaci k příslušným nástrojům: Intel® VTune™ Profiler Analýza MPI kódu a analýza aplikací Intel® MPI pomocí Intel® Advisor.
Další informace
Další informace o Intel Trace Analyzer and Collector naleznete v následujících zdrojích.
Upozornění a vyloučení odpovědnosti
- Technologie Intel mohou vyžadovat aktivaci aktivovaného hardwaru, softwaru nebo služby.
- Žádný produkt nebo součást nemůže být absolutně zabezpečená.
- Vaše náklady a výsledky se mohou lišit.
- © Intel Corporation. Intel, logo Intel a další značky Intel jsou ochranné známky společnosti Intel Corporation nebo jejích dceřiných společností. Jiná jména a značky mohou být nárokovány jako vlastnictví jiných.
- Tímto dokumentem není udělena žádná licence (výslovná nebo předpokládaná, estoppel nebo jinak) k právům duševního vlastnictví.
- Popisované produkty mohou obsahovat konstrukční vady nebo chyby známé jako errata, které mohou způsobit odchylku produktu od publikovaných specifikací. Aktuální charakterizované chyby jsou k dispozici na vyžádání.
- Intel se zříká všech výslovných a předpokládaných záruk, včetně, bez omezení, předpokládaných záruk obchodovatelnosti, vhodnosti pro určitý účel a neporušení práv, jakož i jakékoli záruky vyplývající z průběhu výkonu, průběhu obchodování nebo použití v obchodě.
Dokumenty / zdroje
![]() |
intel Začněte s Intel Trace Analyzer and Collector [pdfUživatelská příručka Začněte s Intel Trace Analyzer and Collector, Začněte s Intel, Trace Analyzer and Collector, Collector |