Magsimula sa Intel Trace Analyzer at Collector

Magsimula-sa-Intel-Trace-Analyzer-and-Collector-product

Magsimula sa Intel® Trace Analyzer at Collector

Gamitin ang dokumentong ito sa Pagsisimula at isang pre-collected na bakas file upang maglakad sa isang pangunahing pagsusuri sa pagganap ng MPI gamit ang Intel® Trace Analyzer at Collector.
Tumutulong ang Intel Trace Analyzer at Collector na tuklasin ang kahusayan sa paggamit ng message passing interface (MPI) at tukuyin ang mga hotspot ng komunikasyon, mga bottleneck ng pag-synchronize, at pagbabalanse ng load. Para sa karagdagang impormasyon tungkol sa produkto, tingnan ang pahina ng produkto ng Intel Trace Analyzer at Collector.

I-download ang Intel Trace Analyzer at Collector

  • bilang bahagi ng Intel® oneAPI HPC Toolkit
  • bilang isang nakapag-iisang tool

Mga kinakailangan

  • Bago patakbuhin ang Intel Trace Analyzer at Collector, tiyaking na-install mo ang pinakabagong Intel® MPI Library at Intel® oneAPI DPC++/C++ Compiler o Intel® Fortran Compiler.
  • Itinatakda nito ang mga kinakailangang variable ng kapaligiran para sa mga compiler, ang Intel MPI Library, at Intel Trace Analyzer at Collector, at handa ka nang i-trace ang iyong mga application.
  • Para sa higit pang impormasyon, tingnan ang: Intel® oneAPI HPC Toolkit System Requirements.

Unawain ang Workflow

  1. I-trace ang Iyong Application
  2. Suriin ang pinakaaktibong mga function ng MPI
  3. Tukuyin ang mga may problemang pakikipag-ugnayan
  4. Pagbutihin ang pagganap ng iyong application sa pamamagitan ng pagpapalit sa function na nagdudulot ng problema

I-trace ang Iyong MPI Application

Bumuo ng bakas file upang mangolekta ng mga log ng kaganapan para sa sumusunod na pagsusuri sa gawi ng aplikasyon.

  1. I-set up ang kapaligiran para sa paglulunsad ng Intel® Trace Analyzer at Collector sa pamamagitan ng pagpapatakbo ng setvars script mula sa direktor ng pag-install ng oneAPI
    TANDAAN
    Bilang default, naka-install ang Intel Trace Analyzer at Collector sa /opt/intel/oneapi/itac para sa Linux* OS at sa Program Files (x86)\Intel\oneAPI\itac\pinakabago para sa Windows* OS.
    Sa Linux:
    $ source /opt/intel/oneapi/setvars.sh
    Sa Windows:
    “C:\Programa Files (x86)\Intel\oneAPI\setvars.bat”
  2. Patakbuhin ang iyong MPI application at bumuo ng isang bakas gamit ang -trace na opsyon.
    Sa Linux:
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    Sa Windows:
    I-compile ang app at kolektahin ang bakas.
    Para sa Intel oneAPI DPC++/C++ Compiler, patakbuhin ang:
    > mpiicc -trace poisson_sendrecv.single.c
    Para sa Intel Fortran Compiler, patakbuhin ang:
    > mpiifort -trace poisson_sendrecv.single.f
    Itong example bumubuo ng isang bakas (stf*) para sa bilangample poisson_sendrcv.iisang MPI application
  3. Buksan ang nabuong .stf file may Intel Trace Analyzer na may Intel Trace Analyzer at Collector.
    Sa Linux:
    $ traceanalyzer ./ poisson_sendrecv.single.stf
    Sa Windows:
    traceanalyzer poisson_sendrecv.single.stf

