Vtune что это за программа
Перейти к содержимому

Vtune что это за программа

  • автор:

Проекты Центра разработки Intel в России. Intel VTune

Очередная статья к 20-летию Центра разработки Intel в Нижнем Новгороде рассказывает об Intel VTune Profiler – далеко известном и высоко полезном средстве анализа производительности кода программного обеспечения. История VTune отражает все этапы развития Intel в России и даже чуть больше – ведь этот продукт старше нижегородского офиса. Сергей Папков, один из первых руководителей разработки продукта с российской стороны, рассказал нам обо всех перипетиях становления и развития VTune. Ну, и конечно, не забыли мы и о сегодняшнем дне проекта.

Рождение и первые шаги на российской земле

Итак, по отношению к нижегородскому офису Intel профилировщик производительности VTune является не родным ребенком, а приёмным. Но это – как раз тот случай, когда не важно, кто родил, а важно, кто воспитал и вырастил.

Установить происхождение названия VTune сейчас, за давностью лет, уже нереально, но самая правдоподобная версия — это “V”, означающее победу (victory) и tune, означающее не только «настройку», но и мелодию, гармонию. VTune зародился в американских лабораториях Intel в первой половине 90-х годов. Первоначально из всех средств анализа в нем был только самплинг (sampling). Как известно, в процессорах x86 есть встроенный блок слежения за производительностью — Performance Monitoring Unit (PMU); с его помощью можно задать определенные счетчики микроархитектурных событий – выполненных процессором инструкций, промахов кэша, данных о предсказателе ветвлений и т.п. Далее, сопоставив эти снимаемые с PMU метрики с выполняемым кодом, можно получить данные о том, насколько эффективно работает конкретная программа, какие в ней есть «горячие точки» (hotspots). Таков был самый первый функционал VTune Performance Analyzer for Windows (как тогда назывался продукт). Как говорится, строго, сурово и ничего лишнего. Но зато многого не хватало.

Чудом сохранившаяся в Нижегородском офисе коробочная версия VTune 2.1, прямиком из 90-х. Японская локализованная версия, что еще интереснее

В ходе дальнейшего развития и выхода новых версий у профилировщика появился графический интерфейс, который со временем становился функциональнее и удобнее. Сначала участки программ визуализировались в отчёте VTune в виде таблицы названий функций, потом появился Source View, то есть отслеженные метрики можно было не просто ассоциировать с функцией, а найти участок кода этой функции, который является хот-спотом. Далее к процессу разработки продукта присоединилась израильская команда, занимавшаяся в том числе инструментацией (вставкой внешних анализирующих функций непосредственно в исходный код программы) и обработкой данных.

В результате к началу двухтысячных VTune представлял из себя полноценный коммерческий продукт, поддерживающий уже несколько языков: C++, Fortran и даже Java. С точки зрения представления собираемых данных VTune также имел средство графического представления последовательностей вызовов функций (Call Graph), а также инструмент визуализации программных счетчиков операционной системы (Counter Monitor), базировавшийся на утилите Windows PerfMon. К тому времени версия VTune уже достигла 4.х, а количество пользователей по всему миру трудно поддавалось подсчету.

Нижегородская команда NSTL за три месяца до присоединения к Intel, но уже работающая над VTune

Именно в этот момент в работу включилась российская команда разработчиков, первоначально в лаборатории NSTL, впоследствии ставшей основой нижегородского офиса Intel. С нашей стороны проект вела Юлия Федорова, ее команда изначально составляла человек 15, а через два года выросла в 2 раза.

Развитие и метаморфозы

8 апреля 2002 года вышел Intel VTune 6.0 для Windows – в эту версию вошли наработки, сделанные в Нижнем Новгороде: сильно обновлённый графический интерфейс, который, например, сделал Call Graph информативнее, а работу с ним удобнее, а также дополнительные средства анализа собираемой информации. Через несколько месяцев вышла первая версия для Linux, пока без графического интерфейса. В таком виде VTune выпускался еще лет 7-8 и стал незаменимым помощником для тех, кто бьется за каждую миллисекунду выполнения кода.

Нижегородские команды VTune и Intel Debugger во время визита коллег из США и Израиля

