Intel´s East Mill C++ Suite Beta Program_WIP

advertisement
Инструменты Intel® для анализа
производительности
Никита Панов
(nikita.v.panov@intel.com)
Ренат Идрисов
Intel VTune™ Amplifier XE Performance Profiler
• предоставляет информацию о производительности
программ;
• подходит как для последовательных, так и для
многопоточных приложений;
• версии как для Windows, так и для Linux;
• для Windows может интегрироваться в Visual Studio или
работать отдельно с собственным GUI;
• для Linux – только отдельно;
• есть возможность использования из командной строки для
удалённого сбора данных или регрессивного тестирования.
2
Intel VTune™ Amplifier XE Performance Profiler
Помогает проанализировать особенности алгоритма и
определить фрагменты приложения, где оно может
использовать доступные ресурсы более рационально.
Позволяет найти и определить следующее:
• функции, на вычисление которых тратится основное время
(горячие функции);
• фрагменты кода, которые не используют процессор
эффективно;
• области, наиболее сильно нуждающиеся в оптимизации;
• синхронизации, влияющие на производительность
приложения;
• фрагменты кода, создающие эффект бутылочного
горлышка.
3
Шаги по использованию VTune
• Выбрать объект для
анализа.
• Скомпилировать.
• Запустить анализ.
• Интерпретировать
результаты.
• Улучшить приложение
при помощи алгоритмов
оптимизации.
4
Сборка приложения
• Для получения более детальной информации
посредством VTune рекомендуется компилировать
приложения в режиме debug с генерацией символьной
информации
5
Запуск анализа
• Запуск из графического интерфейса осуществляется
интуитивно понятно
6
Анализ
• После выполнения
анализа отображается
общая информация
• Список содержит
функции, на выполнение
которых было затрачено
наибольшее количество
времени
7
Стек вызовов
• Можно просматривать не только функцию, но и стек
вызова
8
Просмотр по вычислительным потокам
• 1 – время
• 2 – вычислительные потоки
• 3 – использование процессора
9
Исходный код
• 1 – код программы, 2 – ассемблерный код,
• 3 – процессорное время,
• 4 и 5 – элементы навигации для быстрого
перемещения по горячим строкам кода
10
Сравнение результатов
• Для определения выигрыша, вызванного
оптимизациями, удобно воспользоваться функцией
сравнения
11
Сравнение результатов
• 1 – различие во времени между версиями
• 2 – время до оптимизаций
• 3 – время после оптимизаций
12
Оценка эффективности использования вычислительных
ресурсов
• Аналогичным образом можно произвести другие виды
анализа, например, locks and waits
13
Осуществление анализа
• После выполнения анализа вам также будет
представлена краткая информация, но уже по другому
аспекту
14
Осуществление анализа
• Также имеется возможность просмотра более
детальной информации по стеку вызова и объектам
синхронизации
• 1 – объект, 2 – использование процессора,
• 3 – количество циклов ожидания
15
Анализ исходного кода
• 1 – строки кода, 2 – использование процессора,
• 3 – общее количество циклов ожидания,
• 4 - навигация
16
Сравнение результатов
• 1 – различия во времени ожидания, 2 – время
ожидания до оптимизаций, 3 – время ожидания после
оптимизаций, 4 – разница в количестве циклов
ожидания, 5 и 6 – количество циклов ожидания.
17
Некоторые события
•CPU_CLK_UNHALTED.CORE – количество тактов
процессора
•INST_RETIRED.ANY – количество исполненных
инструкций
•BUS_TRANS_ANY.ALL_AGENTS – количество всех
транзакций шины
•L2_LINES_IN.SELF.DEMAND – количество промахов по L2
кэшу.
•BR_INST_RETIRED.MISPRED – неправильно
предсказанные ветвления
18
Время доступа к памяти
200
16000
Write Bandwidth(MB/s)
Read Bandwidth(MB/s)
180
14000
160
MB/s
10000
140
CPU: Intel Pentium M (Dothan) 1.8 GHz
RAM: DDR2 SDRAM 266MHz
BUS: 133 MHz
120
cycles
12000
8000
CPU: Intel Pentium M (Dothan) 1.8 GHz
RAM: DDR2 SDRAM 266MHz
BUS: 133 MHz
Latency(cycles)
100
80
60
6000
40
4000
20
0
10
24
12
28
8
23
55
2
35
84
0
58
36
8
88
06
12 4
90
2
18 4
73
9
26 2
82
8
38 8
29
7
54 6
47
6
77 8
10
10 72
89
5
15 3 6
36
0
21 0 0
60
6
30 4 0
36
1
42 6 0
65
9
59 8 4
90
4
84 0 0
08
06
4
2000
size (bytes)
24 20 20 88 00 32 36 40 76 76 64 20 44 68 12 1 6 3 2 7 6 4 8 8 8 88
10 19 35 58 96 15 2 23 9 37 4 58 1 90 1 3 92 1 47 3 09 0 95 8 45 076 584 597 004 706 170
1
2
3
5
7 12 18 28 44 67 0 4
1
size (bytes)
19
Что влияет на то, насколько плохо использует ресурсы
компьютера программа?
• Конкуренция за ресурсы
• «Узкие места» - bottlenecks
 Зависимости (например, по данным)
• Неиспользование каких-то возможностей
(многоядерность, новые архитектурные
возможности,..)
20
Производительность приложения
INST_RETIRED.ANY
350000000
300000000
250000000
200000000
150000000
100000000
50000000
0
21
Производительность приложения
INST_RETIRED.ANY
350000000
Total FSB Commands
2000000
1800000
300000000
1600000
250000000
200000000
1400000
1200000
1000000
150000000
100000000
800000
600000
400000
50000000
200000
0
0
22
Некоторые полезные опции компилятора
•
•
•
•
•
•
/Od (-O0 for Linux) – оптимизации отключены, дебаг-режим.
/O2 (-O2 for linux) – оптимизации «по-умолчанию» .
/O3 (-O3 for linux) – дополнительные оптимизации.
/xO (-xO for Linux) – оптимизация под неинтеловскую архитектуру.
/Qipo (-ipo) - межпроцедурная оптимизация.
/Qparallel (-parallel) – автопараллелизация.
• /Qopt-report (-opt-report)
•
/Qopt-report-file
•
/Qopt-report-phase
•
/Qopt-report-help
•
/Qopt-report-routine
• /Qvec-report [1/2/3]
23
Cluster tools
Intel Trace Collector & Analyzer
Cluster tools предназначены для профилирования
распределённых приложений. Приложений
использующих MPI.
24
ITAC
• Можно увидеть, сколько времени исполнялся
вычислительный код, сколько времени тратилось на
взаимодействие между нодами
25
26
27
28
Спасибо за внимание!
Download