Пачніце з Intel Trace Analyzer і Collector
Пачніце з 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.
Зразумець працоўны працэс
- Прасачыце сваю заяўку
- Прааналізуйце найбольш актыўныя функцыі MPI
- Вызначце праблемныя ўзаемадзеяння
- Палепшыце прадукцыйнасць вашага прыкладання, замяніўшы функцыю, якая выклікае праблемы
Прасачыце сваё прыкладанне MPI
Стварыць трасіроўку file для збору журналаў падзей для наступнага аналізу паводзін прыкладанняў.
- Наладзьце асяроддзе для запуску 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” - Запусціце прыкладанне 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 - Адкрыйце згенераваны .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, які прадстаўляе агульную інфармацыю аб прадукцыйнасці вашага прыкладання:УВАГА Для атрымання дадатковай інфармацыі аб функцыянальнасці Intel Trace Analyzer і Collector глядзіце "Даведацца больш".
Прааналізуйце найбольш актыўныя функцыі MPI
Прааналізуйце паводзіны прыкладання MPI, знайдзіце вузкія месцы і вызначце серыялізацыю, каб знайсці спосабы павышэння прадукцыйнасці прыкладання.
- На старонцы зводкі адкрыйце часовую шкалу падзеі view націснуўшы Працягнуць > Дыяграмы > Храналогія падзей для глыбокага аналізу галоўных функцый MPI.
Дыяграма адлюстроўвае асобныя дзеянні працэсу з цягам часу.
Прыкладная праца з'яўляецца ітэрацыйнай, дзе кожная ітэрацыя складаецца з вылічальнай часткі і сувязі MPI. - Вызначце адзіную ітэрацыю, на якой трэба засяродзіцца, і павялічце яе, перацягнуўшы курсор мышы на неабходны прамежак часу:
След view паказвае раздзел у межах трасіроўкі, які вы выбралі. Дыяграма часовай шкалы падзей паказвае падзеі, якія былі актыўнымі падчас выбранай ітэрацыі.
- Гарызантальныя палоскі адлюстроўваюць працэсы з функцыямі, якія выклікаюцца ў гэтых працэсах.
- Чорныя лініі паказваюць паведамленні, адпраўленыя паміж працэсамі. Гэтыя лініі злучаюць працэсы адпраўкі і атрымання.
- Сінія лініі азначаюць калектыўныя аперацыі, такія як трансляцыя або скарачэнне.
- Пераключыцеся на Flat Profile ўкладка (A), каб больш падрабязна азнаёміцца з функцыямі, якія выконваюцца ў той час, які вы выбралі на часовай шкале падзей.
- Разгрупуйце функцыі MPI для аналізу актыўнасці працэсу MPI у вашым дадатку.
Каб зрабіць гэта, пстрыкніце правай кнопкай мышы Усе працэсы > Група MPI (B) у Flat Profile і абярыце UngroupMPI. Гэтая аперацыя паказвае асобныя выклікі MPI. - Прааналізуйце працэсы, якія ўзаемадзейнічаюць са сваімі прамымі суседзямі, выкарыстоўваючы MPI_Sendrecv у пачатку ітэрацыі. Напрыкладampль:
- а. У сample, абмен дадзенымі MPI_Sendrecv мае вузкае месца: працэс не абменьваецца дадзенымі са сваім наступным суседам, пакуль не завершыцца абмен з папярэднім. Храналогія падзей view адлюстроўвае гэта вузкае месца як лесвіцу.
- б. MPI_Allreduce у канцы ітэрацыі паўторна сінхранізуе ўсе працэсы; таму гэты блок мае выгляд зваротнай лесвіцы.
- Вызначце серыялізацыю з дапамогай Function Profile і Message Profile views.
- а. Адначасова адкрыйце дыяграмы:
У функцыі Profile дыяграму, адкрыйце ўкладку «Баланс нагрузкі». - Перайдзіце ў меню "Дыяграмы", каб адкрыць Message Profile.
- б. На ўкладцы «Баланс нагрузкі» разгарніце MPI_Sendrecv і MPI_Allreduce. Балансіроўка нагрузкі паказвае, што час, затрачаны на MPI_Sendrecv, павялічваецца разам з нумарам працэсу, а час для MPI_Allreduce памяншаецца.
- в. Вывучыце Message Profile Графік апусціцца ў правы ніжні кут.
Каляровае кадаванне блокаў паказвае, што паведамленні, якія перамяшчаюцца з больш высокага рангу ў больш нізкі ранг, патрабуюць прапарцыйна больш часу, у той час як паведамленні, якія перамяшчаюцца з больш нізкага рангу ў больш высокі ранг, выяўляюць слабую цотна-няцотную схему:
- а. Адначасова адкрыйце дыяграмы:
Вынікі параўнальнага аналізу паказваюць, што ў дадатку няма складаных схем абмену, абмен ажыццяўляецца толькі з суседнімі працэсамі. Інфармацыя будзе мець важнае значэнне для кроку "Палепшыце прадукцыйнасць вашага прыкладання шляхам змены камунікацый", каб аптымізаваць мадэль сувязі прыкладання.
Вызначце дысбаланс сувязі
Сачыце за сваім дадаткам у ідэальных умовах і параўноўвайце зыходны след file з ідэалізаваным, каб ізаляваць праблемныя ўзаемадзеяння.
- Стварыць ідэалізаваны file:
- а. Абярыце Дадаткова > Ідэалізацыя або націсніце
Кнопка панэлі інструментаў (Ідэалізацыя).
- б. Праверце параметры ідэалізацыі ў дыялогавым акне Ідэалізацыя (ідэальны след file імя і дыяпазон часу для пераўтварэння).
- в. Націсніце "Пуск", каб ідэалізаваць свой след.
- а. Абярыце Дадаткова > Ідэалізацыя або націсніце
- Параўнайце зыходны след з ідэалізаваным следам:
- а. Абярыце Дадаткова > Дыяграма дысбалансу або націсніце
(Дыяграма дысбалансу) кнопка панэлі інструментаў.
- б. У дыялогавым акне "Дыяграма дысбалансу" націсніце "Адкрыць іншы". File кнопку, перайдзіце да ідэалізаванай рысы і выберыце яе.
- в. У акне дыяграмы дысбалансу націсніце кнопку Total Mode і абярыце Breakdown Mode.
- а. Абярыце Дадаткова > Дыяграма дысбалансу або націсніце
Вы бачыце, што MPI_Sendrecv - самая працаёмкая функцыя. Вага дысбалансу адлюстроўваецца ў
светлага колеру і складае каля 10% для функцыі MPI_Sendrecv. Гэта час, які працэсы праводзяць у чаканні адзін аднаго.
Палепшыце прадукцыйнасць вашага прыкладання, змяніўшы камунікацыі
- Палепшыце прадукцыйнасць прыкладання 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ль: - Выкарыстоўвайце Intel Trace Analyzer Comparison view каб параўнаць серыялізаванае прыкладанне з перагледжаным. Параўнайце два сляды з дапамогай Параўнання View, збіраецца View > Параўнаць. Параўнанне View выглядае падобна на:
У Параўн View, вы бачыце, што выкарыстанне неблакіраванай сувязі дапамагае выдаліць серыялізацыю і паменшыць час сувязі працэсаў.
УВАГА Для атрымання дадатковай інфармацыі аб прадукцыйнасці вашага прыкладання на ўзроўні вузлоў, глядзіце дакументацыю для адпаведных інструментаў: Intel® VTune™ Profiler Аналіз кода MPI і аналіз прыкладанняў Intel® MPI з дапамогай Intel® Advisor.
Даведайцеся больш
Даследуйце наступныя рэсурсы для атрымання дадатковай інфармацыі аб Intel Trace Analyzer і Collector.
Заўвагі і адмова ад адказнасці
- Тэхналогіі Intel могуць запатрабаваць актываванага абсталявання, праграмнага забеспячэння або актывацыі службы.
- Ні адзін прадукт ці кампанент не можа быць абсалютна бяспечным.
- Вашы выдаткі і вынікі могуць адрознівацца.
- © Карпарацыя Intel. Intel, лагатып Intel і іншыя знакі Intel з'яўляюцца гандлёвымі маркамі карпарацыі Intel або яе даччыных кампаній. Іншыя назвы і брэнды могуць быць заяўлены як уласнасць іншых.
- Гэты дакумент не дае ніякіх ліцэнзій (яўных або пэўных, па законе або іншым чынам) на правы інтэлектуальнай уласнасці.
- Апісаныя прадукты могуць утрымліваць канструктыўныя дэфекты або памылкі, вядомыя як памылкі, якія могуць прывесці да адхілення прадукту ад апублікаваных спецыфікацый. Бягучыя характарыстыкі памылак даступныя па запыце.
- Intel адмаўляецца ад усіх відавочных і пэўных гарантый, уключаючы, без абмежавання, падразумныя гарантыі таварнасці, прыдатнасці для пэўнай мэты і адсутнасці парушэнняў, а таксама любыя гарантыі, якія вынікаюць з ходу працы, ходу здзелак або выкарыстання ў гандлі.
Дакументы / Рэсурсы
![]() |
Intel Пачніце з Intel Trace Analyzer і Collector [pdfКіраўніцтва карыстальніка Пачніце з Intel Trace Analyzer і Collector, Пачніце з Intel, Trace Analyzer і Collector, Collector |