| 29.10.2011 12:00 | |
В состав Intel Parallel Studio входит API, которое позволяет определить фреймы - границы кода, для которого мы хотим получить профиль. Это может быть полезным, когда необходимо обнаружить участки профиля, соответствующие, например, разным функциям.
Инфраструктура:
- Visual Studio 2008;
- Intel Parallel Studio XE 2011 (компилятор и профилировщик)
Далее предполгается, что проект создан в Visual Studio, поэтому сначала выполняется ряд настроек проекта, а затем вносятся необходимые изменения в исходный код:
- Настройка проекта:
- Прописать пути до заголовочных файлов c:\Program Files (x86)\Intel\VTune Amplifier XE 2011\include\
- Указать пути до .lib файлов c:\Program Files (x86)\Intel\VTune Amplifier XE 2011\lib64\ (или lib32, в зависимости от того, в какой конфигурации собирается)
- Подключить библиотеку libittnotify.lib
- Свойство Configuration Properties->General->Character Set установить в Not Set (нужно, чтобы название в виде обычного массива char можно было задать)
- В исходном коде выставляем границы профилировки:
- Компилируем проект.
- Запускаем профилировку обычным образом, например, из VS (пробовала Hotspots и Concurrency анализ).
- На диаграмме активности потоков сверху будут метки, если кликнуть по ним правой кнопкой и сделать увеличение масштаба, то получим результат профилировки того участка, который мы захватили в фрейм.
#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;
}
Отметим, что при запуске код профилируется в любом случае целиком, а не отдельными фреймами.
Основной недостаток применения установки точек профилировки состоит в том, что необходимо модифицировать исходный код приложения.
Пожалуйста, обратитесь к странице Уведомление об оптимизации для более подробной информации относительно производительности и оптимизации в программных продуктах компании Intel.

