00ae25279625a6a28db3cadf70966ad4.ppt
- Количество слайдов: 12
Оптимизация Программ С использованием библиотеки Intel IPP Семинар-практикум ННГУ, при поддержке Intel Отчет по стажировке Мишуры Дмитрия
Анализ Intel Signal IPP l Особенности работы с библиотекой (связывание) l Служебные функции l Обзор базовых функций l Специальные функции ЦОС
Первичная профилировка Нахождение ресурсоёмких функций Определение «удельного веса» функции Анализ возможных пенальти Принятие решения об оптимизации
Результаты первичной профилировки Calc_noise: первый кандидат на оптимизацию
Приёмы оптимизации 1. Алгоритмическая оптимизация Свертка функций, замена алгоритмов, упрощение алгоритмов, снижение точности 2. Ручная оптимизация кода Развертка циклов, замена функций и конструкций, оптимизация памяти и кэша, избавление от зависимости по данным, выравнивание данных 3. Применение IPP Векторизация циклов, математические вычисления, замена общих алгоритмов: БПФ, дискретного косинусного преобразования, сжатия Хаффмана
Проблемы оптимизации Lame 1. Алгоритмическая оптимизация уже произведена 2. Ручная оптимизация уже произведена в большинстве случаев 3. Большой объем исходных кодов 4. Машиннозависимая оптимизация исходных кодов 5. Большая разрядность внутреннего представления данных
Пример оптимизации Исходный код: Оптимизированный код:
Результаты оптимизации Время кодирования тестового файла
Общие проблемы оптимизации 1. Ошибки инструментов измерения производительности 2. Погрешности измерений при работе в многозадачной ОС 3. Зависимость результатов оптимизации от архитектуры 4. Зависимость результатов от компилятора 5. Сложность подготовки адекватных тестов
Решения задач оптимизации Алгоритмический уровень • Использование быстрых алгоритмов • Математическое упрощение алгоритмов • Понижение точности алгоритмов Уровень машинных команд • Применение новых инструкций (MMX, SSE 2) • Уменьшение ошибок предсказания переходов (раскрутка циклов, перестановка циклов) • Улучшение использования кэша (локализация переменных, повторное использование буферов) • Улучшение использования памяти (выравнивание) • Распараллеливание инструкций (избавление от зависимости по данным) И С П О Л Ь З О В А Н И Е Б И Б Л И О Т Е К
Условия завершения оптимизации 1. Производительность программы признана удовлетворяющей 2. Отсутствие “горячих точек” в программе 3. Сложность дальнейшей оптимизации 4. Критическая зависимость от платформы 5. Достигнут предел для наилучшего алгоритма
Спасибо за внимание!
00ae25279625a6a28db3cadf70966ad4.ppt