Авторы: Андрей Ануфриенко, Ренат Идрисов, Виктор Касьянов, Владимирович Никита | Новосибирский Государственный Университет
Форма обучения:
дистанционная
Стоимость самостоятельного обучения:
бесплатно
Доступ:
свободный
Документ об окончании:
 
Уровень:
Специалист
Длительность:
16:32:00
Студентов:
890
Выпускников:
275
Качество курса:
4.27 | 3.95
Курс направлен на изучение основ оптимизации программ при помощи инструментов Intel. Для понимания лекционных материалов требуются базовые навыки программирования на языках C и Fortran.
На первой лекции приводится краткий обзор эволюции возможностей массовых процессоров, затем обозначаются основные оптимизационные моменты и роль компилятора в процессе оптимизации. На последующих лекциях оптимизационные преобразования рассматриваются как с точки зрения улучшения производительности программ вручную, так и при помощи компилятора Intel в автоматическом режиме. Кроме простых скалярных оптимизаций рассматриваются векторизация, распараллеливание и межпроцедурные оптимизации. В качестве инструмента для анализа производительности и оценки эффективности программы используется VTune.
Специальности: Программист
 

План занятий

Занятие
Заголовок <<
Дата изучения
Лекция 1
1 час 20 минут
Архитектура микропроцессора Intel и основные факторы, влияющие на его производительность
На лекции рассматривается упрощённая модель процессора, составляющие его компоненты. Рассматривается многоуровневая модель памяти, использование регистров и оперативной памяти, механизм упреждающей выборки, предсказание переходов. Конвейер. Векторные инструкции. Многоядерность и параллельное выполнение инструкций. Место и роль компилятора в процессе создания эффективного приложения.
-
Лекция 2
17 минут
Инструменты Intel для анализа производительности
Рассматривается анализ производительности приложения при помощи VTune. Выявление критических участков кода, сбор информации о таких событиях как промахи кэширования, неправильное предсказание переходов. Оценка эффективности использования системных ресурсов. Общие рекомендации по использованию VTune в процессе оптимизации работы приложения.
-
Лекция 3
1 час 12 минут
Оптимизирующий компилятор
Архитектура компилятора Intel, его основные компоненты. Синтаксический анализ, дерево разбора. Внутреннее представление компилятора. Вводится понятие информационной зависимости и графов, которые используются при оптимизации программ. Форма с однократным присваиванием. Рассматриваются простейшие операции, позволяющие улучшить производительность кода.
-
Тест 3
42 минуты
-
Лекция 4
1 час 26 минут
Оптимизации циклических конструкций
Рассматриваются простые оптимизации циклов, выполняемые в автоматическом режиме компилятором Intel. Распознание и классификация циклов. Вынос инвариантов и условных переходов. Разбиение, объединение, развёртка, расщепление и перестановка циклов. Особенности анализа зависимостей в циклических конструкциях. Нормализация циклов и распознание индукционных переменных.
-
Лекция 5
1 час 3 минуты
Векторизация
История возникновения и развития векторного расширения в массовых процессорах Intel. Способы использования векторных инструкций и их набор. Векторизация, осуществляемая явным образом при помощи вызова специфических инструкций и автоматическая векторизация при помощи компилятора Intel.
-
Лекция 6
36 минут
Автоматическое распараллеливание
История развития многоядерных процессоров Intel и актуальность создания параллельных программ. Различные модели использования памяти в многопроцессорных системах. Плюсы и минусы многопоточных программ. Возможности компилятора Intel по автоматическому распараллеливанию программ.
-
Тест 6
33 минуты
-
Лекция 7
1 минута
Введение в OpenMP
Использование OpenMP для создания параллельных приложений. Достоинства и недостатки модели, используемой в рамках OpenMP. Основные возможности и директивы управления параллельными вычислениями. Синхронизация и накладные расходы.
-
Лекция 8
1 час 34 минуты
Межпроцедурные оптимизации
Хороший стиль программирования и актуальность различных типов межпроцедурных оптимизаций. Анализ совмещений и распространение информации между процедурами. Управление процессом подстановки при помощи директив и опций командной строки. Частичная подстановка и клонирование процедур. Специфические оптимизации объектно-ориентированных языков программирования.
-
Лекция 9
1 час 36 минут
Статическое и динамическое профилирование
Компиляция приложения, снабженного механизмом сбора информации для динамического профилирования. Плюсы и минусы использования динамической памяти. Способы улучшения работы с динамической памятью. Кодогенератор, задачи и особенности, возникающие в процессе генерации кода. Планирование инструкций.
-
Тест 9
24 минуты
-
1 час 40 минут
-
Александр Мальцев
Александр Мальцев
Россия
Лариса Перерва
Лариса Перерва
Россия, Владивосток, ДВГУ, 1986