Автоматическое отображение программ на процессор с ПЛИС-ускорителем
Автор: Дубров Денис Владимирович, Рошаль Александр Сергеевич, Штейнберг Борис Яковлевич, Штейнберг Роман Борисович
Рубрика: Краткие сообщения
Статья в выпуске: 2 т.3, 2014 года.
Бесплатный доступ
В работе рассматривается задача автоматического отображения высокоуровневых программ на процессор с ПЛИС-ускорителем. Для такого отображения разрабатывается и используется генератор HDL-кода из внутреннего представления распараллеливающей системы.
Конвейерные вычисления, высокоуровневый синтез, распараллеливаю- щий компилятор, плис
Короткий адрес: https://sciup.org/147160528
IDR: 147160528
Текст краткого сообщения Автоматическое отображение программ на процессор с ПЛИС-ускорителем
Конвейерные вычислители используются во многих программно-аппаратных комплексах и показывают на некоторых задачах производительность значительно более высокую, чем универсальные процессоры. Существенный прогресс в развитии конвейерных вычислителей внесли технологии программируемых логических интегральных схем (ПЛИС). Традиционно, конвейерные вычислители используются в программно-аппаратных комплексах. Для применения к широкому классу программ разрабатываются вычислители с архитектурой программируемого конвейера или реконфигурируемые конвейеры. Известны работы по реконфигурируемым конвейерам [1, 3, 4]. Узкое место таких вычислителей – долгое время перепрограммирования ПЛИС. В данной работе описывается проект, разрабатываемый на мехмате ЮФУ на основе распараллеливающей системы ДВОР (Диалоговый высокоуровневый оптимизирующий распараллеливатель программ). Этот проект ориентирован на расширение множества разработчиков и пользователей прикладных программ для параллельно-конвейерных суперкомпьютеров. Основная идея проекта связана с созданием генератора VHDL-кода из внутреннего представления распараллеливающей системы.
-
1. Конвертор программ языка Си в язык VHDL
-
2. Диалоговый высокоуровневый оптимизирующий распараллеливатель программ (ДВОР)
-
3. Отображение гнезд циклов на программируемыйвычислитель
На входе конвертора текст на языке Си, описывающий алгоритм вычислений создаваемого генератора. Вводятся также некоторые характеристики создаваемой схемы: диапазоны значений входных и выходных переменных, допустимая площадь на кристалле. На выходе HDL-описание электронной схемы. Генератор позволяет создавать встроенные системы, конвейерные вычислители, параллельно-конвейерные вычислители, автоматы, системы с программируемой архитектурой и др. По диапазонам значений входных и выходных данных, определяются диапазоны промежуточных переменных и определяется минимальная разрядность аргументов вычислительных устройств проектируемой схемы. Генератор имеет свою библиотеку VHDL-описаний базовых операций и функций. В этой библиотеке представлены базовые операции и функции для аргументов различной разрядности, которые сопровождаются оценками количества тактов и занимаемой площади кристалла [5].
В настоящее время на рынке представлен целый ряд программных продуктов, обладающих возможностью преобразования высокоуровневых языков в языки описания электронных схем. В следующей таблице приведена информация об основных из них. Как можно видеть, к данному направлению проявляют интерес как небольшие исследовательские коллективы (разработки C-to-Verilog, CoolKit), так и ведущие разработчики средств проектирования электронных устройств (Xilinx, Mentor Graphics и др.) В последнем случае наблюдается общая для ИТ-индустрии тенденция, выраженная в приобретении крупными компаниями интеллектуальной собственности независимых разработчиков. Так например, язык высокого уровня Handel-C был изначально разработан в вычислительной лаборатории Оксфордского университета [6], после чего в 1996 г. был коммерциализирован созданной компанией Embedded Solution Limited (переименованной позднее в Celoxica), которая в 2008 г. была приобретена компанией Agility, чьи активы год спустя были в свою очередь приобретены Mentor Graphics. В настоящее время Handel-C поддерживается их продуктом DK Design Suite. Другим подобным примером является язык Streams-C, разработанный в Лос-Аламосской национальной лаборатории и лицензированный компании Impulse Accelerated Technologies под именем Impulse C.
Одна из особенностей распараллеливающей системы ДВОР – высокоуровневое внутреннее представление, именуемое Reprise. Генерация описания конвейерных электронных схем из регистровых внутренних представлений (GCC, LLVM) представляется очень сложной. Система ДВОР содержит автоматическое построение графа вычислений программы [4], который является промежуточным представлением между Reprise и HDL-описанием конвейерной схемы.
Привязка конвертора языка программирования Си в язык описания электронных схем к распараллеливающей системе дает возможность использования библиотеки преобразований высокоуровневых программ. Благодаря этому, исходный код программы Си может быть преобразован в другие эквивалентные программы. Это позволяет по исходному коду сгенерировать несколько эквивалентных электронных схем, а не одну единственную. Это важно, поскольку к электронным схемам предъявляются различные требования, иногда противоречащие одно другому: минимизация площади кристалла, быстродействие, энергопотребление,. . .
Параллельные вычисления, в том числе и конвейерные, следует применять к долго считаемым фрагментам программ. В данной работе будем рассматривать ускорение фрагментов кода, содержащих гнезда программных циклов. Конвейеризуется самый глубоко вложенный цикл гнезда. Счетчики более высоко вложенных циклов могут рассматриваться как параметры, определяющие узел кластера, на ускорителе которого должен выполняться самый глубоко вложенный цикл (этот же цикл для разных значений счетчиков внешних циклов выполняется на разных узлах).
Основная идея проекта следующая. Разрабатываемая система получает на входе программу языка Си, содержащую гнездо циклов. Гнездо циклов преобразуется к виду, удобному для отображения распараллеливающей системой на конвейерную архитектуру. Самый вложенный цикл гнезда преобразуется в VHDL-описание конвейера конвертором C2HDL.
Таблица
Обзор основных средств, преобразующих высокоуровневые программы в HDL
Название Разработчик Время разработки Тип лицензии Входные языки Выходные языки Catapult C Mentor Graphics (http: // catapult/overview) с 2004 г. коммерческая C, C++ RTL Vivado Design Suite Xilinx com/products/ design-tools/vivado/) с 2012 г. коммерческая C, C++, MATLAB, Simulink VHDL, Verilog Impulse CoDeveloper Impulse Accelerated Technologies (http://www. impulseaccelerated. com/ с 2003 г. коммерческая C, Impulse C VHDL, Verilog Altium Designer Altium com/en/products/ altium-designer) с 2008 г. коммерческая C VHDL, Verilog Mitrion SDK Mitrionics (http: // ?page=mitrion-sdk) с 2005 г. коммерческая Mitrion-C VHDL MATLAB + Simulink + HDL Coder MathWorks (http: // products/simulink/) с 2007 г. коммерческая MATLAB, Simulink, Stateflow VHDL, Verilog C-to-Verilog Nadav Rotem (Haifa University) (http://www. с 2009 г. GPL C Verilog CoolKit СПбГУ (http: // projects/coolkit) с 2008 г. “No license” HaSCoL VHDL
Программируемая часть вычислительного узла прожигается полученной схемой. В исходном гнезде циклов самый вложенный цикл заменяется обращением к конвейерному ускорителю, на котором этот цикл будет вычисляться.
Условие эффективности использования ПЛИС-ускорителя – время передачи данных на ускоритель должно быть существенно меньше времени обработки этих данных. Учитывая, что при современных технологиях время пересылки одного четырехбайтного числа между чипами на порядок дольше умножения чисел, можно заключить, что в ускоряемом фрагменте кода количество операций над данными должно в несколько десятков раз пре- восходить количество данных. Значит, конвейеризуемый самый вложенный цикл должен содержать в своем теле несколько десятков операций. Необходимое для эффективности отношение количества операций к количеству данных существенно снижается при использовании коротких чисел (например, двух- или однобайтных).
Заключение
В данной работе частично реализованный проект создания компилятора с языка высокого уровня на процессор с ПЛИС-ускорителем. Этот проект ведет к решению проблемы создания высокоуровневых языков для вычислительных устройств с архитектурой программируемого конвейера.
Список литературы Автоматическое отображение программ на процессор с ПЛИС-ускорителем
- Каляев, А.В. Модульно-наращиваемые многопроцессорные системы со структурно-процедурной организацией вычислений/А.В. Каляев, И.И. Левин -М., «Янус-К», 2003. -380 с.
- Штейнберг, Р.Б. Отображение гнезд циклов на многоконвейерную архитектуру/Р.Б. Штейнберг.//Программирование. -2010. -№ 3.
- Яджак, М.С. Высокопараллельные алгоритмы и методы для решения задач массовых арифметических и логических вычислений/М.С. Яджак. Диссертация на соискание ученой степени д.ф.-м.н. -Институт прикладных проблем механики и математики, Львов, 2009. -298 с. (на украинском языке).
- Bondalapati, K. Modeling and Mapping for Dynamically Reconfigurable Hybrid Architecture./K. Bondalapati. Ph.D. Thesis -University of Southern California, August 2001.
- Dubrov, D.V. Generating Pipeline Integrated Circuits Using C2HDL Converter D.V. Dubrov, A.S. Roshal//Proceedings of IEEE East-West Design & Test Symposium (EWDTS’2013), Rostov-on-Don, Russia, September 27-30, 2013 -2013. -P. 215-219.
- Self, R.P. A Design Methodology for Construction of Asynchronous Pipelines with Handel-C/R.P. Self, M. Fleury, A.C. Downton. -IEEE Software, 1988. -Vol. 150, P. 39-47.