Komencu kun Intel Trace Analyzer kaj Collector

Komencu-kun-Intel-Trace-Analizilo-kaj-Kolektanto-produkto

Komencu kun Intel® Trace Analyzer kaj Kolektanto

Uzu ĉi tiun Komencu-dokumenton kaj antaŭkolektitan spuron file por trairi bazan analizon de rendimento de MPI kun Intel® Trace Analyzer kaj Collector.
Intel Trace Analyzer and Collector helpas esplori la uzado-efikecon de interfaco de mesaĝoj (MPI) kaj identigi komunikajn retpunktojn, sinkronigajn proplempunktojn kaj ekvilibron de ŝarĝo. Por pliaj informoj pri la produkto, vidu la produktpaĝon de Intel Trace Analyzer kaj Collector.

Elŝutu Intel Trace Analyzer and Collector

  • kiel parto de Intel® oneAPI HPC Toolkit
  • kiel memstara ilo

Antaŭkondiĉoj

  • Antaŭ ol funkcii Intel Trace Analyzer and Collector, certigu, ke vi instalis la plej novajn Intel® MPI-Bibliotekon kaj Intel® oneAPI DPC++/C++ Kompililon aŭ Intel® Fortran Kompililon.
  • Ĉi tio fiksas la bezonatajn mediovariablojn por kompililoj, la Intel MPI-Biblioteko kaj Intel Trace Analyzer and Collector, kaj vi pretas spuri viajn aplikojn.
  • Por pliaj informoj, vidu: Sistemkondiĉoj de Intel® oneAPI HPC Toolkit.

Komprenu la Laborfluon

  1. Spuru Vian Aplikon
  2. Analizu la plej aktivajn MPI-funkciojn
  3. Identigu problemajn interagojn
  4. Plibonigu vian aplikaĵan agadon anstataŭigante la problemo-kaŭzantan funkcion

Spuru Vian MPI-Aplikon

Generu spuron file kolekti eventajn protokolojn por la sekva analizo pri aplika konduto.

  1. Agordu la medion por lanĉi la Intel® Trace Analyzer and Collector rulante la setvars-skripton de la instala direktoro de oneAPI
    NOTO
    Defaŭlte, Intel Trace Analyzer kaj Collector estas instalitaj al /opt/intel/oneapi/itac por Linukso* OS kaj al Programo Files (x86)\Intel\oneAPI\itac\latest por Windows* OS.
    Sur Linukso:
    $ fonto /opt/intel/oneapi/setvars.sh
    En Vindozo:
    "C:\Programo Files (x86)\Intel\oneAPI\setvars.bat”
  2. Rulu vian MPI-aplikaĵon kaj generu spuron per la opcio -trace.
    Sur Linukso:
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    En Vindozo:
    Kompilu la apon kaj kolektu la spuron.
    Por Intel oneAPI DPC++/C++ Kompililo, rulu:
    > mpiicc -trace poisson_sendrecv.single.c
    Por Intel Fortran Compiler, rulu:
    > mpiifort -trace poisson_sendrecv.single.f
    Ĉi tiu ekzample generas spuron (stf*) por asample poisson_sendrcv.single MPI-aplikaĵo
  3. Malfermu la generitan .stf file kun Intel Trace Analyzer kun Intel Trace Analyzer kaj Collector.
    Sur Linukso:
    $ spuranalizilo ./ poisson_sendrecv.single.stf
    En Vindozo:
    spuranalizilo poisson_sendrecv.single.stf

NOTO
Por testaj celoj, vi povas elŝuti antaŭkolektitan spuron file poisson_sendrecv.single.stf por la poisson uzata en ĉi tiu dokumento kaj malfermu ĝin per Intel Trace Analyzer kaj Collector.
La .stf file malfermiĝas en la Resuma Paĝo view, kiu reprezentas ĝeneralajn informojn pri via aplika rendimento:Komencu-kun-Intel-Trace-Analizilo-kaj-Kolektanto-fig-1Komencu-kun-Intel-Trace-Analizilo-kaj-Kolektanto-fig-2NOTO Por pliaj informoj pri la funkcioj de Intel Trace Analyzer kaj Collector, vidu Lernu Pli.

Analizu la Plej Aktivajn MPI-Funkciojn

