Облачные FPGA

Компания Amazon начала предоставлять в аренду облачные сервера EC2-F1 с блоками FPGA

В этой заметке я расскажу почему это интересно. Статья написана для моих непосредственных знакомых, если вам что то кажется очевидным, просто листайте вниз. Если что то непонятно, не стесняйтесь спрашивать.

Параллельные вычисления

Возьмем простой пример. Вы хотите посчитать

x = (3+4)*2+8

Представьте, что у вас есть калькулятор, который выполняет 1 арифметическую операцию в секунду. И толпа друзей с такими же калькуляторами.

Скорость ваших вычислений никак не вырастет, будете вы один или с компанией — вам потребуется 3 секунды на 3 арифметических действия. Сначала вычислить сумму в скобках, потом произведение, потом еще раз сумму. Остальные друзья могут только смотреть и подбадривать.

Но многие задачи хорошо поддаются распараллеливанию, например

x = (3+6) * (6+8) * (7+9)*( 7+9)

Здесь требуется выполнить 4 сложения и 3 умножения. Если вы один с вашим калькулятором, то быстрее чем за 7 секунд не справится. Но если у вас есть 4 друга, то ситуация заметно улучшается. Сначала каждый из четырех друзей одновременно выполняют 4 сложения, что занимает у вас 1 секунду

x = (9) * (14) * (16)*(16)

Затем на второй секунде один из них перемножает 9*14, а другой 16*16, а на третьем шаге вы сами перемножаете полученные ответы. Итого вам потребовалось 3 секунды вместо 7 за счет распараллеливания вычислений. Какой вы молодец

Итого у вас есть два пути ускорения вычислений

  • Повышать скорость вашего калькулятора, так чтобы он мог выполнять не одну, а миллиарды операций в секунду.
  • Для задач, которые поддаются распараллеливанию, разрабатывать вычислители, работающие параллельно.
  • Собирать быстрые калькуляторы и параллельные вычислители в кластеры и облака

На чем считаем

В вашем компьютере установлен центральный процессор (CPU) который работает на очень высокой частоте, имеет в себе несколько очень быстрых ядер и быструю память. Этот процессор универсальный и подходит для выполнения любых задач. Он особенно хорош, когда ваша задача решается строго последовательно.

Еще у вас есть блок графического ускорителя, GPU. GPU адаптирован для выполнения задач, которые можно эффективно решать параллельно. В нем много ядер, много конвейеров, каждый из них слабее CPU, но вместе они могут обеспечить гораздо бОльшую производительность.

Начиналось все с продукта CUDA, который позволял неигровым приложениям использовать игровые видеокарты для собственных вычислений. Сегодня компания NVidia выпускает специальные ускорители, которые вообще не имеют выводов для дисплея.

Разные чипы, например блок памяти в вашем телефоне, CPU в компьютере и контроллер микроволновки являются заказными микросхемами — ASIC. Кто то придумал схему их работы, разработал электрическую схему, придумал как ее воплотить на транзисторах и изготовил в кремнии.

Сегодня чаще всего под ASIC подразумевают микросхемы сделанные для решения конкретных задач. Арифметика для производства ASIC выглядит на качественном уровне примерно так — за 1 000 000$ можно получить 100 000 штук асиков. Или 10 штук, но все равно за миллион. Это становится выгодно, если вы например Intel и ваш ASIC это продающийся по всему миру процессор. Или если вы продаете железо для майнинга биткоинов.

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

Наконец есть очень узкая область, о которой много кто слышал, мало кто работал и в которой много лет работаю я. Это область FPGА (Field Programmabale Gate Arrays) или программируемые пользователем матрицы вентилей. По-русски их еще называют ПЛИС, но поскольку русских ПЛИС фактически нет, далее этот термин использовать не буду.

FPGA

В чипе FPGA производитель (здесь и далее говорим о продукции Xilinx) уже реализовал множество полезных блоков.

  • Триггеры для хранения информации и сборки их в конвееры
  • Луты — логические блоки (LUT, Look-up-Table) реализующие логические функции (например сумму, и, или, мультиплексоры)
  • Блоки DSP, блоки в которых содержатся сумматоры и умножалки для (вы не поверите) арифметических операций сложения и умножения
  • Оперативная память с очень коротким временем доступа (как кэш процессора)
  • Контроллеры внешней периферии и интерфейсы, например PCIe для подключения к компьютеру, SATA для внешнего диска или 100G Ethernet для подключения к сети.

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

