Aloita Intel Trace Analyzerin ja Collectorin käyttäminen
Aloita Intel® Trace Analyzerin ja Collectorin käyttäminen
Käytä tätä Aloitusasiakirjaa ja esikerättyä jälkiä file käydä läpi perus-MPI-suorituskykyanalyysi Intel® Trace Analyzerin ja Collectorin avulla.
Intel Trace Analyzer and Collector auttaa tutkimaan viestinvälitysliittymän (MPI) käyttötehokkuutta ja tunnistamaan viestinnän hotspotit, synkronoinnin pullonkaulat ja kuormituksen tasapainottamisen. Lisätietoja tuotteesta on Intel Trace Analyzer and Collector -tuotesivulla.
Lataa Intel Trace Analyzer and Collector
- osana Intel® oneAPI HPC Toolkit -työkalua
- itsenäisenä työkaluna
Edellytykset
- Ennen kuin käytät Intel Trace Analyzer and Collectoria, varmista, että olet asentanut uusimman Intel® MPI Libraryn ja Intel® oneAPI DPC++/C++ Compilerin tai Intel® Fortran Compilerin.
- Tämä asettaa tarvittavat ympäristömuuttujat kääntäjille, Intel MPI Librarylle ja Intel Trace Analyzer and Collectorille, ja olet valmis jäljittämään sovelluksiasi.
- Lisätietoja on kohdassa Intel® oneAPI HPC Toolkit -järjestelmävaatimukset.
Ymmärrä työnkulku
- Seuraa hakemustasi
- Analysoi aktiivisimmat MPI-toiminnot
- Tunnista ongelmalliset vuorovaikutukset
- Paranna sovelluksesi suorituskykyä korvaamalla ongelmaa aiheuttava toiminto
Seuraa MPI-sovellustasi
Luo jälki file kerätäksesi tapahtumalokeja seuraavaa sovellusten käyttäytymisanalyysiä varten.
- Määritä ympäristö Intel® Trace Analyzerin ja Collectorin käynnistämiseksi suorittamalla setvars-skripti oneAPI-asennusohjaimesta
HUOM
Oletusarvoisesti Intel Trace Analyzer and Collector on asennettu hakemistoon /opt/intel/oneapi/itac Linux*-käyttöjärjestelmälle ja ohjelmaan Files (x86)\Intel\oneAPI\itac\uusin Windows*-käyttöjärjestelmälle.
Linuxissa:
$ lähde /opt/intel/oneapi/setvars.sh
Windowsissa:
"C:\Ohjelma Files (x86)\Intel\oneAPI\setvars.bat" - Suorita MPI-sovellus ja luo jäljitys -trace-vaihtoehdolla.
Linuxissa:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
Windowsissa:
Käännä sovellus ja kerää jälki.
Intel oneAPI DPC++/C++ Compilerille suorita:
> mpiicc -trace poisson_sendrecv.single.c
Intel Fortran Compilerille suorita:
> mpiifort -trace poisson_sendrecv.single.f
Tämä example luo jäljen (stf*) as:lleample poisson_sendrcv.single MPI-sovellus - Avaa luotu .stf file Intel Trace Analyzerin kanssa Intel Trace Analyzerin ja Collectorin kanssa.
Linuxissa:
$ traceanalyzer ./ poisson_sendrecv.single.stf
Windowsissa:
traceanalyzer poisson_sendrecv.single.stf
HUOM
Testaustarkoituksiin voit ladata esikerätyn jäljen file poisson_sendrecv.single.stf tässä asiakirjassa käytetylle poissonille ja avaa se Intel Trace Analyzerilla ja Collectorilla.
.stf file avautuu Yhteenveto-sivulle view, joka edustaa yleistä tietoa sovelluksesi tehokkuudesta:HUOM Lisätietoja Intel Trace Analyzer- ja Collector-toiminnallisuuksista on kohdassa Lisätietoja.
Analysoi aktiivisimmat MPI-toiminnot
Analysoi MPI-sovelluksen käyttäytymistä, löydä pullonkauloja ja tunnista sarjoittaminen löytääksesi tapoja parantaa sovelluksen suorituskykyä.
- Avaa Yhteenveto-sivulta Tapahtuman aikajana view napsauttamalla Jatka > Kaaviot > Tapahtuman aikajana voit analysoida MPI:n tärkeimmät toiminnot syvällisesti.
Kaavio näyttää yksittäisiä prosessitoimintoja ajan mittaan.
Sovellustyö on iteratiivista, jossa jokainen iteraatio koostuu laskennallisesta osasta ja MPI-viestinnästä. - Tunnista yksi iteraatio, johon haluat keskittyä, ja zoomaa siihen vetämällä hiirtä vaaditun ajanjakson yli:
Jälki view näyttää valitsemasi jäljen osan. Tapahtuman aikajana -kaavio näyttää tapahtumat, jotka olivat aktiivisia valitun iteraation aikana.
- Vaakapalkit edustavat prosesseja, joissa on näissä prosesseissa kutsutut toiminnot.
- Mustat viivat osoittavat prosessien välillä lähetettyjä viestejä. Nämä linjat yhdistävät lähetys- ja vastaanottoprosessit.
- Siniset viivat edustavat kollektiivisia toimintoja, kuten lähetys- tai vähennystoimintoja.
- Vaihda Flat Pro:honfile välilehteä (A), jos haluat tarkastella lähemmin toimintoja, jotka suoritetaan tapahtuman aikajanalla valitsemassasi ajankohdassa.
- Pura MPI-funktioiden ryhmittely analysoidaksesi MPI-prosessin toimintaa sovelluksessasi.
Voit tehdä tämän napsauttamalla hiiren kakkospainikkeella Flat Prossa Kaikki prosessit > Ryhmä MPI ( B).file ja valitse UngroupMPI. Tämä toiminto paljastaa yksittäiset MPI-kutsut. - Analysoi suorien naapuriensa kanssa kommunikoivia prosesseja MPI_Sendrecv:n avulla iteraation alussa. esimampseuraavat:
- a. Vuonna sampMPI_Sendrecv-tiedonvaihdossa on pullonkaula: prosessi ei vaihda tietoja seuraavan naapurin kanssa ennen kuin vaihto edellisen kanssa on valmis. Tapahtuman aikajanat view näyttää tämän pullonkaulan portaikkona.
- b. MPI_Allreduce iteraation lopussa synkronoi kaikki prosessit uudelleen; siksi tämä lohko näyttää käänteiseltä portaalta.
- Tunnista sarjoittaminen Function Pron avullafile ja Message Profile views.
- a. Avaa kaaviot samanaikaisesti:
Function Prossafile kaavio, avaa Kuormitustase-välilehti. - Avaa Message Pro siirtymällä Kaaviot-valikkoonfile.
- b. Laajenna Load Balance -välilehdellä MPI_Sendrecv ja MPI_Allreduce. Kuormituksen tasapainotus osoittaa, että MPI_Sendrecv:ssä käytetty aika kasvaa prosessinumeron mukana, kun taas MPI_Allreducen aika pienenee.
- c. Tarkista Message Profile Kaavio oikeaan alakulmaan asti.
Lohkojen värikoodaus osoittaa, että korkeammasta arvosta alempaan arvoon kulkevat viestit tarvitsevat suhteellisesti enemmän aikaa, kun taas alemmalta korkeammalle tasolle kulkevat viestit paljastavat heikon parillisen ja parittoman kaavan:
- a. Avaa kaaviot samanaikaisesti:
Vertailevan analyysin tulokset osoittavat, että sovelluksessa ei ole monimutkaisia vaihtokuvioita, vaihto tapahtuu vain viereisten prosessien kanssa. Tiedot ovat välttämättömiä Paranna sovelluksesi suorituskykyä muuttamalla viestintää -vaiheessa sovelluksen viestintämallin optimoimiseksi.
Tunnista epätasapainoinen tiedonsiirto
Tarkkaile hakemustasi ihanteellisissa olosuhteissa ja vertaa alkuperäistä jälkiä file idealisoidun kanssa ongelmallisten vuorovaikutusten eristämiseksi.
- Luo idealisoitu file:
- a. Valitse Lisäasetukset > Idealisointi tai napsauta
(Idealisointi) -työkalurivin painike.
- b. Tarkista idealisointiparametrit Idealisointi-valintaikkunasta (ideal trace file muuntamisen nimi ja aikaväli).
- c. Ideoi jäljitys napsauttamalla Aloita.
- a. Valitse Lisäasetukset > Idealisointi tai napsauta
- Vertaa alkuperäistä jälkiä idealisoituun jäljitykseen:
- a. Valitse Lisäasetukset > Epätasapainokaavio tai napsauta
(Epätasapainokaavio) -työkalurivin painike.
- b. Napsauta Epätasapainokaavio-valintaikkunassa Avaa toinen File -painiketta, siirry idealisoituun jäljitykseen ja valitse se.
- c. Napsauta Epätasapainokaavio-ikkunassa Total Mode -painiketta ja valitse Breakdown Mode.
- a. Valitse Lisäasetukset > Epätasapainokaavio tai napsauta
Voit nähdä, että MPI_Sendrecv on aikaa vievin toiminto. Epätasapainon paino näytetään
vaalea väri ja sisältää noin 10 % MPI_Sendrecv-funktiolle. Tämä on aika, jonka prosessit viettävät odottaen toisiaan.
Paranna sovelluksesi suorituskykyä vaihtamalla viestintää
- Paranna MPI-sovelluksen suorituskykyä vaihtamalla esto estämättömään tietoliikenteeseen.
Korvaa koodissasi sarja MPI_Sendrcv estämättömällä tiedonsiirrolla: MPI_Isend ja MPI_Irecv. esimample: Alkuperäinen koodinpätkä:
// rajanvaihto
void Exchange(para* p, grid* gr){
int i,j;
MPI_Status status_100, status_200, status_300, status_400;
// lähetä alas ensimmäinen rivi
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,
&tila_100);
// lähetä viimeinen rivi
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);
Käytä Intel Trace Analyzer -vertailua view verrata sarjamuotoista sovellusta tarkistettuun
// kopioi vasen sarake tmp-taulukoihin
if(gr->left != MPI_PROC_NULL){
gr->x_uusi[i][gr->lcol+1] = oikea_sarake[i]; oikea_sara[i] = gr->x_uusi[i][gr->lcol];
// lähetä oikein
MPI_Send(oikea_sarake, gr->lrow+2, MPI_DOUBLE, gr->oikea, 400, MPI_COMM_WORLD); }
if(gr->left != MPI_PROC_NULL)
{
MPI_Recv(vasen_sarake, gr->lrow+2, MPI_DOUBLE, gr->vasen, 400, MPI_COMM_WORLD,&tila_400); for(i=0; i< gr->lrow+2; i++
{
gr->x_uusi[i][0] = vasen_sarake[i];
}
}
Päivitetty koodinpätkä
MPI_Request req[7];
// lähetä alas ensimmäinen rivi
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_Odotus(7, req, MPI_STATUSES_IGNORE);
Kun se on korjattu, tarkistetun sovelluksen yksi iteraatio näyttää seuraavalta esimampseuraavat: - Käytä Intel Trace Analyzer -vertailua view vertailla sarjamuotoista sovellusta tarkistettuun. Vertaa kahta jälkiä vertailun avulla View, menossa View > Vertaa. Vertailu View näyttää samanlaiselta kuin:
Vertailussa View, voit nähdä, että estottoman viestinnän käyttö auttaa poistamaan sarjoitusta ja lyhentämään prosessien viestintäaikaa.
HUOM Lisätietoja sovelluksesi solmutason suorituskyvystä on vastaavien työkalujen dokumentaatiossa: Intel® VTune™ Profiler MPI-koodin analysointi ja Intel® MPI -sovellusten analysointi Intel® Advisorin avulla.
Lisätietoja
Tutustu seuraaviin resursseihin saadaksesi lisätietoja Intel Trace Analyzerista ja Collectorista.
Ilmoitukset ja vastuuvapauslausekkeet
- Intel-tekniikat saattavat edellyttää laitteiden, ohjelmistojen tai palveluiden aktivointia.
- Mikään tuote tai komponentti ei voi olla täysin turvallinen.
- Kustannuksesi ja tulokset voivat vaihdella.
- © Intel Corporation. Intel, Intel-logo ja muut Intel-merkit ovat Intel Corporationin tai sen tytäryhtiöiden tavaramerkkejä. Muita nimiä ja merkkejä voidaan väittää muiden omaisuudeksi.
- Tämä asiakirja ei myönnä lisenssiä (suoraan tai epäsuoraan, estoppel tai muutoin) immateriaalioikeuksiin.
- Kuvatuissa tuotteissa voi olla suunnitteluvirheitä tai virheitä, jotka tunnetaan nimellä errata, jotka voivat aiheuttaa tuotteen poikkeamisen julkaistuista teknisistä tiedoista. Nykyiset ominaisvirheet ovat saatavilla pyynnöstä.
- Intel kiistää kaikki nimenomaiset ja oletetut takuut, mukaan lukien rajoituksetta oletetut takuut kaupallisuudesta, sopivuudesta tiettyyn tarkoitukseen ja loukkaamattomuudesta, samoin kuin kaikki takuut, jotka johtuvat suorituskyvystä, kaupankäynnistä tai käytöstä kaupassa.
Asiakirjat / Resurssit
![]() |
intel Aloita Intel Trace Analyzerin ja Collectorin kanssa [pdfKäyttöopas Aloita Intel Trace Analyzerin ja Collectorin käytön aloittaminen, aloita Intelin, Trace Analyzerin ja Collectorin kanssa, Collector |