875167ab900f77a6bfdc5f4a3ec5f0a4.ppt
- Количество слайдов: 20
Нижегородский Государственный Университет им. Н. И. Лобачевского Оптимизация программ Компиляторная оптимизация под IA-32 архитектуру Зимняя школа ITLab-2010 1 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
Содержание 1. 2. 3. 4. 5. 2 Введение Установка и настройка Работа в командной строке Некоторые приемы и опции компилятора Использованные источники © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
1. Введение 3 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
1. Введение § В данной лекции мы рассмотрим, как использовать Intel C++ Compiler для оптимизации программ. § Изучим, как компилировать при помощи Intel C++ Compiler. § Рассмотрим основные опции и ключи компилятора. 4 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
2. Установка и настройка 5 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
2. Установка и настройка… Установка: § § 6 Установить Microsoft Visual C++ 6. 0 Установить Intel C++ Compiler x. x Встроить компилятор в среду MS VC++ В среде Tools/Intel Compiler Selection Tool выбрать использование Intel C++ Compiler (при необходимости можно вернуться к компилятору Microsoft) © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
2. Установка и настройка… Настройка: § Для корректной работы необходимо настроить окружение § Окружение содержит переменные PATH, INCLUDE, LIB § При работе в среде окружение выставляется автоматически § При работе из командной строки вручную (файл IntelCompilerC++9. 0IA 32BinICLVars. bat) 7 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
3. Работа в командной строке 8 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
3. Работа в командной строке § Создаем. bat файл § В этом файле: – Запускаем установку окружения. – >icl опции исходные файлы библиотеки – >icl /O 2 prog. cpp mylib. lib § Зачастую работа в командной строке более удобна, чем из среды – Уверенность в верности путей – Уверенность в верности опций – Гибкость 9 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
4. Некоторые приемы и опции компилятора 10 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
3. Некоторые приемы и опции компилятора § § § § 11 Отладка и релиз Оптимизация под конкретный процессор Высокоуровневая оптимизация Межпроцедурная оптимизация (IPO) Оптимизация на основе профилирования (PGO) Отчеты Прагмы © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
3. Некоторые приемы и опции компилятора Отладка и релиз § Режим Debug: – годится для отладки; – нет оптимизации; – включена отладочная информация. § Режим Release: – не годится для отладки; – применяется оптимизация в соответствии с заданными ключами; – нет отладочной информации; – требует тестирования, даже если протестировано в режиме Debug! 12 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
3. Некоторые приемы и опции компилятора Оптимизация под конкретный процессор § Позволяет генерировать код с использованием наборов команд современных процессоров (SIMD…). § /Qx{K|W|N|B|P|T|S} или /Qax{K|W|N|B|P|T|S} § Наличие буквы “a” обеспечивает включение общего IA-32 -кода (generic code). § K = PIII + SSE § W = P 4 + SSE 2, SSE (чаще всего используется) § N = P 4 + SSE 2, SSE (Northwood) § B = Pentium M (Banias) § P = P 4 + SSE 3, SSE 2 и SSE (Prescott), Core Duo, Core Solo § T = Core 2 Duo, Dual-Core Xeon + SSSE 3, SSE 2, SSE § S = Core 2 Duo Penryn + SSE 4 § Комбинации ключей: /Qax. KW 13 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
3. Некоторые приемы и опции компилятора Высокоуровневая оптимизация § /Od – оптимизация отключена. § /O 1 – оптимизация без увеличения размера кода. § /O 2 – оптимизация по скорости (основной вариант). § /O 3 – высокоуровневая оптимизация: О 2 + «агрессивная оптимизация» (оптимизация циклов, предвыборка данных – кэш). 14 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
3. Некоторые приемы и опции компилятора Межпроцедурная оптимизация (IPO) § Встраивание функций (избавляемся от накладных расходов). § Оптимизация передачи параметров. Использование регистров, глобальных переменных и констант. § Устранение неиспользуемого кода. § Вынесение инвариантов из цикла. Опции: /Qip – для конкретного файла; /Qipo – оптимизация между файлами. 15 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
3. Некоторые приемы и опции компилятора Оптимизация на основе профилирования (PGO) § Идея: посмотреть, как работает приложение, и использовать эту информацию для ускорения последующих запусков. § Этапы: – инструментальный (/Qprof_gen); – наблюдение (запуск, в ходе которого создается файл. dyn); – итоговая сборка (/Qprof_use). § Хорошо помогает в приложениях со сложными ветвлениями для улучшения работы механизма их предсказания. 16 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
3. Некоторые приемы и опции компилятора Отчеты § Важный способ оптимизации – генерация и просмотр отчетов компилятора об оптимизации. На основе этих отчетов можно модифицировать код для лучшей производительности. § Отчетов много: – /Qopt-report-file. txt Отчет по оптимизации – /Qopt-report-level[level] Отчет с уровнем дет. – /Qopt-report-phase[phase] Отчет по (ipo, hlo…) фазе опт. Полезные отчеты: § /Qopt_report_phase ipo § /Qopt_report_phase hlo § /Qvec_report{0|1|2|3|4|5} – 3 предпочтительно 17 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
3. Некоторые приемы и опции компилятора Прагмы § int _declspec(aligned(16)) a[1000]; // выравнивание § __mm_malloc(adr, nbytes); // выравнивание § #pragma ivdep // Игнорировать подозрение о зависимости по данным § #pragma novector // Не векторизовывать § #pragma vector always // Векторизовывать, несмотря на эвристику § #pragma distribute point // Чтобы разбить цикл на 2 § #pragma loop count(n) // Примерное кол-во итераций цикла § #pragma unroll (n) // Развернуть цикл § #pragma vector aligned // говорит, что данные выровнены 18 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
5. Использованные источники При создании презентации активно использовались материалы встроенной справки Intel C++ Compiler Documentation. 19 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
Вопросы § ? ? ? 20 © ННГУ ВМК 2006 Линёв А. В. , Мееров И. Б. , Сысоев А. В.
875167ab900f77a6bfdc5f4a3ec5f0a4.ppt