Использование Intel® VTune™ Amplifier XE

Intel VTune Amplifier – мощный инструмент для сбора и анализа данных о производительности кода (профилировки) последовательных и параллельных приложений (программ). Явное указание на участки кода, выполняющиеся дольше всего, и определенная детализация причин задержек могут помочь в модификации программы и тем самым существенно ускорить её исполнение. Можно профилировать код, написанный на C, C++, C#, FORTRAN, Java и Assembly. VTune Amplifier проектировался (и работает) для программ со взаимодействием через общую память, поэтому код с MPI и/или OpenMP может быть профилирован, если он выполняется на одном узле.

VTune Amplifier позволяет запустить удаленный анализ на вычислительном узле кластера и просмотреть результаты сбора данных на хосте (головном узле). Для сбора данных на кластере используется интерфейс командной строки amplxe-cl (Intel® VTune™ Amplifier Command Line Interface). Для просмотра результатов удобно использовать графический интерфейс (GUI), который вызывается командой amplxe-gui.


Подготовка к работе с VTune Amplifier

1. Построить приложение как обычно, с той же опцией оптимизации (-O), но с добавлением опции -g (отладочного режима компиляции) для команд icc, gcc, mpicc, ifort и т.д. Это позволяет профилировать на уровне исходного языка. Рекомендуется использовать (попробовать), например, -O3, чтобы сосредоточиться на оптимизации регионов, не учитываемых компилятором.

2. Установить VTune окружение, выполнив команду:

source /opt/intel/vtune_amplifier_xe/amplxe-vars.sh


Сбор данных на вычислительном узле

1. Для профилировки на кластере приложение должно запускаться исполняемым файлом amplxe-cl. Рекомендуется начать со сбора горячих точек (collect hotspots), т.е. с нахождения самых трудоемких функций в приложении. В этом случае запуск на кластере профилировки последовательной программы my_app может иметь вид:

srun  amplxe-cl  -collect hotspots  ./my_app

По умолчанию в рабочем каталоге пользователя будет создан подкаталог с именем r000hs (при первом запуске), в который будет записан файл вида r000hs.amplxe с полученной информацией. При этом hs – аббревиатура типа анализа (hotspots), 000 – номер, который будет автоматически увеличиваться при следующих запусках.
Имя каталога может быть задано опцией -r (или -result-dir), например,

srun  amplxe-cl  -collect hotspots  -r my_res  ./my_app

Сбор данных (для чистоты эксперимента) желательно проводить на одном и том же узле или разделе кластера с одинаковыми узлами, используя соответствующие опции -w, -p.

2. Для приложений, использующих MPI, необходимо установить не только опцию -n для запроса количества процессов, но и -N 1, чтобы задача полностью находилась на одном вычислительном узле. VTune не способен собирать данные по нескольким узлам!
Опция -gtool (только в Intel MPI, устанавливается по команде mpiset 8) позволяет запускать анализ лишь на выбранных процессах, последовательных или многопоточных (см., например, Профилировка гибридных кластерных приложений MPI+OpenMP).

3. Поскольку основным на кластере является пакетный режим, то запуск приложения для профилировки лучше осуществлять командой sbatch.

Замечания.
1) Для доступа к полной документации команды amplxe-cl в используемой версии VTune следует набрать
    amplxe-cl -help
    amplxe-cl -help collect    - уточнить информацию для конкретного действия (action) collect
    amplxe-cl -help collect hotspots    - дополнительно о типе анализа hotspots и т.п.
2) Можно получить образец нужной команды amplxe-cl, используя возможность генерации этой команды в VTune Amplifier GUI. Следует создать проект, выбрать нужный тип анализа и нажать на клавишу Command Line (подробнее command generation feature на сайте Intel).
Не рекомендуется нажимать на клавишу Start, так как это вызовет запуск приложения на хосте, что может замедлить обслуживание задач других пользователей. Запуск на хосте допустим в крайнем случае для очень коротких задач, не более нескольких минут.
3) Документацию по команде amplxe-cl можно посмотреть на сайте Intel в разделе Intel® VTune™ Amplifier Command Line Interface или найти в GUI в разделе Help, обозначенным в меню вопросительным знаком (?).

Визуализация результатов в графическом интерфейсе на хосте

Для просмотра результатов можно запустить GUI командой

amplxe-gui  &

и в открывшемся окне нажать на кнопку меню (вверху справа), выбрать пункт Open/Result... и найти файл-результат (например, my_res.amplxe в каталоге my_res).
Из рабочего каталога задачи достаточно запустить GUI командой

amplxe-gui  my_res  &

где my_res - каталог с результатами профилировки.
Замечания.
1) VTune Amplifier GUI можно запустить из MobaXterm или X2Go Client.
2) Предполагается, что запуску GUI предшествовала установка VTune окружения.
3) & – не обязательный символ. Он используется для запуска с освобождением командной строки.

Окно с результатами откроется на вкладке Summary (итоговая страница).
Раздел Top Hotspots укажет на наиболее трудоемкие (затратные по времени) функции/подпрограммы приложения пользователя.
Гистограмма использования CPU (CPU Usage Histogram) показывает загрузку одновременно работающих процессоров (CPUs). Она предназначена для параллельных кодов.

Дополнительную информацию можно увидеть, щелкнув на вкладках Bottom-up или Top-down Tree.
Двойной щелчок на строке с именем функции на вкладке Bottom-up приведет к исходному коду приложения и покажет использование CPU относительно отдельных строк. Это укажет на области, на которых следует сфокусировать усилия по оптимизации приложения.

После модификации кода и запуска приложения можно сравнить результаты, полученные до и после оптимизации.
Для этого удобнее воспользоваться GUI

amplxe-gui  &

Затем в открывшемся окне нажать на кнопку меню , выбрать пункт New/Compare Results..., указать нужные файлы и нажать кнопку Compare.

Пример

Опробовать Intel VTune Amplifier можно на примере приложения ray-tracer с именем tachyon из каталога /opt/intel/vtune_amplifier_xe/samples/en/C++.
Соответствующий файл tachyon_vtune_amp_xe.tgz следует
1) скопировать в свой домашний каталог,
2) распаковать архиватором tar

tar zxf tachyon_vtune_amp_xe.tgz

3) получить исполняемый файл tachyon_find_hotspots, выполнив команду

make

4) запустить его на кластере из текущего рабочего каталога

srun ./tachyon_find_hotspots

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

CPU Time: 15.211 seconds.

Заметим, что диагностика Can't open X11 display выдается, поскольку задача выполняется на вычислительном узле.
5) далее можно перейти к профилировке программы tachyon_find_hotspots на кластере, как описано выше.