Intel® Inspector XE – инструмент динамического анализа корректности кода, т.е. анализа исполняемого процесса. Inspector XE предназначен для поиска ошибок памяти и проблем, возникающих при взаимодействии потоков, в последовательных и многопоточных приложениях. Инспектировать можно код, написанный на C, C++, C# и Fortran.
Intel® Inspector XE позволяет запустить удаленный анализ на вычислительном узле кластера и просмотреть результаты сбора данных на хосте. Для сбора данных на кластере используется интерфейс командной строки inspxe-cl (Command Line Interface Support). Для просмотра результатов удобно использовать графический интерфейс (GUI), который вызывается командой inspxe-gui
.
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 Leaksmi2
Detect Memory Problemsmi3
Locate Memory Problemsti1
Detect Deadlocksti2
Detect Deadlocks and Data Racesti3
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@@@{at}, где
@@@ - следующий доступный номер для результата в текущем рабочем каталоге, 000 – начальный номер;
{at} – код типа анализа (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.