Примерно в 2004 году с появлением массовой многоядерности в процессорах, потребовавшей быстрого развития технологий параллельного программирования, от команды VTune отделились группы разработчиков, которые стали заниматься другими инструментами профилировки с говорящими названиями: Intel Thread Checker (Поиск ошибок в параллельных программах) и Intel Thread Profiler (Профилировщик производительности многопоточных программ).

У этих продуктов тоже была своя предыстория. В марте 2000 года Intel купила американскую компанию KAI (Kuck and Associates), созданную в далеком 1977 известным программистом и ученым Дэвидом Куком (David J. Kuck) – он до сих пор работает в Intel и имеет звание Intel Fellow. KAI разрабатывала два продукта: Assure и Guide View, на их основе были созданы Thread Checker и Thread Profiler.

Так продолжалось до 2006 года, когда в результате программы реорганизации Thread Profiler вошел в состав VTune, а Thread Checker вместе с Memory Checker образовали Intel Inspector. А в 2007 многочисленные и разнородные инструменты разработки объединили в один набор, названный Intel Parallel Studio. Его первая версия вышла в 2009 году. В ней VTune Performance Analyzer поменял своё полное название на Intel VTune Amplifier.

Одна из первых инженерных face-to-face встреч в Санта-Кларе, где детально обсуждали новый пользовательский интерфейс — тот самый, что увидел свет в апреле 2002

В процессе работы команда VTune активно экспериментировала с процессом разработки продукта. Например, в ранние годы схема выпуска VTune представляла собой классический «водопад», когда каждый релиз занимал много времени. В 2008-2009 году разработчики перешли на Agile. Конечно, с нынешней точки зрения и согласно последним научным достижениям, это был не совсем Agile, тем не менее, команда занималась оперативным планированием внедрения функционала – не через год или квартал. В таком режиме она работает уже более 10 лет – это одна из самых ранних реализаций Agile в Intel.

От вчера до завтра

В конце нулевых появилась идея переделать VTune полностью. Как это часто случается после долгих лет разработки, продукт стал громоздким, оброс «костылями» и невостребованным функционалом. Для нового воплощения даже придумали рабочее название – VTune New Architecture (VNA). Однако VNA еще находился на стадии внутренних прототипов, когда стартовал проект Parallel Studio, и переделки пришлось отложить, впрочем, буквально через несколько лет дело было доведено до конца, хотя уже несколько в ином виде.

Рабочий процесс Intel VTune

Вообще, задача измерения производительности имеет прямую аналогию с квантовой механикой – чем точнее мы хотим измерить производительность, тем большую погрешность (а значит и неопределенность) в полученные результаты мы вносим самим фактом измерения. Преодолеть это ограничение крайне непросто, но нижегородские инженеры Intel над этим работают, постоянно повышая объективную точность измерений.

В последние десятилетия резко возросло количество задач, связанных с высокопроизводительными вычислениями – high performance computing, HPC, в том числе, выполняемых на кластерах или в облачных инфраструктурах. Для таких сценариев в VTune предусмотрели «облегчённый» вариант работы, без установки всей оболочки. Через интерфейс командной строки можно собирать данные на узлах кластера, а с помощью специально реализованного на базе HTML легкого графического интерфейса – просматривать данные в браузере.

Команда VTune активно сотрудничает со многими научными учреждениями и промышленными предприятиями по всему миру, помогая исследователям и инженерам выжать максимум из имеющихся в их распоряжении вычислительных мощностей. Круг задач, решению которых помогает VTune, предельно широк: это построение атмосферных и геологических моделей, аэродинамика, генетика, молекулярная физика, промышленное моделирование, краш-тесты и так далее. Приведем только один пример подобного сотрудничества.

Intel VTune — функционал Source View

Компания, производящая авиационные двигатели, готовила к выпуску новую модель. Для начала производства модель должна пройти сертификацию, что, в свою очередь, порождает необходимость в испытаниях на прочность. Требуется проверить, что при отрыве одной или двух лопаток турбины гондола двигателя останется невредимой. Каждое испытание стоит чрезвычайно дорого – десятки миллионов долларов, при этом не факт, что с первого раза все получится. Выход – построить математическую модель процесса, которая и была настроена и оптимизирована в том числе с помощью инструментов Intel. Результат – с первого раза получилось построить двигатель, который успешно прошел испытания.