TANDAAN
Para sa mga layunin ng pagsubok, maaari kang mag-download ng pre-collected na bakas file poisson_sendrecv.single.stf para sa poisson na ginamit sa dokumentong ito at buksan ito gamit ang Intel Trace Analyzer at Collector.
Ang .stf file bubukas sa Pahina ng Buod view, na kumakatawan sa pangkalahatang impormasyon tungkol sa pagganap ng iyong application:Magsimula-sa-Intel-Trace-Analyzer-and-Collector-fig-1Magsimula-sa-Intel-Trace-Analyzer-and-Collector-fig-2TANDAAN Para sa higit pang impormasyon tungkol sa Intel Trace Analyzer at Collector functionality, tingnan ang Matuto Pa.

Suriin ang Pinaka Aktibong Mga Pag-andar ng MPI

Suriin ang isang pag-uugali ng application ng MPI, maghanap ng mga bottleneck at tukuyin ang serialization upang mahanap ang mga paraan upang mapabuti ang pagganap ng application.

  1. Mula sa Pahina ng Buod, buksan ang Timeline ng Kaganapan view sa pamamagitan ng pag-click sa Magpatuloy > Mga Chart > Timeline ng Kaganapan para sa malalim na pagsusuri sa mga nangungunang function ng MPI.
    Ipinapakita ng chart ang mga indibidwal na aktibidad sa proseso sa paglipas ng panahon.
    Ang gawain sa aplikasyon ay umuulit, kung saan ang bawat pag-ulit ay binubuo ng isang computational na bahagi at mga komunikasyon sa MPI.
  2. Tukuyin ang isang solong pag-ulit upang tumuon at mag-zoom dito sa pamamagitan ng pag-drag sa iyong mouse sa kinakailangang agwat ng oras:Magsimula-sa-Intel-Trace-Analyzer-and-Collector-fig-3Ang bakas view ipinapakita ang seksyon sa loob ng bakas na iyong pinili. Ipinapakita ng tsart ng Timeline ng Kaganapan ang mga kaganapan na aktibo sa panahon ng napiling pag-ulit.
    • Ang mga pahalang na bar ay kumakatawan sa mga proseso na may mga function na tinatawag sa mga prosesong ito.
    • Ang mga itim na linya ay nagpapahiwatig ng mga mensaheng ipinadala sa pagitan ng mga proseso. Ang mga linyang ito ay nagkokonekta sa pagpapadala at pagtanggap ng mga proseso.
    • Ang mga asul na linya ay kumakatawan sa mga kolektibong operasyon, tulad ng pag-broadcast o pagbabawas ng mga operasyon.
  3. Lumipat sa Flat Profile tab (A) upang mas masusing tingnan ang mga function na gumagana sa time point na pinili mo sa Timeline ng Kaganapan.Magsimula-sa-Intel-Trace-Analyzer-and-Collector-fig-4
  4. Ungroup MPI function upang suriin ang aktibidad ng proseso ng MPI sa iyong aplikasyon.
    Upang gawin ito, i-right-click ang All Processes > Group MPI ( B) sa Flat Profile at piliin ang UngroupMPI. Inilalantad ng operasyong ito ang mga indibidwal na tawag sa MPI.
  5. Suriin ang mga proseso sa pakikipag-ugnayan sa kanilang mga direktang kapitbahay gamit ang MPI_Sendrecv sa simula ng pag-ulit. Para kay example:Magsimula-sa-Intel-Trace-Analyzer-and-Collector-fig-5
    • a. Sa mga sample, ang MPI_Sendrecv data exchange ay may bottleneck: ang proseso ay hindi nagpapalitan ng data sa susunod nitong kapitbahay hanggang sa ang palitan sa nauna ay kumpleto. Ang Mga Timeline ng Kaganapan view ipinapakita ang bottleneck na ito bilang isang hagdanan.
    • b. Ang MPI_Allreduce sa dulo ng pag-ulit ay muling nagsi-synchronize ng lahat ng mga proseso; kaya naman ang block na ito ay may reverse staircase na hitsura.
  6. Tukuyin ang serialization, gamit ang Function Profile at Message Profile views.
    • a. Buksan ang mga chart nang sabay-sabay:
      Sa Function Profile chart, buksan ang Load Balancetab.
    • Pumunta sa menu ng Mga Chart para magbukas ng Message Profile.
    • b. Sa tab na Load Balance, palawakin ang MPI_Sendrecv at MPI_Allreduce. Isinasaad ng Load Balancing na ang oras na ginugol sa MPI_Sendrecv ay tumataas sa numero ng proseso, habang ang oras para sa MPI_Allreduce ay bumababa.
    • c. Suriin ang Message Profile I-chart pababa sa kanang sulok sa ibaba.
      Ang color coding ng mga bloke ay nagpapahiwatig na ang mga mensahe na naglalakbay mula sa isang mas mataas na ranggo patungo sa isang mas mababang ranggo ay nangangailangan ng proporsyonal na mas maraming oras habang ang mga mensahe na naglalakbay mula sa isang mas mababang ranggo patungo sa isang mas mataas na ranggo ay nagpapakita ng isang mahinang kahit na kakaibang uri ng pattern:Magsimula-sa-Intel-Trace-Analyzer-and-Collector-fig-6

