Найти тему

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

Оглавление

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

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

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

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

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

-2

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

-3

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

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

Архитектура модуля 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)
  • Потоковый интерфейс с двумя входными и двумя выходными потоками В/В.
-4

Программирование массива 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) с помощью графов.

Процесс программирования происходит в две стадии:

  • Программирование отдельных кернелов:

Кернел описывает некоторый вычислительный процесс. Каждый кернел выполняется на одной ячейке AI Engine, однако одна ячейка AI Engine может обрабатывать несколько кернелей в режиме разделения времени.

Для программирования AI Engine используется код на C/C++. Большая часть кода выполняется на скалярном процессоре. Для достижения максимальной производительности кернела, требуется использовать векторный процессор, используя специальные функции называемые интринсиками (intrinsics). Эти функции предназначены для векторного процессора AI Engine и обеспечивают достижение высокой производительности обработки.

Xilinx предоставляет программистам готовые библиотечные ядра, которые они могут использовать в своих графах.

  • Программирование графа:

Xilinx предоставляет собственный С++ фреймворк для создания графов из кернелей. Этот фреймворк включает в себя описание узлов и связей графов. Узлы могут располагаться как в массиве AI Engine так и в программируемой логике (HLS kernel). Для обеспечения полного контроля над размещением кернелей, используется набор методов, управляющих процессом размещения кернелов, а так же буферов, системной памяти и т.д). Граф описывает инстанциацию кернелей и их соединения посредством буферов и потоков. Он так же описывает передачу данных в AI Engine Array и из него в другие части ACAP (PL, DDR, … ).

Xilinx так же предоставляет библиотеку готовых графов различного применения, которые могут встраиваться в приложения пользователей.

Во время выполнения и моделирования приложение AI Engine управляется со стороны PS.

Также Xilinx предоставляет компоненты времени выполнения, в зависимости от применяемой пользователем ОС:

  • Библиотеку Xilinx Run Time (XRT) и приложение OpenCL для Linux-систем
  • Драйверы для приложений, работающих на “голом железе”

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

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

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

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

ДОПОЛНИТЕЛЬНЫЕ ССЫЛКИ

Информация по ACAP Versal: http://www.xilinx.com/versal

Информация по Versal AI Engine:

Versal ACAP AI Engine Architecture Manual - AM009

• Статья в блоге Xilinx Unveiled the Secret Sauce of the Ultimate AI Inference Compute at XDF ‒ Versal AI Engine Array

• AI Engine white Paper: WP506 - Xilinx AI Engines and Their Applications

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