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

План занятий

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