Опубликована: 05.04.2011 | Уровень: для всех | Стоимость: 490.00 руб. | Длительность: 14 дней
Курс направлен на изучение основ оптимизации программ при помощи инструментов Intel. Для понимания лекционных материалов требуются базовые навыки программирования на языках C и Fortran.
На первой лекции приводится краткий обзор эволюции возможностей массовых процессоров, затем обозначаются основные оптимизационные моменты и роль компилятора в процессе оптимизации. На последующих лекциях оптимизационные преобразования рассматриваются как с точки зрения улучшения производительности программ вручную, так и при помощи компилятора Intel в автоматическом режиме. Кроме простых скалярных оптимизаций рассматриваются векторизация, распараллеливание и межпроцедурные оптимизации. В качестве инструмента для анализа производительности и оценки эффективности программы используется VTune.

План занятий

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