http://beta.ivc.no/blog/2011/03/30/logic-devices/

Возможно, звучит не очень впечатляющей. Еще буквально 10 лет назад FPGA были этакими трудолюбивыми эльфами в услужении у процессоров. Пока процессоры занимались Действительно Важными Задачами, демодулировали радиосигналы, декодировали коды, обрабатывали видео, FPGA занимались всякой простенькой рутиной, на вроде разгрузить процессор от SPI и I2C интерфейсов, упростить ему доступ к памяти, согласовывать напряжения выводов.

FPGA сегодня это качественно другой уровень.

У нас было по 2 миллиона триггеров, миллион лутов, 6000 умножалок, 120 гигабитных трансиверов и банка контролеров 100G Ethrenet. Единственное, что вызывало опасение это ядро PCIe Gen3 x16. Нет ничего более безответственного и порочного, чем разработчик пишущий драйвера для PCIe. Я знал что рано поздно мы перейдем и на эту дрянь.

Со всем этим багажом на FPGA стали реализовывать контроллеры видео 4k, обрабатывать радиосигналы, управлять дронами, собирать умные маршрутизаторы.

Интересный нам чип Virtex UltraScale+ VU9P несет в себе 6000 умножалок, 75МБ памяти, 2 000 000 триггеров, 1300 000 логических блоков. Задача разработчика — написать на RTL языке (SytemVerilog,VHDL) такую программу, которую можно эффективно реализовать на этих блоках.

Процедура разработки схемы из всех этих триггеров, сумматоров и умножалок по ее описанию на RTL языке называется синтезом.

Так как указнные умножалки и сумматоры и триггеры уже распределены по кристаллу, вам нужно сначала выбрать какие из них использоваться, процедура place. А затем задать матрицу связей между ними, route.

По завершению проекта, после процедуры Place&Route, формируется прошивка FPGA, которая “заливается” в кристалл и FPGA готова к работе.

Пример платы с FPGA Virtex 7

Что сделал Amazon?

Компания Amazon год назад анонсировала, а в апреле этого года наконец открыла для всех желающих возможность брать в аренду сервера с установленными FPGA.

Чтобы не повторяться, предлагаю посмотреть вот эти статьи и материалы

https://www.forbes.com/sites/moorinsights/2017/03/03/a-machine-learning-landscape-where-amd-intel-nvidia-qualcomm-and-xilinx-ai-engines-live/#49144b6742f8

F1 Instance это платформа с установленным 1 или 8 чипами VU9P.

Компания Amazon решила сразу кучу проблем, сопровождающих разработчика FPGA

  • Пользователь получает не голый чип, а готовый framework. Чипы FPGA уже связаны с серверами шиной PCIe, драйвера операционной системы настроены, пользователю выдается готовый пример — вот так писать/читать данные с сервера, вот место в FPGA, куда вставлять свой вычислитель. Часто эта рутина отнимает едва не бОльшую часть времени на разработку.
  • Разработка под FPGA так же часто требует производительных серверов, так как процедуры синтеза и Place&Route требуют много процессорного времени и памяти. Amazon так же сдает в аренду сервер с предустановленной операционной системой и САПР для разработки под FPGA.
  • Цена. Конечно чипы по цене нового Lamborgini это край спектра. На другом его конце находятся low cost, low power FPGA стоимостью в 10–20$. Но нам то интересны производительные системы, а там порог вхождения (например платы VC709/VC707) начинается с нескольких 5000$. Amazon предлагает взять готовый инстанс с одним VU9P за 1.3$/час

Зачем все это?

Компания Amazon приводит список компаний, которые пользовались инстансами F1 в ознакомиельном режиме

Чем они занимались

  • Секвенирование генома
  • Ускорения машинного обучения (нейросети, регрессии)
  • Перекодирование видеопотока “на лету”
  • Обработка видео
  • Машинное зрение

На сайте Xilinx можно подробнее прочитать применении FPGA в машинном обучении и облачных вычислениях

Помимо решения своих собственных задач, Amazon предлагает разработчикам FPGA продавать свои решения. Например, написав кодек H.265/H.264 или ускоритель матричных вычислений, сдавать его в аренду другим пользователям.

Show your support

Clapping shows how much you appreciated Constantine’s story.