Начните работу с Intel Trace Analyzer и Collector

Начало работы с продуктом Intel-Trace-Analyzer-and-Collector

Начните работу с Intel® Trace Analyzer and Collector

Используйте этот документ «Начало работы» и предварительно собранную трассировку. file пройти базовый анализ производительности MPI с помощью Intel® Trace Analyzer and Collector.
Intel Trace Analyzer and Collector помогает исследовать эффективность использования интерфейса передачи сообщений (MPI) и выявлять точки доступа, узкие места синхронизации и балансировку нагрузки. Дополнительные сведения о продукте см. на странице продукта Intel Trace Analyzer and Collector.

Скачать Intel Trace Analyzer and Collector

  • как часть набора инструментов Intel® oneAPI HPC
  • как самостоятельный инструмент

Предпосылки

  • Перед запуском Intel Trace Analyzer and Collector убедитесь, что установлена ​​последняя версия библиотеки Intel® MPI и компилятор Intel® oneAPI DPC++/C++ или компилятор Intel® Fortran.
  • Это устанавливает необходимые переменные среды для компиляторов, библиотеки Intel MPI и Intel Trace Analyzer and Collector, и вы готовы к трассировке своих приложений.
  • Для получения дополнительной информации см. Системные требования Intel® oneAPI HPC Toolkit.

Понимание рабочего процесса

  1. Отследите свое приложение
  2. Анализировать наиболее активные функции MPI
  3. Выявление проблемных взаимодействий
  4. Повысьте производительность вашего приложения, заменив вызывающую проблемы функцию

Отследите свое приложение MPI

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

  1. Настройте среду для запуска Intel® Trace Analyzer and Collector, запустив сценарий setvars из каталога установки oneAPI.
    ПРИМЕЧАНИЕ
    По умолчанию Intel Trace Analyzer and Collector устанавливается в папку /opt/intel/oneapi/itac для ОС Linux* и в программу 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
    Этот бывшийampФайл генерирует трассировку (stf*) для asample poisson_sendrcv.single приложение MPI
  3. Откройте сгенерированный .stf file с помощью Intel Trace Analyzer с Intel Trace Analyzer и Collector.
    В Linux:
    $traceanalyzer./poisson_sendrecv.single.stf
    В Windows:
    трассировщик poisson_sendrecv.single.stf

ПРИМЕЧАНИЕ
В целях тестирования вы можете скачать предварительно собранную трассировку file poisson_sendrecv.single.stf для алгоритма, используемого в этом документе, и откройте его с помощью Intel Trace Analyzer and Collector.
.stf file открывается на странице сводки view, который представляет общую информацию о производительности вашего приложения:Начало работы с Intel-Trace-Analyzer-and-Collector-fig-1Начало работы с Intel-Trace-Analyzer-and-Collector-fig-2ПРИМЕЧАНИЕ Дополнительные сведения о функциях Intel Trace Analyzer и Collector см. в разделе Дополнительные сведения.

Анализировать наиболее активные функции MPI

