Започнете со Intel Trace Analyzer и Collector

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

Започнете со Intel® Trace Analyzer и колектор

Користете го овој документ за почеток и претходно собрана трага file да поминете низ основна анализа на перформансите на MPI со Intel® Trace Analyzer и Collector.
Intel Trace Analyzer and Collector помагаат да се истражи ефикасноста на користењето на интерфејсот за пренесување пораки (MPI) и да се идентификуваат точките за комуникација, тесните грла на синхронизацијата и балансирањето на оптоварувањето. За повеќе информации за производот, видете ја страницата на производот Intel Trace Analyzer and Collector.

Преземете го Intel Trace Analyzer и Collector

  • како дел од Intel® OneAPI HPC Toolkit
  • како самостојна алатка

Предуслови

  • Пред да го стартувате Intel Trace Analyzer и Collector, проверете дали сте ја инсталирале најновата Intel® MPI Library и Intel® oneAPI DPC++/C++ компајлерот или Intel® Fortran компајлерот.
  • Ова ги поставува потребните променливи на околината за компајлери, Intel MPI Library и Intel Trace Analyzer и Collector, и вие сте подготвени да ги следите вашите апликации.
  • За повеќе информации, видете: Системски барања на Intel® oneAPI HPC Toolkit.

Разберете го работниот тек

  1. Следете ја вашата апликација
  2. Анализирајте ги најактивните функции на MPI
  3. Идентификувајте ги проблематичните интеракции
  4. Подобрете ги перформансите на вашата апликација со замена на функцијата што предизвикува проблем

Следете ја вашата MPI апликација

Создадете трага file да се соберат дневници за настани за следната анализа на однесувањето на апликацијата.

  1. Поставете ја околината за лансирање на Intel® Trace Analyzer и Collector со извршување на скриптата setvars од директорот за инсталација на oneAPI
    ЗАБЕЛЕШКА
    Стандардно, Intel Trace Analyzer and Collector е инсталиран на /opt/intel/oneapi/itac за Linux* OS и на програмирање Files (x86)\Intel\oneAPI\itac\најнов за Windows* OS.
    На Linux:
    $ извор /opt/intel/oneapi/setvars.sh
    На Windows:
    „C:\Program 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
    За компајлерот Интел Фортран, стартувајте:
    > mpiifort -trace poisson_sendrecv.single.f
    Овој ексample генерира трага (stf*) за какоample poisson_sendrcv.единечна MPI апликација
  3. Отворете го генерираното .stf file со Intel Trace Analyzer со Intel Trace Analyzer и колектор.
    На Linux:
    $ traceanalyzer ./ poisson_sendrecv.single.stf
    На Windows:
    трацеанализатор 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 во вашата апликација.
    За да го направите ова, кликнете со десното копче на All Processes > Group 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.
    • а. Отворете ги графиконите во исто време:
      Во функцијата Проfile графикон, отворете ја картичката Load Balance.
    • Одете во менито Табели за да отворите Message Profile.
    • б. Во картичката Load Balance, проширете ги MPI_Sendrecv и MPI_Allreduce. Load Balancing покажува дека времето поминато во 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 име и временски опсег за конверзија).
    • в. Кликнете на Start за да ја идеализирате вашата трага.
  2. Споредете ја оригиналната трага со идеализираната трага:
    • а. Изберете Напредно > Дијаграм за нерамнотежа или кликнете на Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-8Копче на лентата со алатки (Дијаграм на нерамнотежа).
    • б. Во полето за дијалог Дијаграм за нерамнотежа, кликнете на Отвори друг File копче, одете до идеализираната трага и изберете ја.
    • в. Во прозорецот Дијаграм за нерамнотежа, кликнете на копчето Вкупен режим и изберете Режим на дефект.

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

Можете да видите дека MPI_Sendrecv е функцијата што одзема најмногу време. Тежината на нерамнотежа се прикажува во
светла боја и опфаќа околу 10% за функцијата MPI_Sendrecv. Ова е времето кое процесите го поминуваат чекајќи еден на друг.

Подобрете ги перформансите на вашата апликација со менување на комуникациите

  1. Подобрете ги перформансите на апликацијата MPI со промена на блокирањето во неблокирачки комуникации.
    Во вашиот код заменете го серискиот MPI_Sendrcv со неблокирачка комуникација: MPI_Isend и MPI_Irecv. За прample: фрагмент од оригинален код:
    // размена на граници
    размена на празнини (пара* стр, решетка* гр){
    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->долу, 100, MPI_COMM_WORLD); MPI_Recv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->горе, 100, MPI_COMM_WORLD,
    &статус_100);
    // испрати го последниот ред
    MPI_Send(gr->x_new[gr->lrow], gr->lcol+2, MPI_DOUBLE, gr->горе, 200, MPI_COMM_WORLD);
    MPI_Recv(gr->x_new[0], gr->lcol+2, MPI_DOUBLE, gr->долу, 200, MPI_COMM_WORLD, &status_200);
    Користете ја споредбата на Intel Trace Analyzer view да се спореди серијализираната апликација со ревидираната
    // копирајте ја левата колона во tmp низи
    if(gr->лево != MPI_PROC_NULL){
    gr->x_new[i][gr->lcol+1] = десно_кол[i]; right_col[i] = gr->x_new[i][gr->lcol];
    // испрати десно
    MPI_Send(десно_кол, gr->lrow+2, MPI_DOUBLE, gr->десно, 400, MPI_COMM_WORLD); }
    if(gr->лево != MPI_PROC_NULL)
    {
    MPI_Recv(left_col, gr->lrow+2, MPI_DOUBLE, gr->left, 400, MPI_COMM_WORLD,&status_400); за(i=0; i< gr->lrow+2; i++
    {
    gr->x_new[i][0] = лево_кол[i];
    }
    }
    Ажуриран фрагмент од код
    MPI_Барање барање[7];
    // испрати го првиот ред
    MPI_Isend(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->долу, 100, MPI_COMM_WORLD, &req[0]);
    MPI_Irecv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->горе, 100, MPI_COMM_WORLD, &req[1]);
    …..
    MPI_Waitall(7, бара, MPI_STATUSES_IGNORE);
    Откако ќе се коригира, еднократното повторување на ревидираната апликација ќе изгледа како следниов прampле:Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-10
  2. Користете ја споредбата на Intel Trace Analyzer 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 Corporation или нејзините подружници. Други имиња и брендови може да се бараат како сопственост на други.
  • Ниту една лиценца (експресно или имплицирана, со estoppel или на друг начин) за какви било права на интелектуална сопственост не е дадена со овој документ.
  • Опишаните производи може да содржат дефекти во дизајнот или грешки познати како неправилности што може да предизвикаат производот да отстапи од објавените спецификации. Тековните карактеризирани грешки се достапни на барање.
  • Интел ги отфрла сите изречни и имплицитни гаранции, вклучително и без ограничување, имплицитните гаранции за прометливост, соодветност за одредена цел и непрекршување, како и каква било гаранција што произлегува од текот на извршувањето, текот на работењето или употребата во трговијата.

Документи / ресурси

intel Започнете со Intel Trace Analyzer и Collector [pdf] Упатство за корисникот
Започнете со Intel Trace Analyzer and Collector, Започнете со Intel, Trace Analyzer and Collector, Collector

Референци

Оставете коментар

Вашата адреса за е-пошта нема да биде објавена. Задолжителните полиња се означени *