Пачніце з Intel Trace Analyzer і Collector

Get-Started-with-Intel-Trace-Analyzer-and-Collector-product

Пачніце з Intel® Trace Analyzer і Collector

Выкарыстоўвайце гэты дакумент "Пачатак працы" і папярэдне сабраную трасіроўку file прайсці базавы аналіз прадукцыйнасці MPI з Intel® Trace Analyzer і Collector.
Intel Trace Analyzer і Collector дапамагае даследаваць эфектыўнасць выкарыстання інтэрфейсу перадачы паведамленняў (MPI) і вызначаць гарачыя кропкі сувязі, вузкія месцы сінхранізацыі і балансіроўку нагрузкі. Для атрымання дадатковай інфармацыі аб прадукце глядзіце старонку прадукту Intel Trace Analyzer and Collector.

Спампаваць Intel Trace Analyzer і Collector

  • як частка Intel® oneAPI HPC Toolkit
  • як самастойны інструмент

Перадумовы

  • Перад запускам Intel Trace Analyzer і Collector пераканайцеся, што вы ўсталявалі апошнюю версію бібліятэкі Intel® MPI і кампілятара Intel® oneAPI DPC++/C++ або кампілятара Intel® Fortran.
  • Гэта задае неабходныя зменныя асяроддзя для кампілятараў, бібліятэкі Intel MPI і Intel Trace Analyzer і Collector, і вы гатовыя адсочваць свае прыкладанні.
  • Для атрымання дадатковай інфармацыі глядзіце: Сістэмныя патрабаванні Intel® oneAPI HPC Toolkit.

Зразумець працоўны працэс

  1. Прасачыце сваю заяўку
  2. Прааналізуйце найбольш актыўныя функцыі MPI
  3. Вызначце праблемныя ўзаемадзеяння
  4. Палепшыце прадукцыйнасць вашага прыкладання, замяніўшы функцыю, якая выклікае праблемы

Прасачыце сваё прыкладанне MPI

Стварыць трасіроўку file для збору журналаў падзей для наступнага аналізу паводзін прыкладанняў.

  1. Наладзьце асяроддзе для запуску Intel® Trace Analyzer and Collector, запусціўшы скрыпт setvars з дырэктара ўстаноўкі oneAPI
    УВАГА
    Па змаўчанні Intel Trace Analyzer і Collector усталяваны ў /opt/intel/oneapi/itac для АС Linux* і ў Program Files (x86)\Intel\oneAPI\itac\latest для АС Windows*.
    У Linux:
    $ крыніца /opt/intel/oneapi/setvars.sh
    У Windows:
    “C:\Праграма Files (x86)\Intel\oneAPI\setvars.bat”
  2. Запусціце прыкладанне MPI і згенеруйце трасіроўку з опцыяй -trace.
    У Linux:
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    У Windows:
    Скампілюйце праграму і збярыце трасіроўку.
    Для кампілятара Intel oneAPI DPC++/C++ запусціце:
    > mpiicc -trace poisson_sendrecv.single.c
    Для кампілятара Intel Fortran запусціце:
    > mpiifort -trace poisson_sendrecv.single.f
    Гэты былыample стварае трасіроўку (stf*) для asample poisson_sendrcv.single прыкладанне MPI
  3. Адкрыйце згенераваны .stf file з Intel Trace Analyzer з Intel Trace Analyzer і Collector.
    У Linux:
    $ traceanalyzer ./ poisson_sendrecv.single.stf
    У Windows:
    traceanalyzer poisson_sendrecv.single.stf

УВАГА
У мэтах тэставання вы можаце загрузіць папярэдне сабраную трасіроўку file poisson_sendrecv.single.stf для пуасона, які выкарыстоўваецца ў гэтым дакуменце, і адкрыйце яго з дапамогай Intel Trace Analyzer і Collector.
.stf file адкрываецца на старонцы зводкі view, які прадстаўляе агульную інфармацыю аб прадукцыйнасці вашага прыкладання:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-1Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-2УВАГА Для атрымання дадатковай інфармацыі аб функцыянальнасці Intel Trace Analyzer і Collector глядзіце "Даведацца больш".

Прааналізуйце найбольш актыўныя функцыі MPI

