Занятие 1
Введение в OpenCL. Особенности архитектуры FPGA и маршрута проектирования (продолжительность – 90 мин).
- Обзор архитектуры FPGA. Логические блоки, IP-ядра, Interconnect, внешние интерфейсы
- Отличие трансляции алгоритма для универсального процессора и FPGA
- Параллелизм как способ ускорения вычислений. Виды параллелизма в OpenCL
- SIMD-параллелизм и его реализация в OpenCL. Понятие Kernel
- Пример SIMD-параллельной реализации математического алгоритма (построение множества Мандельброта)
- Модель платформы OpenCL. Понятие Host, Compute Device, Compute Unit, Processing Element
- Модель выполнения OpenCL. Понятия Program, Kernel, Work-Item и их взаимосвязь
- Разбор реализации Kernel для процедуры матричного умножения. Компиляция Kernel
Занятие 2
Хост-программа в OpenCL. Обзор функций в стандарте. Написание примера хост-программы (продолжительность – 90 мин).
- Назначение хост-программы. Базовый алгоритм хоста для запуска Kernel
- Опрос платформы и устройств (ускорителей). Обзор функций
- Загрузка Kernel в устройство. Понятия контекста и программы
- Понятие очереди команд. Синхронное и асинхронное выполнение команд
- Виды буферов данных для обмена с ускорителем. Команды чтения-записи буферов
- Передача параметров в Kernel
- Понятие индексного пространства. Запуск Kernel. Обзор функций
- Настройка среды и проекта в Microsoft Visual Studio. Заголовочные файлы и библиотеки OpenCL
- Компиляция хост-программы, запуск из-под отладчика, демонстрация выполнения Kernel
Занятие 3
Практическая работа «Компиляция и запуск типового OpenCL Kernel» (продолжительность – 90 мин).
- Получение навыков написания Kernel для реализации SIMD-параллельного алгоритма и его компиляции средствами Intel OpenCL SDK
- Получение навыков сборки хост-программы для запуска OpenCL Kernel в среде Microsoft Visual Studio
- Освоение понятия индексного пространства. Получение навыков преобразования алгоритма для выполнения в индексных пространствах различной размерности
- Получение навыков отладки OpenCL-программы средствами Microsoft Visual Studio и эмулятора ускорителя
- Обсуждение материала первого дня обучения (Занятия 1-2). Ответы на вопросы
Занятие 4
Intel OpenCL SDK и BSP. Режимы компиляции. Средства отладки и оценки эффективности (продолжительность – 90 мин).
- Intel OpenCL SDK. Назначение и состав. Обзор инструментов пакета Quartus
- Понятие BSP. Обзор BSP ускорителя Euler Thread
- Понятие частичной реконфигурации FPGA
- Назначение утилиты AOC. Обзор режимов работы
- Назначение утилиты AOCL. Обзор режимов работы и демонстрация примеров
- Маршруты компиляции Kernel. Прохождение от функционального тестирования до оптимального дизайна
- Анализ отчетов компиляции. Оценка расходования ресурсов. Выявление «bottle neck». Оценка максимально допустимой тактовой частоты работы ПЛИС
- Применение профилировщика для оценки быстродействия при выполнении на ускорителе
Занятие 5
Методы оптимизации Multiple (SIMD) Work-Item Kernel (продолжительность – 90 мин).
- Пример Kernel для матричного умножения. Обзор проблемы быстродействия
- Модель памяти в OpenCL. Понятие Global-, Local- и Private-memory
- Первый шаг оптимизации: применение Private-memory
- Понятие группировки в индексных пространствах. Функция barrier
- Второй шаг оптимизации: применение Local-memory
- Третий шаг оптимизации: применение расширения индексного пространства
- Разворачивание циклов. Практика применения
- Атрибуты функции Kernel. Задание ограничений на размеры групп. Репликация
Занятие 6
Практическая работа «Оптимизация Single Work-Item Kernel» (продолжительность – 90 мин).
- Теоретическое введение: понятие Single Work-Item Kernel
- Получение базовых знаний о Single Work-Item Kernel
- Генерация кода Kernel из реализации на языке «С» для универсального процессора
- Генерация и анализ отчетов компиляции
- Проведение пошаговой оптимизации и сравнение отчетов
- Обсуждение материала первого и второго дней обучения (Занятия 1-5). Ответы на вопросы
Занятие 7
Особенности Single Work-Item Kernel. Методы оптимизации. (продолжительность – 90 мин).
- Переход от Multiple Work-Item Kernel к Single Work-Item Kernel. Разбор примера реализации цифрового FIR-фильтра
- Преимущества Single Work-Item Kernel. Условия применения
- Отличия в реализации хоста при использовании Single Work-Item Kernel
- Метод оптимизации: конвейерное выполнение
- Метод оптимизации: разворачивание циклов
- Методы оптимизации вычислений с плавающей точкой
- Обзор типовых «bottle neck» и методы их устранения
- Параллелизм на стороне хоста. Конвейерное выполнение нескольких Kernel. Синхронизация. Использование объекта Event
Занятие 8
Специфические возможности FPGA. Технологии Pipe и Channel (продолжительность – 90 мин).
- Понятие Channel. Особенности реализации в BSP
- Чтение и запись в Channel. Блокирующие и неблокирующие операции ввода-вывода
- Особенности реализации Channel для Multiple Work-Item Kernel
- Разбор примера обработки видеопотока с применением Channel. Особенности реализации OpenCL на Intel FPGA SoC
- Понятие Pipe. Отличие Pipe от Channel
- Поддержка Pipe на стороне хост-программы
- Понятие Host Pipe. Потоковая передача данных в ускоритель через интерфейс PCIe
- Разбор примера обработки данных с применением Host Pipe
Занятие 9
Практическая работа «Обработка потоковых данных с использованием Host Pipe» (продолжительность – 90 мин).
- Получение навыков сборки проекта OpenCL в ОС Linux
- Получение навыков реализации Host-to-Kernel взаимодействия посредством Pipe
- Изучение особенностей реализации Pipe в хост-программе
- Получение навыков реализации Kernel-to-Kernel взаимодействия посредством Channel
- Получения навыков использования эмулятора для отладки программ, использующих Channel и Pipe
- Обсуждение материала курса (Занятия 1-8). Ответы на вопросы