Разработка ускорителей приложений
в среде Vitis

ЗАПИСАТЬСЯ НА ОБУЧЕНИЕ

Описание курса

Курс посвящен разработке, отладке и профилированию новых или существующих приложений C/C++ и RTL в унифицированной программной среде Vitis, ориентированных как на центры обработки данных, так и на встроенные приложения. Кроме того, узнаете, как запускать дизайны на ускорительной карте Xilinx Alveo в облачном сервисе Nimbix.

В курсе делается акцент на следующие темы:
- Создание программного приложения с использованием API OpenCL для запуска аппаратных кернелов (вычислительных ядер) на ускорительных картах Alveo
- Создание программного приложения с использованием OpenCL API и Xilinx XRT для планирования аппаратных кернелов и обмена данных на встроенной процессорной платформе
- Демонстрация маршрута проектирования в графическом интерфейсе Vitis и с использованием makefile для центров обработки данных и встроенных приложений.
- Описание исполняемой модели платформы Vitis и XRT
- Описание разработки кернелов с использованием C/C++ и RTL
- Применение анализатора Vitis для анализа отчетов
- Методология оптимизации дизайна

Продолжительность

2 дня

Кому будет полезен курс?

Разработчикам, которым необходимо ускорить выполнение программного приложения, использующего FPGA, SoC (Zynq-7000 SoC, Zynq UltraScale+ MPSoC) и Versal ACAP

Что нужно знать заранее?

Основы архитектуры Xilinx FPGA
Язык программирования C/C++
Маршрут разработки программного обеспечения

Программное обеспечение

Унифицированная программная платформа Vitis

Аппаратная платформа

Архитектура: Ускорительная карта Xilinx Alveo, SoC и ACAP

По завершении курса вы будете иметь все необходимые навыки для того чтобы:

Знать, как архитектура FPGA подходит для параллельных вычислений
Объяснять, как унифицированная программная среда Vitis помогает разработчикам программного обеспечения сосредоточиться на приложениях
Описывать исполняемую модель Vitis (OpenCL API)
Анализировать модели памяти OpenCL API
Создавать кернелы из C/C++ кода или RTL IP с помощью инструмента RTL Kernel Wizard
Применять методы оптимизации кода хоста и кернела
Эффективно перемещать данные между кернелом и глобальной памятью
Профилировать дизайн с помощью анализатора Vitis

Структура курса

День 1

Маршрут проектирования в Vitis
Введение в унифицированную программную платформу Vitis
Объясняется, как разработчики программного/аппаратного обеспечения и разработчики приложений могут воспользоваться преимуществами унифицированной программной среды Vitis и OpenCL framework. {Лекция}
Обзор инструментов платформы Vitis
Описываются элементы маршрута разработки, такие как программная эмуляция, аппаратная эмуляция и запуск системы, а также поддержка отладки кода хоста и кода кернела. {Лекция, Лабораторная работа}
Маршрут проектирования с командной строки
Вводится маршрут использования makefile, где пользователь управляет компиляцией кода хоста и кода кернела. {Лекция, Лаборатория}
Основы аппаратного ускорения
Введение в аппаратное ускорение
Описываются аппаратные ресурсы FPGA, SoC и ACAP, необходимые для реализации оптимальной вычислительной архитектуры для любого алгоритма в Vitis. {Лекция}

Плата ускоритель Alveo для центров обработки данных
Обзор ускорительных карт Alveo для центров обработки данных
Обзор ускорительных карт Alveo для центров обработки данных, перечисляются преимущества этих карт и наборы доступных программных решений. {Лекция}
Обзор решений партнеров Xilinx
Описываются облачные и локальные партнерские решения для ускорительных карт Alveo. {Лекция}
Начало работы с платой ускорителя Alveo
Описываются процедуры установки аппаратного и программного обеспечения для ускорительных карт Alveo. {Лекция}
Введение в облачный сервис Nimbix Cloud
Описывается облачный сервис Nimbix, доступность ускорительных карт Alveo в Nimbix Cloud, и как запустить дизайн на Nimbix. {Лекция}

Модель исполнения Vitis и XRT
Модель исполнения Vitis и XRT
Описываются XRT и API OpenCL, используемые для настройки платформы, выполнения и пост-обработки. {Лекция, Лабораторная работа}
Синхронизация
Описываются методы синхронизации OpenCL, такие как события, барьеры, блокирующая запись/чтение и преимущества использования неупорядоченного исполнения. {Лекция, Лабораторная работа}

День 2

NDRange (факультативно)
Введение в NDRanges
Объясняет основы NDRange (N-мерный диапазон) и модель выполнения OpenCL, которая определяет, как кернелы работают в NDRange. {Лекция}
Работа с NDRanges
Описывается изменение кода хоста и кода кернела относительно NDRange. Также объясняется, как работает NDRange, и как лучше представить размер рабочей группы для архитектуры FPGA. {Лекция}

Анализ дизайна
Профилирование
Описываются различные отчеты, анализатор Vitis, которые помогают оптимизировать обмен данными и оптимизировать кернелы. {Лекция}
Отладка
Объясняется поддержка отладки кода хоста и кода кернела, а также даются советы по отладке системы в целом. {Лекция}

Разработка кернела
Введение в кернелы на C/C++
Показываются компромиссы между описанием на C/C++, OpenCL и RTL и преимущества кернелов, написанных на C. {Лекция, Лабораторная работа}
Использование RTL Kernel Wizard для создания кернела ускорителя из существующего IP
Описывается процесс интеграции кернелов, написанных на RTL, в хост приложение, работающее на процессоре х86, подключенное к FPGA по интерфейсу PCIe. {Лекция, Лабораторная работа}

Руководство по методологии оптимизации
Методология оптимизации
Показывается рекомендуемый порядок оптимизации приложения в унифицированной среде разработки программного обеспечения Vitis. {Лекция}
Оптимизация кернела на основе C/C++
Рассматриваются различных методы оптимизации, такие как развертывание цикла, конвейеризация и DATAFLOW. {Лекция}
Оптимизация кода хоста
Описываются различные методы оптимизации, такие как сокращение накладных расходов на взаимодействие с кернелами и оптимизация передачи данных между кернелами и глобальной памятью. {Лекция}
Оптимизация производительности дизайна
Описываются различные методы оптимизации, такие как оптимизация кода хоста, передача данных между кернелами и глобальной памятью и производительность кернела. {Лабораторная работа}

Библиотеки
Библиотеки ускорителей
Делается обзор доступных библиотек, таких как базовые подпрограммы линейной алгебры (BLAS -Basic Linear Algebra Subroutines), финансовые технологии (Fintech - Financial Technology) и компьютерное зрение OpenCV. Библиотека xfOpenCV представляет собой набор из 60+ кернелов, оптимизированных для Xilinx FPGA и SoC на основе библиотеки компьютерного зрения OpenCV. {Лекция}

ЗАПИСАТЬСЯ НА ОБУЧЕНИЕ