Также, еще до эпохи бурного развития гетерогенных вычислений стало понятно, что профилировки исключительно CPU недостаточно для общего понимания производительности приложения – нужна информация обо всей системе. Именно поэтому в VTune появилась возможность получить данные обо всей платформе исполнения, а именно – о метриках GPU (производства Intel), пропускной способности сети, использовании памяти и диска (компонент Platform Analyzer). А с 2019 года компонент System Analyzer показывает эти данные почти в реальном времени.

Сегодняшний день

По состоянию на текущий момент Intel VTune является частью основного пакета инструментов разработчика ПО Intel oneAPI Toolkit, специализированного набора для создателей аппаратных и программных систем Intel System Bring-up Toolkit (доступен при заключении с Intel договора о конфиденциальности CNDA), кроме того, доступен к загрузке и отдельно – Intel VTune Profiler.

Серверная реализация Intel VTune

Использовать VTune можно как в его собственной графической оболочке (Windows, Linux, macOS), так и в командной строке, а также в интеграции с Microsoft Visual Studio и Eclipse.
VTune собирает данные с удаленных машин, работающих под управлением Windows, Linux (включая Wind River и Yocto), FreeBSD и Android; корректно работает и с виртуальными машинами; поддерживает профилировку кода, написанного не только на C/C++ и Fortran, но и на C#, OpenCL, Data Parallel C++, Python, Google Go, Java, ассемблере и всех возможных комбинациях этих языков.

VTune также показывает эффективность распараллеливания кода с помощью нативных потоков, OpenMP, Intel Threading Building Blocks, MPI.

В конце прошлого года вышла новая версия Intel VTune Profiler 2021, вобравшая в себя большое количество обновлений. Перечислим главные из них:

  • Профилирование издержек выгрузки данных на GPU (GPU offload) для определения целесообразности перемещения данных.
  • Поддержка профилировки приложений на новых дискретных графических картах Intel (Iris Xe MAX).
  • В анализ GPU добавлена поддержка DPC++ и multi-GPU, метрик SIMD, сделана новая диаграмма использования памяти и упрощенный драйвер.
  • Появился новый тип анализа производительности Performance Snapshot (Краткий Анализ), с которого очень удобно начинать анализ проблем с производительностью приложений.
  • Новый тип анализа производительности Anomaly Detection (Обнаружение Аномалий), позволяющий разобраться с причинами отклонений в производительности в часто повторяющихся сходных участках кода – например, итерациях одного цикла
  • В анализ FPGA добавлены новые метрики и их ассоциация с исходным кодом.
  • Поддержка контейнеризации — LXC, Docker, Mesos, Singularity, причём, возможны варианты нахождения профилировщика и профилируемого приложения как в одном контейнере, так и «по разные стороны его границ».
  • Дополнительные возможности исследования энергопотребления приложений на CPU и GPU.

Полезные ссылки (на английском):

  • Загрузка VTune для Windows, Linux и macOS
  • Поваренная Книга (Рецепты работы) Vtune

что такое Vtune? что это за программа? и для чего она служит?

Программа Nvidia Vtune, предназначена для получения информации о видеокарте Nvidia и последующего разгона с помощью Nvidia Vtune. Скачав эту утилиту вы получите множество функций: управление частотами графического процессора, памяти, скорости вращения вентилятора и ряда других полезных функций, имеющихся в этой программе.

Остальные ответы

у меня сомого стоит классная прог, если есть проблемы ты в ней всё найдёшь, даже если перегрев можно поставить больше оборотов, не удаляй прог!!

Intel® VTune™ Performance Analyzer (анализатор производительности) — коммерческое приложение для анализа производительности программ для компьютеров на базе x86-процессоров, причем программа имеет как графический интерфейс пользователя, так и поддержку командной строки.

Вот ответ на твой вопрос, все намного проще, это простенькая программка для разгона, но с таким игрушечным интерфейсом.

Инструменты Intel для профилировки и отладки

На кластере установлено программное обеспечение (ПО) фирмы Intel для профилировки и отладки – Intel Parallel Studio XE. Это ПО позволяет находить наиболее нагруженные места в приложении, подсчитывать степень параллельности программы, находить тупики и гонки в параллельных программах и т.д.

