Установка фреймов профилировки в IPS XE 2011

Создать новую статью

29.10.2011 12:00


В состав Intel Parallel Studio входит  API, которое позволяет определить фреймы - границы кода, для которого мы хотим получить профиль. Это может быть полезным, когда необходимо обнаружить участки профиля, соответствующие, например, разным функциям.

Инфраструктура:

  1. Visual Studio 2008;
  2. Intel Parallel Studio XE 2011 (компилятор и профилировщик)

Далее предполгается, что проект создан в Visual Studio, поэтому сначала выполняется ряд настроек проекта, а затем вносятся необходимые изменения в исходный код:

  1. Настройка проекта:
    1. Прописать пути до заголовочных файлов c:\Program Files (x86)\Intel\VTune Amplifier XE 2011\include\
    2. Указать пути до .lib файлов c:\Program Files (x86)\Intel\VTune Amplifier XE 2011\lib64\ (или lib32, в зависимости от того, в какой конфигурации собирается)
    3. Подключить библиотеку libittnotify.lib
    4. Свойство Configuration Properties->General->Character Set установить в Not Set (нужно, чтобы название в виде обычного массива char можно было задать)
  2. В исходном коде выставляем границы профилировки:
  3. #include "ittnotify.h"
    ...
    int Multiplicate(crsMatrix A, double *x, double *b, double &time) {
    ...
    char name[] = "multi"; // название фрейма
    __itt_frame frame = __itt_frame_create(&name0);
    __itt_frame_begin(frame);
    
    ...
    
    __itt_frame_end(frame);
    ...
    return 0;
    }
    
  4. Компилируем проект.
  5. Запускаем профилировку обычным образом, например, из VS (пробовала Hotspots и Concurrency анализ).
  6. На диаграмме активности потоков сверху будут метки, если кликнуть по ним правой кнопкой и сделать увеличение масштаба, то получим результат профилировки того участка, который мы захватили в фрейм.

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

Основной недостаток применения установки точек профилировки состоит в том, что необходимо модифицировать исходный код приложения.