FPGA-ускорители уходят в облака
Появление на рынке FPGA-ускорителей, которые можно перепрограммировать сколь угодное число раз, причем на языке высокого уровня типа С, стало настоящим прорывом в нише высокопроизводительных вычислений. Но не меньшим прорывом стала возможность использовать технологию FPGA, не покупая эти весьма дорогостоящие адаптеры (цена в России от 250 тыс.руб.), — а просто арендуя выделенный сервер с ускорителем в […]
Появление на рынке FPGA-ускорителей, которые можно перепрограммировать сколь угодное число раз, причем на языке высокого уровня типа С, стало настоящим прорывом в нише высокопроизводительных вычислений. Но не меньшим прорывом стала возможность использовать технологию FPGA, не покупая эти весьма дорогостоящие адаптеры (цена в России от 250 тыс.руб.), — а просто арендуя выделенный сервер с ускорителем в облаке провайдера.
- Введение в 3-х абзацах
- Базовые отличия FPGA от CPU, GPU
- Области применения FPGA
- Понятие образа конфигурации (IP ядра, имиджа)
- Трудности доступа к технологии для клиентов
- Облачные вычисления на FPGA
- Концепция магазина образов конфигурации FPGA
Введение или о чипах FPGA в 3-х абзацах
Микросхема FPGA (англ. field-programmable gate array), она же программируемая пользователем вентильная матрица (ПЛИС), — это микросхема (ИМС), которую можно реконфигурировать под любые сложные вычислительные задачи. В индустрии существует потребность в специализированных микросхемах (ASIC, application-specific integrated circuit, «интегральная схема специального назначения») — от управления космическими аппаратами и до расчетов по финансовым моделям.
Однако до появления FPGA сильным и одновременно слабым местом специализированных ИМС была жесткая функциональность, заложенная в микросхему, а также высокая сложность проектирования и стоимость запуска в производство. Если функционал затем требовалось потом хоть чуть-чуть изменить, или на этапе проектирования произошли ошибки, то нужно было создавать по сути новую ИМС.
Появление на рынке FPGA-ускорителей, которые можно перепрограммировать сколь угодное число раз, причем на языке высокого уровня типа С, стало настоящим прорывом в нише высокопроизводительных вычислений. Это позволило ускорить время разработки, время выхода продуктов на рынок. Появились совершенно новые возможности для разработчиков аппаратных средств, в т.ч. работающих над программированием специализированных интегральных схем типа ASIC.
FPGA-процессоры прошли уже 2 этапа с точки зрения доступности этой технологии и сегодня активно входят в третий этап. Первые FPGA появились в 1985 году, но их программирование по-прежнему требовало знания языка низкого уровня типа ассемблера. На втором этапе, который начался примерно в 2013 году, и благодаря усилиям компании Altera, появилась возможность программирования на С-подобном языке высокого уровня. Это кардинально расширило применимость FPGA, но высокая стоимость чипов по-прежнему сдерживала расширение круга клиентов, которые могли бы себе позволить эту технологию.
Традиционно маршрут проектирования и верификации ПЛИС крайне трудоемок и требует высокой специализации, по своей сложности маршрут приближается к проектированию ASIC. Это ограничивает использование ПЛИС разработчиками. Особенно, это касается вычислительных приложений, где участники процесса, — программист, математик, алгоритмист, — желают сфокусироваться на своей задаче, а не на ее аппаратной реализации.
Решая эту проблему компания Altera в 2013 году вывела на рынок для своих ПЛИС поддержку открытого стандарта программирования гетерогенных вычислительных платформ OpenCL, что расширило возможность применения аппаратуры разработчиками вычислительных приложений, не знакомых (малознакомых) с аппаратурой ПЛИС, языками HDL, маршрутом проектирования и верификации. Но, осталась проблема – дорогостоящая аппаратура и средства проектирования.
И, наконец, где-то с 2016 года можно говорить о третьем этапе, который ознаменовался доступностью для широкого круга клиентов полностью готовых серверов (физических и виртуальных) с FPGA-процессорами в облаках крупнейших дата-центров — MS Azure, Amazon Web Services (AWS), Cloud Alibaba и Huawei Cloud. В России впервые выделенные серверы с FPGA-процессорами стали доступны в дата-центре Selectel с 2017 года.
Зачем могут потребоваться FPGA-ускорители? Потоки данных все растут с одной стороны, а с другой отмечены сложности в наращивании вычислительной мощности без увеличения размеров и потребления вычислительной системы. Как правило, в приложении есть задачи управления и задачи ресурсоемкой обработки данных. Целесообразно оставить задачи управления на ЦП, а задачи ресурсоемкой обработки отправить на специализированный ресурс. «Конфигурация на лету» под задачу — также представляется весьма полезным свойством.
Синтез вычислительного ресурса на ПЛИС под конкретную задачу также должен дать выигрыш как в приросте производительности, так и в снижении потребления. Также, на ПЛИС присутствует внутренняя быстрая память и развитая (и реконфигурируемая) коммуникационная часть, что позволяет организовывать практически все известные протоколы ввода-вывода. Например, для организации хэш-памяти, аппаратных DSP-блоков, контроллеров памяти и т.д. Иными словами, это развитая система на кристалле, обладающая свойством синтеза конкретного вычислительного ядра под каждую задачу.
Базовые отличия FPGA от CPU, GPU
Какие типы ускорителей доступны на сегодняшний день? Сегодня доступны: специализированные многоядерные процессора Xeon, GPU и FPGA, рассмотрим их ниже. Также возникает и такой вопрос — можно ли их использовать под единым стандартом?
У каждого типа процессора, —универсального (CPU), графического (GPU) или FPGA, — есть свои преимущества, иначе бы их просто не стали производить. CPU обеспечивают хорошую производительность при высшей степени универсальности и применимости. Порядка 99% всех существующих программ написаны для исполнения под CPU. У графических процессоров GPU большее число ядер и векторная архитектура, высокая скорость обмена с памятью и ввода-вывода. FPGA обладают самой большой производительностью на Ватт потребляемой мощности за счет свойств аппаратуры, но требуют очень тщательного и трудоемкого программирования.
Ниже об этих отличиях чуть подробнее:
- Универсальные процессоры CPU — это по сути, рабочие лошадки IT-индустрии. Их можно использовать для самых разнообразных задач, но ввиду своей архитектуры CPU не столь эффективны для параллельных вычислений. В последние годы эта проблема частично решается за счет имплементации в чипе процессора множества ядер. Однако даже у самых производительных CPU число ядер пока измеряется немногими десятками.
- Графические процессоры (GPU) долгие годы работали только в нише отображения информации на экране. И лишь относительно недавно GPU стали применяться для задач высокопроизводительных вычислений, в том числе майнинга криптовалют. Работа с графикой как векторными задачами привела к такому развитию архитектуры GPU, которая стала приспособленной для целей параллельных вычислений. Как результат, современной архитектура графического процессора позволяет ускорить прогон векторизованных данных через свои конвейеры, которые в противном случае пришлось бы запускать через многие другие логические блоки в CPU с соответствующей потерей в производительности. Современные GPU содержат в чипе несколько тысяч процессорных ядер.
- FPGA, в отличие от универсального и графического процессоров, можно перепрограммировать в соответствии с особенностями решаемой на них вычислительной задачи. Получается синтез специализированного процессора под конкретную задачу. Другими важными отличиями FPGA является пониженное энергопотребление в расчете на единицу вычислительной мощности, а также архитектура с параллельным исполнением множества векторных операций одновременно — так называемая массивно-параллельная мелкозернистая архитектура. Число ядер в чипе FPGA может достигать одного миллиона и более.
FPGA-ускоритель, как правило, представляет собой аппаратуру в различном форм-факторе (VPX, Com-express, PCIe и т.д.), которая кроме самого чипа FPGA (или нескольких) содержит на плате память типа SRAM и DRAM, включая ультра-новые HBM (память DRAM с высокой пропускной способностью) и высокоскоростные интерфейсы ввода-вывода, такие как популярные 10/40/100 GE и PCI Express. FPGA-ускорители также выпускаются в форм-факторе SOM (система на модуле, одноплатный компьютер) для целей встраиваемых систем, что популярно в системах видеоаналитики или промышленных применениях.
Каждый чип FPGA содержит в себе массив до 5 млн логических элементов (массив перекодировки и триггеры), который и может быть перепрограммирован под разные функциональные задачи. Кроме того, есть аппаратные ресурсы — кэш-память, сигнальные процессоры, блоки цифровой обработки, блоки интерфейсов.
Почему FPGA выигрывает в производительности у ASIC? Ответ очень простой — благодаря более совершенным техпроцессам создания кристаллов. Для FPGA применяются техпроцессы уровня 20 нм и даже 14 нм. В то время как для создания кристаллов ASIC используются более «древние» техпроцессы уровня 60 нм. Соответственно, на той же площади кристалла у FPGA можно расположить в разы большее число логических ячеек, чем у ASIC, что и обеспечивает выигрыш в производительности.
Области применения FPGA
С момента своего изобретения и вплоть до сегодняшних дней одним из базовых направлений применения FPGA было и остается прототипирование микросхем для мелко- и среднесерийных изделий, когда изготовление микросхем ASIC экономически нецелесообразно.
На начало 2018 года, по сведениям российской компании Алмаз-СП, сферы применения FPGA –ускорителей выглядели примерно следующим образом (цифры могут меняться в зависимости от запуска крупных проектов в той или иной отрасли):
- 50% — спецприменения, ВПК,
- 10% — промышленные применения,
- 20% — телекоммуникации (оборудование базовых станций GSM и др.),
- 10% — обработка видеопотоков (видеостудии, видеоаналитика),
- 10% —прототипирование, прочее (включая применение в науке).
Однако, несмотря на преимущественно военное применение в прошлом, сфера гражданского использования FPGA –ускорителей растет сейчас гораздо быстрее. В 2015 году Intel приобрела одного из крупнейших производителей FPGA — компанию Altera. Разработки Altera теперь воплощаются в кремний уже под брендом Intel. И новая линейка FPGA-чипов, известная как Intel Cyclone 10 не заставила себя ждать. Модели чипа Cyclone 10 GX показывают очень высокую производительность (до 134 GFLOP) и имеют расширенные возможности ввода-вывода.
Подключение к другим устройствам выполняется через сетевой порт 10GE или по шине PCI Express x4. Эти FPGA-чипы предназначены для систем машинного зрения, наблюдения, видео трансляций, а также робототехники. Младшая модель чипа Cyclone 10 LP реализована как вычислительное ядро для инженерных систем — управления комплексами датчиков, контроллерами двигателей и так далее.
Кроме линейки Cyclone, в производственной программе Intel присутствуют и другие серии FPGA-чипов, унаследованные от Altera: MAX, Arria и Startix. Последние две серии — самые мощные чипы FPGA из существующих на рынке, в 2018 году ожидается их обновление до уровня Arria 10 и Startix 10. Startix 10 будет построена на гиперфлекс-архитектуре и обладать производительностью 10 терафлопс (т.е. почти на 3 порядка мощнее Cyclone 10).
Серии Cyclone, MAX, Arria и Startix частично перекрывают друг-друга по производительности, но Intel позиционирует каждую серию отдельно. Для Arria это сигнальные процессоры для приборостроения, для Startix — высокопроизводительные вычисления в дата-центрах, телекоммуникациях. Про области применения для серии Cyclone, которая единственная получила обновления в 2017 году, мы уже говорили. Но еще одну такую область применения для Cyclone стоит упомянуть обязательно — это «Интернет вещей», IoT.
Понятие образа в технологии FPGA
Выше мы перечислили популярные на сегодня серии чипов FPGA от Intel, — но чтобы их использовать в серверах, потребуется приобрести платы FPGA-ускорителей и осуществить программирование логики чипов на адаптере под конкретную прикладную задачу. Платы адаптеров доступны у партнеров Intel, входящих в сообщество FPGA Design Solutions Network. В частности, в России таким партнером является ООО «Алмаз-СП» (также участвует в Эйлер проджект), поставляющее как оригинальные адаптеры Intel, так и платы собственной разработки с чипами FPGA последних поколений.
Если надо абстрагироваться от маршрута проектирования и сфокусироваться на вычислительной задаче, можно воспользоваться OpenCL и Intel FPGA SDK for OpenCL. Для этого потребуется пакет поддержки платы BSP, который позволит абстрагироваться от сложностей построения системы на кристалле (контроллеры памяти, PCIe, интерфейсы, тактовые домены, временные ограничения, частичная реконфигурация и т.д.) и сфокусироваться на вычислительной задаче.
Такой пакет предоставляется, если для платы заявлена поддержка OpenCL (OpenCL BSP). Имея подобный пакет поддержки, можно получить «среду разработчика ПО» — где есть модель платформы, функция для ускорения, библиотека поддержки времени выполнения, модель памяти, а также специальные расширения для увеличения пропускной способности. Затем приступают к написанию кода, профилированию, оптимизации.
В результате использования SDK и BSP получается единый файл конфигурации (битстрим), которым конфигурируется ПЛИС и получается законченная система на кристалле под конкретную вычислительную задачу. Результатом программирования является микропрограмма, решающая конкретную прикладную задачу (например, расчет матрицы уравнений, преобразование видео-форматов и т.д.). Такая микропрограмма называется FPGA-образом (FPGA Image). Достаточно часто вместо термина «образ» используется термин «IP-ядро».
Трудности доступа к технологии FPGA для клиентов
Несмотря на привлекательную концепцию, — «высочайшая производительность под конкретную вычислительную задачу», — широкому распространению FPGA мешают два объективных фактора. Это высокая стоимость адаптера (ускорителя) с чипом FPGA и дефицит разработчиков, имеющих практический опыт программирования и отладки FPGA-ядер.
Кроме ускорителя, необходимо также обзавестись лицензией на Intel OpenCL SDK, без которой возможен только запуск скомпилированных ядер, но невозможна их компиляция. Требования к компьютеру разработчика тоже весьма высоки: это в том числе рекомендации к объему ОЗУ в 18-48 ГБ. На машине с 8-ядерным ЦП и 32 ГБ памяти компиляция ядра для вычисления множества Мандельброта занимает около 2-х часов. Если утилизация процессора превышает 90%, то компиляция может занимать сутки и даже больше. При объеме памяти менее 16 ГБ компиляция может оказаться невыполнимой.
Поэтому потенциальные клиенты активно интересуются этой технологией, но не спешат с приобретением FPGA-ускорителей. Также это связано с опасениями, что затраты на ускоритель(и) будут существенными для их ИТ-бюджета, а in-house команда не сможет на должном уровне освоить программирование и отладку FPGA-образов.
Облачные вычисления на FPGA
Облачные сервисы FPGA появились как ответ на высокую стоимость плат ускорителей с чипом FPGA. В этом случае клиентам предлагаются в аренду физические и/или виртуальные серверы с установленными в них FPGA-ускорителями. Как правило, это партнерский продукт от производителя (например, Intel) и дата-центра как провайдера IaaS-услуг.
Также в Selectel Lab можно будет протестировать выделенный сервер с новым ускорителем EulerLine (ALMZ-02A конструктив 1/2 PCIe).
Одним из решений проблемы доступности технологии для массового применения видится возможность аренды вычислительных мощностей на базе FPGA. В Selectel услуга предполагает получение доступа к серверу с установленным ускорителем линейки Euler производства компании Euler Project на базе Intel Arria 10 FPGA. На сервере развернуты необходимые SDK и BSP для разработки, отладки и компиляции OpenCL-ядер, средства разработки для написания хост-приложений (Visual Studio). В качестве ознакомительной демонстрации предлагается рассмотренный выше пример с построением множества Мандельброта: проект предоставляется в исходных кодах и настроен для компиляции.
Euler Project для всех желающих проводит учебный курс по программированию на OpenCL для FPGA. Данный курс разработан специально для российской аудитории: инженеров, научных сотрудников, студентов технических ВУЗов. Он вобрал в себя материал официальных тренингов Intel и дает возможность пошагового изучения технологии от сборки простейшего приложения до применения специфических методов оптимизации, порой совершенно необходимых для достижения оптимального быстродействия.
В таком виде FPGA-технология становится более привлекательной для клиентов, так как им уже не нужно приобретать непосредственно «железо», а капитальные расходы заменяются на операционные. Соответственно, значительно расширяется круг компаний, которые могут позволить себе использование расчетов на FPGA-ускорителях для своих проектов.
Концепция магазина образов FPGA
Создание эффективно работающего FPGA-образа (IP ядра) для определенной прикладной задачи — достаточно трудоемкая и длительная по времени задача. У хорошо слаженной команды на программирование образа может уйти до пары месяцев, а менее опытные клиенты потратят гораздо больше времени, а то и не справятся с этой задачей вообще.
Поэтому сама собой напрашивается концепция магазина образов (IP ядер), — по аналогии с существующими магазинами приложений для таких платформ как MacOS, Windows или Android. Разработчики могли бы передавать туда работоспособные образы, созданные ими для различных задач, а клиенты — приобретать их для загрузки на свои серверы с FPGA-ускорителями, если эти образы соответствует вычислительным задачам в их проектах.
В компании Selectel в 2018 году начата работа над созданием подобного магазина образов FPGA, которые можно было использовать на арендованных серверах Selectel с этой технологией. Тем самым, для клиентов значительно ускорился бы цикл разработки для новых проектов, а сами программисты (авторские коллективы) получили бы определенный доход от ранее проделанной работы, плюс были бы защищены от пиратского распространения образов по рынку без их согласия.
Полезные ссылки:
- Бесплатное тестирование сервера с адаптером FPGA в Selectel Labs
- Линейки FPGA-чипов Intel (сайт Intel на англ. яз)
- Cyclone 10 — FPGA под маркой Intel (статья Intel на geektimes.ru на рус.яз.)