Analizu MPI-aplikaĵkonduton, trovu botelojn kaj identigu seriigon por trovi manierojn plibonigi la aplikaĵon.

  1. De la Resuma Paĝo malfermu la Event Timeline view alklakante Daŭrigi > Charts > Event Timeline por profunda analizo de la ĉefaj MPI-funkcioj.
    La diagramo montras individuajn procezajn agadojn laŭlonge de la tempo.
    Apliklaboro estas ripeta, kie ĉiu ripeto konsistas el komputila parto kaj MPI-komunikadoj.
  2. Identigu ununuran ripeton por koncentriĝi kaj zomi ĝin trenante vian muson tra la bezonata tempointervalo:Komencu-kun-Intel-Trace-Analizilo-kaj-Kolektanto-fig-3La spuro view montras la sekcion ene de la spuro, kiun vi elektis. La Event Timeline-diagramo montras la eventojn, kiuj estis aktivaj dum la elektita ripeto.
    • Horizontalaj stangoj reprezentas la procezojn kun la funkcioj nomitaj en ĉi tiuj procezoj.
    • Nigraj linioj indikas mesaĝojn senditajn inter procezoj. Ĉi tiuj linioj konektas sendajn kaj ricevajn procezojn.
    • Bluaj linioj reprezentas kolektivajn operaciojn, kiel elsendo aŭ redukti operaciojn.
  3. Ŝanĝu al la Flat Profile langeto (A) por pli detale rigardi funkciojn plenumantajn en la tempopunkto, kiun vi (elektita en la Event Timeline.Komencu-kun-Intel-Trace-Analizilo-kaj-Kolektanto-fig-4
  4. Malgrupigi MPI-funkciojn por analizi MPI-procezaktivecon en via aplikaĵo.
    Por fari tion, dekstre alklaku Ĉiuj Procezoj > Grupo MPI (B) en la Flat Profile kaj elektu UngroupMPI. Ĉi tiu operacio elmontras la individuajn MPI-vokojn.
  5. Analizu la procezojn komunikantajn kun siaj rektaj najbaroj uzante MPI_Sendrecv ĉe la komenco de la ripeto. Por ekzample:Komencu-kun-Intel-Trace-Analizilo-kaj-Kolektanto-fig-5
    • a. En la sample, la MPI_Sendrecv-datumŝanĝo havas botelon: la procezo ne interŝanĝas datumojn kun sia venonta najbaro ĝis la interŝanĝo kun la antaŭa estas kompleta. La Eventaj Templinioj view montras ĉi tiun botelon kiel ŝtuparon.
    • b. La MPI_Allreduce ĉe la fino de la ripeto resinkronigas ĉiujn procezojn; tial ĉi tiu bloko havas la inversan ŝtuparan aspekton.
  6. Identigu seriigon, uzante la Funkcion Profile kaj Message Profile views.
    • a. Malfermu la leterojn samtempe:
      En la Funkcio Profile diagramo, malfermu la langeton Ŝarĝo-ekvilibro.
    • Iru al la menuo Charts por malfermi Mesaĝon Profile.
    • b. En la langeto Ŝarĝekvilibro, vastigu MPI_Sendrecv kaj MPI_Allreduce. La Ŝarĝbalancado indikas, ke la tempo pasigita en MPI_Sendrecv pliiĝas kun la proceza nombro, dum la tempo por MPI_Allreduce malpliiĝas.
    • c. Ekzamenu la Mesaĝon Profile Grafiko malsupren al la malsupra dekstra angulo.
      La kolorkodigo de la blokoj indikas ke mesaĝoj vojaĝantaj de pli alta rango al pli malalta rango bezonas proporcie pli da tempo dum la mesaĝoj vojaĝantaj de pli malalta rango al pli alta rango rivelas malfortan eĉ-neparan specon de padrono:Komencu-kun-Intel-Trace-Analizilo-kaj-Kolektanto-fig-6

La rezultoj de la kompara analizo montras, ke ne ekzistas kompleksaj interŝanĝaj ŝablonoj en la aplikaĵo, la interŝanĝo efektiviĝas nur kun najbaraj procezoj. La informoj estos esencaj por Plibonigi Vian Aplikan Efikecon per Ŝanĝanta Komunikada paŝo por optimumigi la komunikadan modelon de la aplikaĵo.

Identigi Malekvilibrajn Komunikadojn

Rigardu vian aplikon en la idealaj cirkonstancoj kaj komparu la originalan spuron file kun la idealigita por izoli problemajn interagojn.

  1. Kreu idealigitan file:
    • a. Elektu Altnivelan > Idealigo aŭ alklaku laKomencu-kun-Intel-Trace-Analizilo-kaj-Kolektanto-fig-7 (Idealigo) ilobretobutono.
    • b. Kontrolu la idealigajn parametrojn en la dialogujo de Idealigo (ideala spuro file nomo kaj tempoperiodo por konvertiĝo).
    • c. Alklaku Komencu por idealigi vian spuron.
  2. Komparu la originan spuron kun la idealigita spuro:
    • a. Elektu Altnivelan > Malekvilibra Diagramo aŭ alklaku la Komencu-kun-Intel-Trace-Analizilo-kaj-Kolektanto-fig-8(Malekvilibra Diagramo) ilobretobutono.
    • b. En la dialogujo de Malekvilibra Diagramo, alklaku la Malfermu Alian File butonon, navigu al la idealigita spuro, kaj elektu ĝin.
    • c. En la fenestro de Malekvilibra Diagramo, alklaku la butonon de Tuta Reĝimo kaj elektu Malfunkcian Reĝimon.

Komencu-kun-Intel-Trace-Analizilo-kaj-Kolektanto-fig-9

Vi povas vidi, ke MPI_Sendrecv estas la plej temporaba funkcio. La malekvilibra pezo estas montrata en
helkoloro kaj konsistas ĉirkaŭ 10% por la funkcio MPI_Sendrecv. Ĉi tiu estas la tempo, kiun la procezoj pasigas atendante unu la alian.

Plibonigu Vian Aplikan Efikecon Ŝanĝante Komunikadojn

  1. Plibonigu la agadon de la MPI-apliko ŝanĝante blokadon al ne-blokaj komunikadoj.
    En via kodo anstataŭigu la serian MPI_Sendrcv per ne-bloka komunikado: MPI_Isend kaj MPI_Irecv. Por ekzample: Originala koda fragmento:
    // limŝanĝo
    malplena interŝanĝo(para* p, krado* gr){
    int i,j;
    MPI_Status status_100, status_200, status_300, status_400;
    // sendas malsupren la unuan vicon
    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);
    // sendu supren la lastan vicon
    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);
    Uzu la Komparon de Intel Trace Analyzer view por kompari la seriigitan aplikaĵon kun la reviziita
    // kopiu maldekstran kolumnon al tmp-tabeloj
    if(gr->maldekstre != MPI_PROC_NULL){
    gr->x_new[i][gr->lcol+1] = dekstra_kol[i]; right_col[i] = gr->x_new[i][gr->lcol];
    // sendu ĝuste
    MPI_Send(dekstra_kol, gr->lrow+2, MPI_DOUBLE, gr->dekstra, 400, MPI_COMM_WORLD); }
    if(gr->maldekstre != MPI_PROC_NULL)
    {
    MPI_Recv(maldekstra_kol, gr->lrow+2, MPI_DOUBLE, gr->maldekstre, 400, MPI_COMM_WORLD,&status_400); for(i=0; i< gr->lrow+2; i++
    {
    gr->x_new[i][0] = maldekstra_kol[i];
    }
    }
    Ĝisdatigita koda fragmento
    MPI_Peto peto[7];
    // sendas malsupren la unuan vicon
    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);
    Post kiam korektite, la ununura ripeto de la reviziita aplikaĵo aspektos kiel la sekva ekzample:Komencu-kun-Intel-Trace-Analizilo-kaj-Kolektanto-fig-10
  2. Uzu la Komparon de Intel Trace Analyzer view por kompari la seriigitan aplikaĵon kun la reviziita. Komparu du spurojn helpe de la Komparo View, iranta al View > Komparu. La Komparo View aspektas simila al:Komencu-kun-Intel-Trace-Analizilo-kaj-Kolektanto-fig-11En la Komparo View, vi povas vidi, ke uzi ne-blokan komunikadon helpas forigi seriigon kaj malpliigi la tempon de komunikado de procezoj.
    NOTO Por pliaj informoj pri nodnivela agado de via aplikaĵo, vidu dokumentaron por la respektivaj iloj: Intel® VTune™ Profiler MPI-Kodo-Analizo kaj Analizo de Intel® MPI-aplikoj uzante Intel® Advisor.