Основные инструменты Advisor XE, Inspector XE и Vtune Amplifier XE находятся в соответствующих папках в каталоге /opt/intel .

Графический интерфейс (GUI) запускается командами

/opt/intel/advisor/bin64/advixe-gui
/opt/intel/inspector/bin64/inspxe-gui
/opt/intel/vtune_amplifier_xe/bin64/amplxe-gui

По умолчанию отлаживаемая программа будет запускаться на управляющей машине кластера и мешать другим пользователям. Как запустить последовательную/параллельную программу на узлах кластера подробно описано в справке, которая доступна по кнопке (?) в GUI (а в формате html на кластере в папках /opt/intel/*/documentation/ ), на сайте Intel https://software.intel.com/en-us/documentation, а также в инструкциях:

Использование 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
  • Сбор данных на вычислительном узле
  • Визуализация результатов в графическом интерфейсе на хосте
  • Пример

Подготовка к работе с 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 , выполнив команду

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

srun ./tachyon_find_hotspots

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

CPU Time: 15.211 seconds.

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

Использование Intel® Advisor XE

Intel® Advisor XE предназначен помочь в достижении максимальной производительности Fortran, C и C ++ приложений, упрощая и улучшая параллелизацию вычислений.
Intel Advisor XE объединяет 2 инструмента оптимизации кода:
1) Vectorization Advisor – инструмент векторизации кода.
Vectorization Advisor позволяет идентифицировать циклы, которые в наибольшей степени выиграют от векторизации; определить, что блокирует (мешает) эффективную векторизацию; исследовать преимущества альтернативной реорганизации данных и повысить уверенность в том, что векторизация безопасна. Vectorization Advisor не только показывает расширенные (по сравнению с компилятором) отчеты по оптимизации, делая это удобным для пользователя способом, но и выдает рекомендации по оптимизации.
2) Threading Advisor – инструмент проектирования многопоточного кода.
Threading Advisor позволяет анализировать, проектировать, настраивать и проверять варианты проектирования потоков без реальной модификации программы.

Intel Advisor XE позволяет запустить удаленный анализ приложения на вычислительном узле кластера, используя интерфейс командной строки (CLI), а именно команду advixe-cl , и просмотреть результаты сбора данных на управляющей машине, используя более удобный по сравнению с CLI графический интерфейс (GUI), который вызывается командой advixe-gui . Из главного окна GUI доступна справочная информация для текущей версии (например, из пункта меню Help (?)).

  • Начальные действия
  • Сбор данных на вычислительном узле
  • Просмотр результатов в GUI на хосте
  • О примерах

Начальные действия

1. Анализ с помощью Advisor XE предназначен для работающих приложений (программ).
Для проведения анализа, прежде всего, следует построить приложение с опциями -g и -O2 (или выше) и проверить его работоспособность.
Замечание. Опция -g используется для запроса полной отладочной информации.
Опция –O[n] задает уровень оптимизации. Для компиляторов Intel при значении -O2 (или выше) возможна векторизация (включены опции –vec и -simd ). При этом опция -O2 установлена по умолчанию.

Запускать приложение с Advisor XE следует в том же окружении, т.е. используя ту же команду mpiset (или соответствующий модуль установки переменных окружения).

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

mpiset 8

2. До использования любой из команд advixe-cl или advixe-gui должно быть установлено Intel Advisor XE окружение командой

source /opt/intel/advisor/advixe-vars.sh

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

Каждому виду оптимизации в Intel Advisor (vectorization/threading) соответствуют определенные этапы анализа приложения, которые объединены в так называемые рабочие процессы (workflows), а именно: Vectorization workflow и Threading workflow. Шаг за шагом выполняя пункты workflows, анализируя возможности распараллеливания кода и оценивая предполагаемую выгоду, пользователь реализует рекомендованные предложения и продвигается в понимании того, что препятствует дальнейшей оптимизации приложения, можно ли её достичь и как.
Подробная информация об этапах анализа приложения приведена в документации Intel, в частности проиллюстрирована в Get Started with Intel Advisor , а также может быть получена по команде

advixe-cl -help workflow

Анализ приложения на кластере следует начать с профилировки (поиска горячих точек) с помощью команды advixe-cl . Запуск её на кластере может иметь вид

srun advixe-cl -collect survey -project-dir ./surv -search-dir src:r=./src -- ./my_app

где
-collect survey означает собрать данные с учетом указанного типа анализа ( survey );
-project-dir ./surv задает каталог surv для записи данных в текущем каталоге;
-search-dir src:r=./src обеспечивает доступ к исходным текстам (рекомендуется);
./my_app – исполняемый файл приложения в текущем каталоге.

Запуск анализа MPI приложения на 4-х ядрах одного узла осуществляется командой

sbatch myrun.sh

со скриптом myrun.sh вида:

#!/bin/bash #SBATCH -t 30 -n 4 -N 1 -L intel --mem-per-cpu 4950 --input /dev/null --job-name mpi.adv --output output --error errors /opt/intel/compilers_and_libraries/linux/mpi/bin64/mpirun "advixe-cl" "--collect" "survey" "--project-dir" "./mpi_surv" "--search-dir" "src=./my_src" "--" "./my_mpi_app"

Для импорта результатов анализа, полученного например 3 процессом, следует выполнить команду вида:

advixe-cl -project-dir ./mpi_surv_3 -import-dir ./mpi_surv -search-dir src=./my_src -mpi-rank=3

Эта команда в текущем рабочем каталоге создает каталог проекта mpi_surv_3 , доступный для просмотра в GUI.

Каталоги, задаваемые опцией -project-dir ( surv, mpi_surv в примерах выше), – это для собранных данных каталоги верхнего уровня. Результаты для последовательных и OpenMP приложений хранятся в каталоге surv/e000, а для n-го процесса MPI приложения – в каталоге mpi_surv/rank.n. В этих каталогах можно увидеть подкаталоги hsxxx, trcxxx, stxxx, dpxxx и mpxxx в зависимости от использованного типа анализа .

Замечание. Полная информация (синтаксис с примерами) об advixe-cl может быть выдана по команде

advixe-cl -help

Уточнить информацию о действии collect позволяет команда

advixe-cl -help collect

Типы анализа:
survey – помогает найти затратные по времени циклы и функции, так называемые «горячие точки» (hotspots), а также дает рекомендации по устранению проблем векторизации и советует, где добавить эффективную векторизацию и/или многопоточность.
tripcounts – собирает статистику по итерациям циклов, что позволяет принять лучшее решение о векторизации одних циклов или о стратегии потоков для других. Этот анализ проводится после survey, т.к. его результаты отражаются в отчете survey.
suitability – предсказывает максимальное ускорение приложения при моделировании многопоточного исполнения. Предсказание строится на основе вставленных аннотаций и ряда параметров моделирования «что-если», с которыми можно экспериментировать для выбора лучших участков при распараллеливании потоками.
dependencies – проверяет зависимости реальных данных в циклах, которые компилятор не векторизовал из-за предполагаемой зависимости, а также предсказывает проблемы совместного использования параллельных данных, базирующихся на вставленных аннотациях. В случае векторизации следует лучше характеризовать зависимости реальных данных, которые могут сделать принудительную векторизацию небезопасной. В случае предполагаемого использования многопоточного распараллеливания исправить проблемы с совместным использованием данных имеет смысл, если прогнозируемая выгода от максимального ускорения оправдает усилия.
Для этого типа анализа приложение строится с опциями -g и -O0 . Входные данные следует сократить настолько, насколько возможно, чтобы минимизировать время счета.
map (Memory Access Patterns) – для отмеченных циклов проверяет наличие проблем с доступом к памяти, таких как несмежный (non-contiguous) или неединичный (non-unit stride) доступ.

Просмотр результатов в GUI на хосте

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

advixe-gui surv &

Для удобства команда выполняется с освобождением командной строки (символ &). Использование & необязательно.
После запуска GUI в открывшемся окне следует выбрать Show My Result, после чего появится окно с панелями: Summary (открывается по умолчанию), Survey & Roofline, Refinement Reports, общими для вкладок Vectorization Workflow и Threading Workflow. По умолчанию открываются отчеты для Vectorization Workflow.
Summary показывает метрики программы (затраченное время, количество потоков) и циклов, выигрыш / эффективность векторизации, наиболее затратные по времени циклы, информацию о платформе.
Survey & Roofline детализирует информацию с учетом типа анализа, показывает исходный код, причины отсутствия векторизации циклов и рекомендации по улучшению кода.
Refinement Reports отображает отчет о шаблонах доступа к памяти (non-unit stride, …) и отчет о зависимостях.
Замечание. Можно получить образец с опциями нужной команды amplxe-cl -collect, используя возможность генерации этой команды в GUI. Выбрав нужный тип анализа, в строке Collect нажать на кнопку Get Command Line.

О примерах

Полезно познакомиться с Intel Advisor на предлагаемых разработчиками примерах. В частности, используя Threading Advisor, исследовать возможность распараллеливания кода для создания многопоточного приложения для программы Tachyon (/opt/intel/advisor/samples/en/C++/tachyon_Advisor.tgz).
Для этого надо скопировать её в свой домашний каталог, распаковать архиватором tar, используя команду

tar zxf tachyon_Advisor.tgz

и дальше следовать рекомендациям из файла README.
Замечание. Анализ тестовой программы tachyon_Advisor проводится в рамках GUI, а следовательно, на управляющей машине кластера. В данном случае это допустимо, поскольку анализ занимает секунды. Полученный же начальный опыт работы в GUI может в дальнейшем пригодиться при анализе своих результатов, собранных на кластере с помощью команды advixe-cl.

Для погружения в тему, помимо обширной документации Intel, могут оказаться полезными (с поправкой на версию), например, следующие статьи:
1. От последовательного кода к параллельному за пять шагов c Intel® Advisor XE, где достаточно подробно описан и проиллюстрирован поэтапный (Survey Target, Annotate Sources, Check Suitability, Check Dependencies) анализ программы tachyon_Advisor .
2. Новый инструмент анализа SIMD программ — Vectorization Advisor, где пошагово (Survey Target, Find Trip Counts, Check Dependencies, Check Memory Access Patterns) проводится исследование кода на векторизацию.

Использование Intel® Inspector XE

Intel® Inspector XE – инструмент динамического анализа корректности кода, т.е. анализа исполняемого процесса. Inspector XE предназначен для поиска ошибок памяти и проблем, возникающих при взаимодействии потоков, в последовательных и многопоточных приложениях. Инспектировать можно код, написанный на C, C++, C# и Fortran.

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

  • Подготовка к запуску
  • Запуск Intel Inspector на вычислительном узле
  • Выдача результатов анализа

Подготовка к запуску

1. Intel Inspector XE проверяет весь исполненный код и не требует специальной перекомпиляции программ. Тем не менее рекомендуется включать в сборку приложения (его отладочной версии с -O0 или релиза) опцию -g для обеспечения связи исполняемого кода с исходным текстом.
Рекомендуется работать в окружении, устанавливаемом командой

mpiset 8

2. Для работы инспектора следует установить Intel Inspector XE окружение, выполнив команду:

source /opt/intel/inspector/inspxe-vars.sh

Примечание.
1. Поиск ошибок памяти (утечки, доступ к неинициализированной памяти и др.) связан с реально возникающими проблемами, поэтому рекомендуется использовать полный набор данных.
2. При поиске ошибок многопоточности (гонки данных, взаимные блокировки и др.) инспектор ищет потенциальные проблемы взаимодействия потоков, поэтому нагрузку на приложение для экономии времени лучше снизить, например уменьшить размер входных данных. При этом в процессе тестирования надо стремиться активизировать разные ветви кода, поскольку будет проанализирован только исполненный код. Так, взаимная блокировка будет найдена, даже если существует только потенциальная возможность её появления в исполнившихся ветках кода. Вот почему проверка потоков иногда сообщает об ошибках в программе, даже если программа выдает (имеет) правильный вывод.

Запуск Intel Inspector на вычислительном узле

Выполнение анализа инициируется командой inspxe-cl с указанием действия collect (сбор данных). Запустить её на кластере можно с помощью команд srun , sbatch или mqrun (см. Запуск задач на кластере). Например для последовательной программы (-n 1):

mqrun -n 1 inspxe-cl -collect mi1 -search-dir all:r=../ -- ./app

где
действие -collect mi1 означает собрать данные об ошибках памяти с учетом типа анализа mi1;
опция -search-dir all:r=../ задает родительский каталог в качестве начального для рекурсивного (r) поиска всех (all) типов файлов (bin, src, sym);
app – исполняемый файл приложения в текущем рабочем каталоге (./).

Основные типы анализа:
mi1 Detect Leaks
mi2 Detect Memory Problems
mi3 Locate Memory Problems
ti1 Detect Deadlocks
ti2 Detect Deadlocks and Data Races
ti3 Locate Deadlocks and Data Races
Рекомендуется начать с первого уровня анализа (mi1, затем ti1), который характеризуется очень низкими накладными расходами (см. Collecting Result Data from the Command Line).
Замечания.
1. Для доступа к текущей документации о команде inspxe-cl следует набрать

inspxe-cl -help

Уточнить информацию о действии collect позволяет команда

inspxe-cl -help collect

2. Можно получить копию команды inspxe-cl -collect , которая будет выполнена в графическом интерфейсе Intel Inspector. Для этого, после вызова GUI:

inspxe-gui &

создать, например, проект (выполнив New Project. ), затем в главном окне выбрать New Analysis. в открывшемся окне Configure Analysis Type выбрать тип анализа (например, Detect Leaks) и, нажав на кнопку Get Command Line, получить соответствующую команду.

Выдача результатов анализа

Собранные данные по умолчанию записываются в результирующий каталог с именем вида r@@@ , где
@@@ — следующий доступный номер для результата в текущем рабочем каталоге, 000 – начальный номер;
– код типа анализа (analysis type).
Результирующий каталог, например r000mi1, содержит результирующий файл с тем же именем и расширением inspxe, например r000mi1.inspxe, а также краткий (суммарный, Summary) отчет в файле inspxe-cl.txt.
Краткий отчет включает общее число проблем, их типы, время старта и окончания анализа.
Замечание. Используя опцию -result-dir в команде inspxe-cl -collect , можно задать свой результирующий каталог. При этом к его имени можно приписать до 5-и знаков @. Это удобно в скриптах: не надо будет обновлять имя каталога каждый раз.

После каждого анализа следует посмотреть краткий отчет в файле inspxe-cl.txt. Если обнаружены проблемы, то можно открыть результат для визуализации в GUI или использовать команду inspxe-cl -report для генерации отчетов одного или более типов из полученного результата. Подробнее о команде см.:

inspxe-cl -help report

Для просмотра результатов проведенного анализа в GUI можно выполнить команду inspxe-gui с указанием результирующего каталога, например:

inspxe-gui r000mi1 &

или выполнить вызов GUI:

inspxe-gui &

и в открывшемся окне, выбрав Open Result, перейти в каталог с результатами анализа и открыть соответствующий файл, например файл r000mi1.inspxe в каталоге r000mi1.

Использование VTune Amplifier 2016 для анализа приложения HelloOpenCL для GPU

VTune Amplifier 2016 можно использовать для анализа программ OpenCL. В этой статье вы узнаете, как использовать это решение, а также как создать простую программу OpenCL под названием HelloOpenCL с помощью Microsoft Visual Studio и Intel OpenCL code builder.

OpenCL — открытый стандарт, предназначенный для реализации параллельного программирования на гетерогенных системах, например в системах с ЦП, GPU, цифровыми сигнальными процессорами, FPGA и другими физическими устройствами. Любые приложения OpenCL обычно содержат две версии кода: для хоста и для устройства (”device kernel” или «ядер»). Хостовые API содержат API двух типов. API платформы предназначены для проверки доступных устройств и их возможностей, с целью выбора и инициализации устройств OpenCL. API среды выполнения используются для настройки и выполнения ядер на выбранных устройствах. Для разработки кода устройств, выполняемых в среде выполнения OpenCL, можно использовать сборщик кода среды разработки Intel OpenCL. У различных поставщиков оборудования собственная реализация среды выполнения OpenCL. Поэтому обратите внимание на то, чтобы была установлена именно нужная среда.

Анализ VTune OpenCL поможет определить, какие ядра OpenCL затрачивают больше всего времени и насколько часто происходит вызов этих ядер. Кроме того, копирование данных между разными аппаратными компонентами также занимает определенное время из-за переключения аппаратного контекста. В VTune метрики чтения и записи памяти OpenCL помогут проанализировать задержки, вызванные доступом к памяти. В следующих разделах мы рассмотрим создание простой программы HelloOpenCL и использование анализа VTune OpenCL с новой функцией схемы архитектуры.

Запустите первую программу OpenCL для GPU — HelloOpenCL

Перед началом разработки программы HelloOpenCL нужно загрузить ряд компонентов. Для сборки кода ядра и проверки совместимости платформы можно загрузить Intel OpenCL code builder, содержащийся в пакете INDE. Во-вторых, на целевое устройство нужно установить реализацию среды выполнения OpenCL. Реализация Intel OpenCL входит в состав графического пакета Intel. Загрузить драйвер можно здесь. Посетите эту страницу для получения инструкций и других вариантов загрузок.

После установки Intel OpenCL code builder можно проверить, какие устройства OpenCL он поддерживает. Эта тестовая целевая система оборудована процессорами Intel® Core™ 4-го поколения (Haswell).

Убедившись, что среда поддерживает нужные устройства OpenCL, как показано на приведенном выше рисунке, можно использовать Microsoft Visual Studio Professional 2013 для создания вашей первой программы OpenCL с помощью установленного шаблона HelloOpenCL, либо использовать непосредственно тот образец кода, который мы включили в данную статью. Этот образец кода запрашивает у устройства GPU выполнение математической операции сложения для двух двухмерных буферов; суммой являются двухмерные выходные буферы. Такой сценарий работы может применяться при использовании типовых фильтров изображений. Вот образец кода HelloOpenCL.

Профилирование HelloOpenCL с помощью VTune Amplifier 2016

  • Запустите VTune в среде разработки VS 2013.
  • Выберите типа анализа Advanced Hotspots.
  • Выберите события доступа к памяти графического оборудования.
  • Установите флажок программ OpenCL.

После успешного сбора журналов VTune вы увидите показанный ниже график анализа VTune, перейдя на вкладку Graphics. Сведения о функциях см. в следующих указателях.

  1. VTune содержит несколько групповых представлений списка вызовов функций. Для программы openCL для GPU имеется групповое представление Computing Task Purpose/*, позволяющее лучше пояснить эффективность API OpenCL с помощью метрик, поддерживающих OpenCL.
  2. Эти аннотации служат для описания кодов API системы OpenCL, выполняющихся на стороне CPU. Они также предоставляют сведения о том, сколько времени CPU занимает одна функция задачи. clBuildProgram интерпретирует код ядра в программу, которую можно запустить в среде выполнения OpenCL. clCreateKernel выбирает одну функцию ядра в предыдущей собранной программе OpenCL, которая может содержать несколько функций ядра. clEnqueueNDRange помещает определенную функцию ядра в очередь команд OpenCL, из которой эта команда принимается и обрабатывается графическим процессором.
  3. На этой временной шкале Intel® HD Graphics 4… показано, что Add — функция ядра, запланированная в реализации среды выполнения на GPU Intel.
  4. Она подсвечивается, когда на оборудовании GPU происходит фактическое действие Add. Между плановым временем выполнения функции ядра и фактическим временем ее выполнения существует промежуток, вызванный определенной подготовкой и переключением контекста.
  5. Это новая функция, доступная в последней версии VTune Amplifier 2016. Как показано на следующем рисунке, здесь отображается эффективность передачи данных с помощью статической формы данных и представлены данные о скорости потоков данных в общей схеме архитектуры GPU. Скорость чтения нетипизированной памяти вдвое выше скорости записи, что совпадает с поведением приложения HelloOpenCL.

По этой схеме архитектуры можно также следить за работой буферов, которые в приложении HelloOpenCL выделяются в кэше 3-го уровня. Эффективность использования GPU можно существенно повысить, поскольку большую часть времени GPU бездействует. Другими словами, устройство Intel OpenCL может выполнять более сложные задачи.

Ссылки по теме

  • Учебные материалы по Intel VTune Amplifier
  • Начало работы с OpenCL Code Builder
  • Драйвера и исполняемые файлы OpenCL для архитектуры Intel

Добавить комментарий

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