Прааналізуйце паводзіны прыкладання MPI, знайдзіце вузкія месцы і вызначце серыялізацыю, каб знайсці спосабы павышэння прадукцыйнасці прыкладання.

  1. На старонцы зводкі адкрыйце часовую шкалу падзеі view націснуўшы Працягнуць > Дыяграмы > Храналогія падзей для глыбокага аналізу галоўных функцый MPI.
    Дыяграма адлюстроўвае асобныя дзеянні працэсу з цягам часу.
    Прыкладная праца з'яўляецца ітэрацыйнай, дзе кожная ітэрацыя складаецца з вылічальнай часткі і сувязі MPI.
  2. Вызначце адзіную ітэрацыю, на якой трэба засяродзіцца, і павялічце яе, перацягнуўшы курсор мышы на неабходны прамежак часу:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-3След view паказвае раздзел у межах трасіроўкі, які вы выбралі. Дыяграма часовай шкалы падзей паказвае падзеі, якія былі актыўнымі падчас выбранай ітэрацыі.
    • Гарызантальныя палоскі адлюстроўваюць працэсы з функцыямі, якія выклікаюцца ў гэтых працэсах.
    • Чорныя лініі паказваюць паведамленні, адпраўленыя паміж працэсамі. Гэтыя лініі злучаюць працэсы адпраўкі і атрымання.
    • Сінія лініі азначаюць калектыўныя аперацыі, такія як трансляцыя або скарачэнне.
  3. Пераключыцеся на Flat Profile ўкладка (A), каб больш падрабязна азнаёміцца ​​з функцыямі, якія выконваюцца ў той час, які вы выбралі на часовай шкале падзей.Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-4
  4. Разгрупуйце функцыі MPI для аналізу актыўнасці працэсу MPI у вашым дадатку.
    Каб зрабіць гэта, пстрыкніце правай кнопкай мышы Усе працэсы > Група MPI (B) у Flat Profile і абярыце UngroupMPI. Гэтая аперацыя паказвае асобныя выклікі MPI.
  5. Прааналізуйце працэсы, якія ўзаемадзейнічаюць са сваімі прамымі суседзямі, выкарыстоўваючы MPI_Sendrecv у пачатку ітэрацыі. Напрыкладampль:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-5
    • а. У сample, абмен дадзенымі MPI_Sendrecv мае вузкае месца: працэс не абменьваецца дадзенымі са сваім наступным суседам, пакуль не завершыцца абмен з папярэднім. Храналогія падзей view адлюстроўвае гэта вузкае месца як лесвіцу.
    • б. MPI_Allreduce у канцы ітэрацыі паўторна сінхранізуе ўсе працэсы; таму гэты блок мае выгляд зваротнай лесвіцы.
  6. Вызначце серыялізацыю з дапамогай Function Profile і Message Profile views.
    • а. Адначасова адкрыйце дыяграмы:
      У функцыі Profile дыяграму, адкрыйце ўкладку «Баланс нагрузкі».
    • Перайдзіце ў меню "Дыяграмы", каб адкрыць Message Profile.
    • б. На ўкладцы «Баланс нагрузкі» разгарніце MPI_Sendrecv і MPI_Allreduce. Балансіроўка нагрузкі паказвае, што час, затрачаны на MPI_Sendrecv, павялічваецца разам з нумарам працэсу, а час для MPI_Allreduce памяншаецца.
    • в. Вывучыце Message Profile Графік апусціцца ў правы ніжні кут.
      Каляровае кадаванне блокаў паказвае, што паведамленні, якія перамяшчаюцца з больш высокага рангу ў больш нізкі ранг, патрабуюць прапарцыйна больш часу, у той час як паведамленні, якія перамяшчаюцца з больш нізкага рангу ў больш высокі ранг, выяўляюць слабую цотна-няцотную схему:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-6

Вынікі параўнальнага аналізу паказваюць, што ў дадатку няма складаных схем абмену, абмен ажыццяўляецца толькі з суседнімі працэсамі. Інфармацыя будзе мець важнае значэнне для кроку "Палепшыце прадукцыйнасць вашага прыкладання шляхам змены камунікацый", каб аптымізаваць мадэль сувязі прыкладання.

Вызначце дысбаланс сувязі

Сачыце за сваім дадаткам у ідэальных умовах і параўноўвайце зыходны след file з ідэалізаваным, каб ізаляваць праблемныя ўзаемадзеяння.

  1. Стварыць ідэалізаваны file:
    • а. Абярыце Дадаткова > Ідэалізацыя або націсніцеGet-Started-with-Intel-Trace-Analyzer-and-Collector-fig-7 Кнопка панэлі інструментаў (Ідэалізацыя).
    • б. Праверце параметры ідэалізацыі ў дыялогавым акне Ідэалізацыя (ідэальны след file імя і дыяпазон часу для пераўтварэння).
    • в. Націсніце "Пуск", каб ідэалізаваць свой след.
  2. Параўнайце зыходны след з ідэалізаваным следам:
    • а. Абярыце Дадаткова > Дыяграма дысбалансу або націсніце Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-8(Дыяграма дысбалансу) кнопка панэлі інструментаў.
    • б. У дыялогавым акне "Дыяграма дысбалансу" націсніце "Адкрыць іншы". File кнопку, перайдзіце да ідэалізаванай рысы і выберыце яе.
    • в. У акне дыяграмы дысбалансу націсніце кнопку Total Mode і абярыце Breakdown Mode.

Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-9