Ang mga resulta ng paghahambing na pagsusuri ay nagpapakita na walang kumplikadong mga pattern ng palitan sa aplikasyon, ang palitan ay isinasagawa lamang sa mga kalapit na proseso. Ang impormasyon ay magiging mahalaga para sa Pagbutihin ang Iyong Pagganap ng Aplikasyon sa pamamagitan ng Pagbabago ng mga Komunikasyon na hakbang upang ma-optimize ang modelo ng komunikasyon ng application.

Tukuyin ang Mga Di-balanseng Komunikasyon

Panoorin ang iyong aplikasyon sa ilalim ng perpektong mga pangyayari at ihambing ang orihinal na bakas file na may idealisado upang ihiwalay ang mga problemadong pakikipag-ugnayan.

  1. Gumawa ng idealized file:
    • a. Piliin ang Advanced > Idealization o i-click angMagsimula-sa-Intel-Trace-Analyzer-and-Collector-fig-7 (Idealization) na pindutan ng toolbar.
    • b. Suriin ang mga parameter ng idealization sa dialog box ng Idealization (ideal na bakas file pangalan at hanay ng oras para sa conversion).
    • c. I-click ang Start para gawing idealize ang iyong trace.
  2. Ihambing ang orihinal na bakas sa perpektong bakas:
    • a. Piliin ang Advanced > Imbalance Diagram o i-click ang Magsimula-sa-Intel-Trace-Analyzer-and-Collector-fig-8(Imbalance Diagram) na pindutan ng toolbar.
    • b. Sa dialog box ng Imbalance Diagram, i-click ang Open Another File button, mag-navigate sa idealized na bakas, at piliin ito.
    • c. Sa window ng Imbalance Diagram, i-click ang button na Total Mode at piliin ang Breakdown Mode.

Magsimula-sa-Intel-Trace-Analyzer-and-Collector-fig-9

Makikita mo na ang MPI_Sendrecv ay ang pinaka-nakakaubos ng oras na function. Ang imbalance weight ay ipinapakita sa
light color at binubuo ng humigit-kumulang 10% para sa MPI_Sendrecv function. Ito ang oras na ginugugol ng mga proseso sa paghihintay sa isa't isa.