Lernu Pli

Esploru la sekvajn rimedojn por pliaj informoj pri Intel Trace Analyzer kaj Collector.Komencu-kun-Intel-Trace-Analizilo-kaj-Kolektanto-fig-12Komencu-kun-Intel-Trace-Analizilo-kaj-Kolektanto-fig-13

Avizoj kaj Malgarantioj

  • Intel-teknologioj povas postuli ebligitan aparataron, programaron aŭ servan aktivigon.
  • Neniu produkto aŭ ero povas esti absolute sekuraj.
  • Viaj kostoj kaj rezultoj povas varii.
  • © Intel Corporation. Intel, la Intel-emblemo kaj aliaj Intel-markoj estas varmarkoj de Intel Corporation aŭ ĝiaj filioj. Aliaj nomoj kaj markoj povas esti postulitaj kiel posedaĵo de aliaj.
  • Neniu licenco (esprima aŭ implicita, per malpermeso aŭ alie) al ajnaj intelektaj proprietrajtoj estas donita de ĉi tiu dokumento.
  • La priskribitaj produktoj povas enhavi dezajnodifektojn aŭ erarojn konatajn kiel eraroj, kiuj povas igi la produkton devii de publikigitaj specifoj. Nunaj karakterizitaj eratoj estas haveblaj laŭ peto.
  • Intel rifuzas ĉiujn eksplicitajn kaj implicitajn garantiojn, inkluzive sen limigo, la implicajn garantiojn de komercebleco, taŭgeco por aparta celo kaj ne-malobservo, same kiel ajnan garantion devenanta de kurso de agado, kurso de komercado aŭ uzado en komerco.

Dokumentoj/Rimedoj

intel Komencu kun Intel Trace Analyzer kaj Collector [pdf] Uzantogvidilo
Komencu kun Intel Trace Analyzer kaj Kolektanto, Komencu kun Intel, Trace Analyzer kaj Kolektanto, Kolektanto

Referencoj

Lasu komenton

Via retadreso ne estos publikigita. Bezonataj kampoj estas markitaj *