Versal ACAP AI Engine для чайников

Введение в ACAP VersalTM 

Versal Adaptive Compute Acceleration Platform (ACAP) - это последнее поколение устройств Xilinx, построенных на техпроцессе TSMC 7 нм FinFET. Они сочетают в себе скалярные вычислительные модули (процессорную систему (PS)), программируемую логику (PL) и интеллектуальные модули. Все эти части объединяются с помощью высокоскоростной сети на кристалле (NoC).

Введение в ACAP Xilinx Versal

В этой статье основное внимание уделяется модулям (IP ядрам) искусственного интеллекта, которые являются частью интеллектуальных модулей.

Введение в модули Xilinx AI

Модули AI включены в ACAP Xilinx Versal семейства AI Core. Они организованы как двумерный массив  модулей AI Engine, которые соединены вместе с интерфейсами памяти, а так же потоковым и каскадным интерфейсами . Этот массив может содержать до 400 элементов AI (например, на устройстве VC1902). Массив также включает AI Engine interface , расположенный в последней строке массива, что позволяет массиву взаимодействовать с остальной частью устройства (PS, PL и NoC).

Массив AI Engine interface Xilinx Versal

AI Engine Interface включает, блоки связи с PL и NoC и модуль конфигурации. Интерфейс от PL к массиву AI Engine выполняется с использованием интерфейсов AXI4-Stream через модули интерфейса PL и NoC. Интерфейс от NoC к массиву AI Engine выполняется с использованием интерфейсов AXI4-MM (MM-Memory Mapped) через модули интерфейса NoC.

Интерфейс от NoC к массиву AI Engine Xilinx Versal

Интересно отметить, что прямой канал связи AXI4-MM доступен только от NoC к блокам AI Engine, но не в обратную сторону.

Примечание: Точное количество модулей интерфейса PL и NoC зависит от устройства и указан в документе Versal Architecture and Product Data Sheet: Overview (DS950).

Архитектура блока AI Engine

 
Рассмотрим теперь подробнее архитектуру одной ячейки матрицы AI Engine и внутреннюю структуру отдельного вычислительного модуля.
Архитектура блока AI Engine Xilinx Versal
Каждая ячейка AI Engine включает в себя:
  • один модуль связи с каналами в/в AXI4-Stream и AXI4-ММ
  • один модуль памяти на 32 KB данных, разделенных на 8 банков, интерфейс памяти, модуль DMA и механизм блокировок.
  • один модуль AI Engine
Модуль AI Engine может иметь доступ максимум к 4 модулям памяти по четырем направлениям, составляющих непрерывное адресное пространство. Таким образом, отдельный блок AI может адресоваться не только к своей памяти, но и к памяти трех своих соседей (если, конечно, не находится на краю массива).

Архитектура модуля AI Engine

Модуль AI Engine – глубоко оптимизированный процессор, состоящий из следующих частей:
  • 32-битный скалярный процессор RISC (или Скалярный модуль)
  • 512-битный SIMD модуль векторных вычислений, выполняющий целочисленные/с фиксированной точкой и модуль векторных вычислений с плавающей точкой одинарной точности. (SPFP)
  • Три блока генерации адреса
  • Блок декодирования и обработки очень длинных команд (Very-long instruction word, VLIW) Three data memory ports (Two load ports and one store port)
  • Потоковый интерфейс с двумя входными и двумя выходными потоками В/В.

Архитектура модуля AI Engine Xilinx Versal

Программирование массива AI Engine
 
AI Engine скомпонованы в массивы, содержащие от 10 до 100 отдельных модулей. Создание единой программы параллельных вычислений для них с было бы  чрезвычайно утомительной, почти невыполнимой задачей. Поэтому программирование массива AI Engine производится по модели Kahn Process Networks, в которой автономные вычислительные процессы соединены друг с другом с помощью создаваемых сетевых процессов. (см. https://perso.ensta-paris.fr/~chapoutot/various/kahn_networks.pdf)
 
В AI Engine framework, ребра графа представляют собой буфера и потоки, а вычислительные процессы называются kernels (ядра). Кернелы инстантиируются и связываются друг с другом, а так же с остальной аппаратурой (NoC, PL) с помощью графов.
 
Процесс программирования происходит в две стадии:
  1. Программирование отдельных кернелов:
Кернел описывает некоторый вычислительный процесс. Каждый кернел выполняется на одной ячейке AI Engine, однако одна ячейка AI Engine может обрабатывать несколько кернелей в режиме разделения времени.
Для программирования AI Engine используется код на C/C++. Большая часть кода выполняется на скалярном процессоре. Для достижения максимальной производительности кернела, требуется использовать векторный процессор, используя специальные функции называемые интринсиками (intrinsics). Эти функции предназначены для векторного процессора AI Engine и обеспечивают достижение высокой производительности обработки.
Xilinx предоставляет программистам готовые библиотечные ядра, которые они могут использовать в своих графах.
  1. Программирование графа:
Xilinx предоставляет собственный С++ фреймворк для создания графов из кернелей. Этот фреймворк включает в себя описание узлов и связей графов. Узлы могут располагаться как в массиве AI Engine так и в программируемой логике (HLS kernel). Для обеспечения полного контроля над размещением кернелей, используется набор методов, управляющих процессом размещения кернелов, а так же буферов, системной памяти и т.д). Граф описывает инстанциацию кернелей и их соединения посредством буферов и потоков. Он так же описывает передачу данных в AI Engine Array и из него в другие части ACAP (PL, DDR, … ).
 
Xilinx так же предоставляет библиотеку готовых графов различного применения, которые могут встраиваться в приложения пользователей.
Программирование массива AI Engine Xilinx Versal
Во время выполнения и моделирования приложение AI Engine управляется со стороны PS.
 
Также Xilinx предоставляет компоненты времени выполнения, в зависимости от применяемой пользователем ОС:
• Библиотеку Xilinx Run Time (XRT) и приложение OpenCL для Linux-систем
• Драйверы для приложений, работающих на “голом железе”
 
 

Оригинал статьи.

Авторы: Оливье Тремуа, технический маркетинг AI Engine Tools, и Флоран Вербрук, инженер технической поддержки Xilinx по применению продуктов

Перевод: ГК Макро Групп - официальным дистрибьютором ПЛИС Xilinx.

Редактор: Владимир Вилукининженер по применению Xilinx.

Любые вопросы по продукции Xilinx задавайте по адресу fpga@macrogroup.ru или по телефону 8 (800) 333-06-05.

 

Дополнительные Ссылки

Информация по ACAP Versal: http://www.xilinx.com/versal
Информация по Versal AI Engine:
 
Обращаем Ваше внимание, что Versal ACAP AI Engine все еще находится в раннем доступе до выпуска 2020.2. До этого никакой информации, кроме той, которая содержится в документе AM009, предоставлено не будет. Инструменты программирования AI Engine  также находятся в раннем доступе. Они так же станут доступны в открытом доступе начиная с версии 2020.2.