Pagbutihin ang Pagganap ng Iyong Application sa pamamagitan ng Pagbabago ng Mga Komunikasyon

  1. Pagbutihin ang pagganap ng MPI application sa pamamagitan ng pagpapalit ng pagharang sa mga komunikasyong hindi humaharang.
    Sa iyong code, palitan ang serial MPI_Sendrcv ng hindi nakaharang na komunikasyon: MPI_Isend at MPI_Irecv. Para kay example: Orihinal na code snippet:
    // pagpapalitan ng hangganan
    walang bisang palitan(para* p, grid* gr){
    int i,j;
    MPI_Status status_100, status_200, status_300, status_400;
    // ipadala ang unang hilera
    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);
    // ipadala ang huling hilera
    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);
    Gamitin ang Intel Trace Analyzer Comparison view upang ihambing ang serialized na application sa binagong
    // kopyahin ang kaliwang column sa mga tmp array
    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];
    // ipadala sa kanan
    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); para sa(i=0; i< gr->lrow+2; i++
    {
    gr->x_new[i][0] = left_col[i];
    }
    }
    Na-update na snippet ng code
    MPI_Request req[7];
    // ipadala ang unang hilera
    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);
    Kapag naitama, ang solong pag-ulit ng binagong application ay magiging kamukha ng sumusunod na example:Magsimula-sa-Intel-Trace-Analyzer-and-Collector-fig-10
  2. Gamitin ang Intel Trace Analyzer Comparison view upang ihambing ang serialized na application sa binagong isa. Paghambingin ang dalawang bakas sa tulong ng Paghahambing View, pupunta sa View > Ikumpara. Ang pagkukumpara View mukhang katulad ng:Magsimula-sa-Intel-Trace-Analyzer-and-Collector-fig-11Sa Paghahambing View, makikita mo na ang paggamit ng non-blocking na komunikasyon ay nakakatulong na alisin ang serialization at bawasan ang oras ng komunikasyon ng mga proseso.
    TANDAAN Para sa higit pang impormasyon tungkol sa pagganap sa antas ng node ng iyong application, tingnan ang dokumentasyon para sa kaukulang mga tool: Intel® VTune™ Profiler Pagsusuri ng MPI Code at Pagsusuri sa mga application ng Intel® MPI gamit ang Intel® Advisor.

Matuto pa

Galugarin ang mga sumusunod na mapagkukunan para sa higit pang impormasyon tungkol sa Intel Trace Analyzer at Collector.Magsimula-sa-Intel-Trace-Analyzer-and-Collector-fig-12Magsimula-sa-Intel-Trace-Analyzer-and-Collector-fig-13

Mga Paunawa at Disclaimer

  • Ang mga teknolohiyang Intel ay maaaring mangailangan ng pag-activate ng hardware, software o serbisyo.
  • Walang produkto o bahagi ang maaaring maging ganap na ligtas.
  • Ang iyong mga gastos at resulta ay maaaring magkakaiba.
  • © Intel Corporation. Ang Intel, ang logo ng Intel, at iba pang mga marka ng Intel ay mga trademark ng Intel Corporation o mga subsidiary nito. Maaaring i-claim ang ibang mga pangalan at brand bilang pag-aari ng iba.
  • Walang lisensya (ipahayag o ipinahiwatig, sa pamamagitan ng estoppel o kung hindi man) sa anumang mga karapatan sa intelektwal na ari-arian ang ibinibigay ng dokumentong ito.
  • Ang mga produktong inilarawan ay maaaring naglalaman ng mga depekto sa disenyo o mga error na kilala bilang errata na maaaring maging sanhi ng paglihis ng produkto mula sa mga nai-publish na mga detalye. Available ang kasalukuyang characterized errata kapag hiniling.
  • Tinatanggihan ng Intel ang lahat ng ipinahayag at ipinahiwatig na mga warranty, kabilang ang walang limitasyon, ang mga ipinahiwatig na warranty ng kakayahang maikalakal, pagiging angkop para sa isang partikular na layunin, at hindi paglabag, pati na rin ang anumang warranty na nagmumula sa kurso ng pagganap, kurso ng pakikitungo, o paggamit sa kalakalan.

Mga Dokumento / Mga Mapagkukunan

intel Magsimula sa Intel Trace Analyzer at Collector [pdf] Gabay sa Gumagamit
Magsimula sa Intel Trace Analyzer at Collector, Magsimula sa Intel, Trace Analyzer at Collector, Collector

Mga sanggunian

Mag-iwan ng komento

Ang iyong email address ay hindi maipa-publish. Ang mga kinakailangang field ay minarkahan *