Вы бачыце, што MPI_Sendrecv - самая працаёмкая функцыя. Вага дысбалансу адлюстроўваецца ў
светлага колеру і складае каля 10% для функцыі MPI_Sendrecv. Гэта час, які працэсы праводзяць у чаканні адзін аднаго.

Палепшыце прадукцыйнасць вашага прыкладання, змяніўшы камунікацыі

  1. Палепшыце прадукцыйнасць прыкладання MPI, змяніўшы блакіроўку сувязі на неблакіраваную.
    У вашым кодзе заменіце паслядоўны MPI_Sendrcv на неблакіравальную сувязь: MPI_Isend і MPI_Irecv. Напрыкладample: зыходны фрагмент кода:
    // межавы абмен
    пусты абмен (пара* p, сетка* gr){
    int i,j;
    MPI_Status status_100, status_200, status_300, status_400;
    // адправіць уніз першы шэраг
    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,
    &статус_100);
    // адправіць апошні радок
    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);
    Выкарыстоўвайце Intel Trace Analyzer Comparison view каб параўнаць серыялізаванае прыкладанне з перагледжаным
    // капіраванне левага слупка ў масівы 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];
    // адправіць справа
    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] = левы_слупок[i];
    }
    }
    Абноўлены фрагмент кода
    MPI_Request req[7];
    // адправіць уніз першы шэраг
    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);
    Пасля выпраўлення адзіная ітэрацыя перагледжанага прыкладання будзе выглядаць наступным чынамampль:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-10
  2. Выкарыстоўвайце Intel Trace Analyzer Comparison view каб параўнаць серыялізаванае прыкладанне з перагледжаным. Параўнайце два сляды з дапамогай Параўнання View, збіраецца View > Параўнаць. Параўнанне View выглядае падобна на:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-11У Параўн View, вы бачыце, што выкарыстанне неблакіраванай сувязі дапамагае выдаліць серыялізацыю і паменшыць час сувязі працэсаў.
    УВАГА Для атрымання дадатковай інфармацыі аб прадукцыйнасці вашага прыкладання на ўзроўні вузлоў, глядзіце дакументацыю для адпаведных інструментаў: Intel® VTune™ Profiler Аналіз кода MPI і аналіз прыкладанняў Intel® MPI з дапамогай Intel® Advisor.

Даведайцеся больш

Даследуйце наступныя рэсурсы для атрымання дадатковай інфармацыі аб Intel Trace Analyzer і Collector.Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-12Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-13

Заўвагі і адмова ад адказнасці

  • Тэхналогіі Intel могуць запатрабаваць актываванага абсталявання, праграмнага забеспячэння або актывацыі службы.
  • Ні адзін прадукт ці кампанент не можа быць абсалютна бяспечным.
  • Вашы выдаткі і вынікі могуць адрознівацца.
  • © Карпарацыя Intel. Intel, лагатып Intel і іншыя знакі Intel з'яўляюцца гандлёвымі маркамі карпарацыі Intel або яе даччыных кампаній. Іншыя назвы і брэнды могуць быць заяўлены як уласнасць іншых.
  • Гэты дакумент не дае ніякіх ліцэнзій (яўных або пэўных, па законе або іншым чынам) на правы інтэлектуальнай уласнасці.
  • Апісаныя прадукты могуць утрымліваць канструктыўныя дэфекты або памылкі, вядомыя як памылкі, якія могуць прывесці да адхілення прадукту ад апублікаваных спецыфікацый. Бягучыя характарыстыкі памылак даступныя па запыце.
  • Intel адмаўляецца ад усіх відавочных і пэўных гарантый, уключаючы, без абмежавання, падразумныя гарантыі таварнасці, прыдатнасці для пэўнай мэты і адсутнасці парушэнняў, а таксама любыя гарантыі, якія вынікаюць з ходу працы, ходу здзелак або выкарыстання ў гандлі.

Дакументы / Рэсурсы

Intel Пачніце з Intel Trace Analyzer і Collector [pdfКіраўніцтва карыстальніка
Пачніце з Intel Trace Analyzer і Collector, Пачніце з Intel, Trace Analyzer і Collector, Collector

Спасылкі

Пакінуць каментар

Ваш электронны адрас не будзе апублікаваны. Абавязковыя для запаўнення палі пазначаны *