Проанализируйте поведение приложения MPI, найдите узкие места и определите сериализацию, чтобы найти способы повысить производительность приложения.

  1. На странице сводки откройте временную шкалу событий. view щелкнув «Продолжить» > «Графики» > «Временная шкала событий» для глубокого анализа основных функций MPI.
    На диаграмме отображаются отдельные действия процесса с течением времени.
    Работа приложения является итеративной, где каждая итерация состоит из вычислительной части и связи MPI.
  2. Определите одну итерацию, на которой нужно сосредоточиться, и увеличьте ее масштаб, перетащив указатель мыши через требуемый интервал времени:Начало работы с Intel-Trace-Analyzer-and-Collector-fig-3След view показывает раздел выбранной вами трассы. На диаграмме временной шкалы событий показаны события, которые были активны во время выбранной итерации.
    • Горизонтальные полосы представляют процессы с функциями, вызываемыми в этих процессах.
    • Черные линии обозначают сообщения, отправленные между процессами. Эти линии соединяют отправляющий и принимающий процессы.
    • Синие линии обозначают коллективные операции, такие как операции широковещательной передачи или сокращения.
  3. Переключиться на Flat Profile вкладку (A), чтобы более подробно ознакомиться с функциями, выполняемыми в момент времени, который вы ( выбрали на временной шкале событий.Начало работы с Intel-Trace-Analyzer-and-Collector-fig-4
  4. Разгруппируйте функции MPI, чтобы проанализировать активность процесса MPI в вашем приложении.
    Для этого щелкните правой кнопкой мыши All Processes > Group MPI ( B) в окне Flat Pro.file и выберите UngroupMPI. Эта операция раскрывает отдельные вызовы MPI.
  5. Проанализируйте процессы, взаимодействующие со своими непосредственными соседями, используя MPI_Sendrecv в начале итерации. Для бывшегоampль:Начало работы с Intel-Trace-Analyzer-and-Collector-fig-5
    • а. В сample обмен данными MPI_Sendrecv имеет узкое место: процесс не обменивается данными со своим следующим соседом, пока обмен с предыдущим не завершится. Хронология событий view отображает это узкое место в виде лестницы.
    • б. MPI_Allreduce в конце итерации повторно синхронизирует все процессы; поэтому этот блок имеет вид обратной лестницы.
  6. Определение сериализации с помощью Function Profile и Сообщение Проfile views.
    • а. Одновременно откройте графики:
      В функции Profile график, откройте вкладку Балансировка нагрузки.
    • Перейдите в меню Charts, чтобы открыть Message Pro.file.
    • б. На вкладке Балансировка нагрузки разверните MPI_Sendrecv и MPI_Allreduce. Балансировка нагрузки показывает, что время, затрачиваемое на MPI_Sendrecv, увеличивается с увеличением номера процесса, а время на MPI_Allreduce уменьшается.
    • в. Изучите сообщение Profile Диаграмма вниз к правому нижнему углу.
      Цветовое кодирование блоков указывает на то, что сообщения, перемещающиеся с более высокого ранга на более низкий, требуют пропорционально большего времени, в то время как сообщения, перемещающиеся с более низкого ранга на более высокий, демонстрируют слабый четно-нечетный шаблон:Начало работы с Intel-Trace-Analyzer-and-Collector-fig-6

Результаты сравнительного анализа показывают, что в приложении нет сложных схем обмена, обмен осуществляется только с соседними процессами. Эта информация будет необходима для повышения производительности вашего приложения путем изменения связи, чтобы оптимизировать модель связи приложения.

Выявление несбалансированных коммуникаций

Наблюдайте за своим приложением в идеальных условиях и сравнивайте исходную трассировку file с идеализированным, чтобы изолировать проблемные взаимодействия.

  1. Создайте идеализированный file:
    • а. Выберите «Дополнительно» > «Идеализация» или щелкните значокНачало работы с Intel-Trace-Analyzer-and-Collector-fig-7 Кнопка панели инструментов (Идеализация).
    • б. Проверьте параметры идеализации в диалоговом окне Idealization (идеальная трасса). file имя и временной диапазон конверсии).
    • в. Нажмите Start, чтобы идеализировать вашу трассировку.
  2. Сравните исходную трассу с идеализированной трассой:
    • а. Выберите «Дополнительно» > «Диаграмма дисбаланса» или нажмите кнопку Начало работы с Intel-Trace-Analyzer-and-Collector-fig-8(Диаграмма дисбаланса) на панели инструментов.
    • б. В диалоговом окне "Диаграмма дисбаланса" нажмите кнопку "Открыть другую". File , перейдите к идеализированной трассе и выберите ее.
    • в. В окне Imbalance Diagram нажмите кнопку Total Mode и выберите Breakdown Mode.

Начало работы с 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 статус_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
    если (гр-> слева! = 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); }
    если (гр-> слева != 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] = left_col[i];
    }
    }
    Обновленный фрагмент кода
    Запрос MPI_Request[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, требуется, MPI_STATUSES_IGNORE);
    После исправления единственная итерация исправленного приложения будет выглядеть следующим образом:ampль:Начало работы с Intel-Trace-Analyzer-and-Collector-fig-10
  2. Используйте сравнение Intel Trace Analyzer view сравнить сериализованное приложение с исправленным. Сравните две трассы с помощью сравнения View, собирается View > Сравните. Сравнение View похоже на:Начало работы с Intel-Trace-Analyzer-and-Collector-fig-11В сравнении View, вы можете видеть, что использование неблокирующего взаимодействия помогает убрать сериализацию и сократить время взаимодействия процессов.
    ПРИМЕЧАНИЕ Дополнительные сведения о производительности вашего приложения на уровне узлов см. в документации по соответствующим инструментам: Intel® VTune™ Profiler Анализ кода MPI и анализ приложений Intel® MPI с помощью Intel® Advisor.

Узнать больше

Изучите следующие ресурсы для получения дополнительной информации об Intel Trace Analyzer и Collector.Начало работы с Intel-Trace-Analyzer-and-Collector-fig-12Начало работы с Intel-Trace-Analyzer-and-Collector-fig-13

Уведомления и отказ от ответственности

  • Для технологий Intel может потребоваться активированное оборудование, программное обеспечение или сервис.
  • Ни один продукт или компонент не может быть абсолютно безопасным.
  • Ваши затраты и результаты могут отличаться.
  • © Корпорация Intel. Intel, логотип Intel и другие товарные знаки Intel являются товарными знаками корпорации Intel или ее дочерних компаний. Другие имена и торговые марки могут быть заявлены как собственность других лиц.
  • Настоящий документ не предоставляет никакой лицензии (явной или подразумеваемой, посредством лишения права возражения или иным образом) на какие-либо права интеллектуальной собственности.
  • Описанные продукты могут содержать дефекты конструкции или ошибки, известные как errata, которые могут привести к отклонению продукта от опубликованных спецификаций. Текущие охарактеризованные errata доступны по запросу.
  • Intel отказывается от всех явных и подразумеваемых гарантий, включая, помимо прочего, подразумеваемые гарантии товарного состояния, пригодности для определенной цели и ненарушения прав, а также любые гарантии, вытекающие из хода работы, делового оборота или использования в торговле.

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

Intel Начало работы с Intel Trace Analyzer and Collector [pdf] Руководство пользователя
Начало работы с Intel Trace Analyzer and Collector, Начало работы с Intel, Trace Analyzer and Collector, Collector

Ссылки

Оставьте комментарий

Ваш адрес электронной почты не будет опубликован. Обязательные поля отмечены *