Започнете с 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 and Collector помага да се изследва ефективността на използване на интерфейса за предаване на съобщения (MPI) и да се идентифицират комуникационни горещи точки, тесни места при синхронизиране и балансиране на натоварването. За повече информация относно продукта вижте продуктовата страница на Intel Trace Analyzer и 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 и Collector, като изпълните скрипта setvars от инсталационния директор на oneAPI
    ЗАБЕЛЕЖКА
    По подразбиране Intel Trace Analyzer and Collector е инсталиран в /opt/intel/oneapi/itac за Linux* OS и в Program Files (x86)\Intel\oneAPI\itac\най-нови за Windows* OS.
    Под 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 Compiler изпълнете:
    > mpiifort -trace poisson_sendrecv.single.f
    Този бившample генерира проследяване (stf*) за asample poisson_sendrcv.единично 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 за poisson, използван в този документ, и го отворете с 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
    • а. В sample, обменът на данни MPI_Sendrecv има пречка: процесът не обменя данни със следващия си съсед, докато не приключи обменът с предишния. График на събитието view показва това тясно място като стълбище.
    • b. MPI_Allreduce в края на итерацията ресинхронизира всички процеси; затова този блок има обратен стълбищен вид.
  6. Идентифицирайте сериализацията, като използвате функцията Profile и Message Profile views.
    • а. Отворете диаграмите едновременно:
      Във функцията Profile диаграма, отворете раздела Load Balance.
    • Отидете в менюто Графики, за да отворите Message Profile.
    • b. В раздела Load Balance разгънете 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 (Идеализация) бутон на лентата с инструменти.
    • b. Проверете параметрите за идеализиране в диалоговия прозорец Идеализация (идеална следа file име и времеви диапазон за преобразуване).
    • ° С. Щракнете върху Старт, за да идеализирате вашата следа.
  2. Сравнете оригиналната следа с идеализираната следа:
    • а. Изберете Разширени > Диаграма на дисбаланс или щракнете върху Get-Started-with-Intel-Trace-Analyzer-and-Collector-fig-8(Диаграма на дисбаланс) бутон на лентата с инструменти.
    • b. В диалоговия прозорец Диаграма на дисбаланс щракнете върху Отваряне на друг 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: Оригинален кодов фрагмент:
    // граничен обмен
    void exchange(para* p, grid* gr){
    int i,j;
    MPI_Статус статус_100, статус_200, статус_300, статус_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 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 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 Corporation. Intel, логото на Intel и други марки на Intel са търговски марки на Intel Corporation или нейните филиали. Други имена и марки могат да бъдат заявени като собственост на други.
  • Този документ не предоставя никакъв лиценз (изричен или подразбиращ се, чрез estoppel или по друг начин) за права върху интелектуална собственост.
  • Описаните продукти може да съдържат конструктивни дефекти или грешки, известни като errata, които могат да доведат до отклонение на продукта от публикуваните спецификации. Текущите характеризирани грешки са налични при поискване.
  • Intel отхвърля всички изрични и подразбиращи се гаранции, включително, без ограничение, подразбиращите се гаранции за продаваемост, пригодност за определена цел и ненарушение, както и всякакви гаранции, произтичащи от курса на изпълнение, курса на работа или употребата в търговията.

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

intel Първи стъпки с Intel Trace Analyzer и Collector [pdf] Ръководство за потребителя
Първи стъпки с Intel Trace Analyzer и Collector, Първи стъпки с Intel, Trace Analyzer и Collector, Collector

Референции

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

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са маркирани *