УДК 681.3
АВТОМАТИЧЕСКОЕ ОТОБРАЖЕНИЕ ПРОГРАММ НА ПРОЦЕССОР С ПЛИС-УСКОРИТЕЛЕМ
Д.В. Дубров, А.С. Рошаль, Б.Я. Штейнберг, Р.Б. Штейнберг
В работе рассматривается задача автоматического отображения высокоуровневых программ на процессор с ПЛИС-ускорителем. Для такого отображения разрабатывается и используется генератор ИБЬ-кода из внутреннего представления распараллеливающей системы.
Ключевые слова: конвейерные вычисления, высокоуровневый синтез, распараллеливающий компилятор, ПЛИС, УИБЬ.
Введение
Конвейерные вычислители используются во многих программно-аппаратных комплексах и показывают на некоторых задачах производительность значительно более высокую, чем универсальные процессоры. Существенный прогресс в развитии конвейерных вычислителей внесли технологии программируемых логических интегральных схем (ПЛИС). Традиционно, конвейерные вычислители используются в программно-аппаратных комплексах. Для применения к широкому классу программ разрабатываются вычислители с архитектурой программируемого конвейера или реконфигурируемые конвейеры. Известны работы по реконфигурируемым конвейерам [1, 3, 4]. Узкое место таких вычислителей - долгое время перепрограммирования ПЛИС. В данной работе описывается проект, разрабатываемый на мехмате ЮФУ на основе распараллеливающей системы ДВОР (Диалоговый высокоуровневый оптимизирующий распараллеливатель программ). Этот проект ориентирован на расширение множества разработчиков и пользователей прикладных программ для параллельно-конвейерных суперкомпьютеров. Основная идея проекта связана с созданием генератора УИБЬ-кода из внутреннего представления распараллеливающей системы.
1. Конвертор программ языка Си в язык УИВЬ
На входе конвертора текст на языке Си, описывающий алгоритм вычислений создаваемого генератора. Вводятся также некоторые характеристики создаваемой схемы: диапазоны значений входных и выходных переменных, допустимая площадь на кристалле. На выходе ИБЬ-описание электронной схемы. Генератор позволяет создавать встроенные системы, конвейерные вычислители, параллельно-конвейерные вычислители, автоматы, системы с программируемой архитектурой и др. По диапазонам значений входных и выходных данных, определяются диапазоны промежуточных переменных и определяется минимальная разрядность аргументов вычислительных устройств проектируемой схемы. Генератор имеет свою библиотеку УИБЬ-описаний базовых операций и функций. В этой библиотеке представлены базовые операции и функции для аргументов различной разрядности, которые сопровождаются оценками количества тактов и занимаемой площади кристалла [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.
2. Диалоговый высокоуровневый оптимизирующий распараллеливатель программ (ДВОР)
Одна из особенностей распараллеливающей системы ДВОР - высокоуровневое внутреннее представление, именуемое Reprise. Генерация описания конвейерных электронных схем из регистровых внутренних представлений (GCC, LLVM) представляется очень сложной. Система ДВОР содержит автоматическое построение графа вычислений программы [4], который является промежуточным представлением между Reprise и HDL-описанием конвейерной схемы.
Привязка конвертора языка программирования Си в язык описания электронных схем к распараллеливающей системе дает возможность использования библиотеки преобразований высокоуровневых программ. Благодаря этому, исходный код программы Си может быть преобразован в другие эквивалентные программы. Это позволяет по исходному коду сгенерировать несколько эквивалентных электронных схем, а не одну единственную. Это важно, поскольку к электронным схемам предъявляются различные требования, иногда противоречащие одно другому: минимизация площади кристалла, быстродействие, энергопотребление,. . .
3. Отображение гнезд циклов на программируемый вычислитель
Параллельные вычисления, в том числе и конвейерные, следует применять к долго считаемым фрагментам программ. В данной работе будем рассматривать ускорение фрагментов кода, содержащих гнезда программных циклов. Конвейеризуется самый глубоко вложенный цикл гнезда. Счетчики более высоко вложенных циклов могут рассматриваться как параметры, определяющие узел кластера, на ускорителе которого должен выполняться самый глубоко вложенный цикл (этот же цикл для разных значений счетчиков внешних циклов выполняется на разных узлах).
Основная идея проекта следующая. Разрабатываемая система получает на входе программу языка Си, содержащую гнездо циклов. Гнездо циклов преобразуется к виду, удобному для отображения распараллеливающей системой на конвейерную архитектуру. Самый вложенный цикл гнезда преобразуется в VHDL-описание конвейера конвертором C2HDL.
Таблица
Обзор основных средств, преобразующих высокоуровневые программы в HDL
Название Разработчик Время разра- ботки Тип лицензии Входные языки Выходные языки
Catapult C Mentor Graphics (http: //www.mentor.com/esl/ catapult/overview) с 2004 г. коммерческая C, C++ RTL
Vivado Design Suite Xilinx (http://www.xilinx. com/products/ design-tools/vivado/) с 2012 г. коммерческая C, C++, MATLAB, Simulink VHDL, Verilog
Impulse CoDeveloper Impulse Accelerated Technologies (http://www. impulseaccelerated. com/products.htm) с 2003 г. коммерческая C, Impulse C VHDL, Verilog
Altium Designer Altium (http://www.altium. com/en/products/ altium-designer) с 2008 г. коммерческая C VHDL, Verilog
Mitrion SDK Mitrionics (http: //www.mitrionics.com/ ?page=mitrion-sdk) с 2005 г. коммерческая Mitrion-C VHDL
MATLAB + Simulink + HDL Coder MathWorks (http: //www.mathworks.com/ products/simulink/) с 2007 г. коммерческая MATLAB, Simulink, Stateflow VHDL, Verilog
C-to-Verilog Nadav Rotem (Haifa University) (http://www. c-to-verilog.com/) с 2009 г. GPL C Verilog
CoolKit СПбГУ (http: //oops.math.spbu.ru/ projects/coolkit) с 2008 г. “No license” HaSCoL VHDL
Программируемая часть вычислительного узла прожигается полученной схемой. В исходном гнезде циклов самый вложенный цикл заменяется обращением к конвейерному ускорителю, на котором этот цикл будет вычисляться.
Условие эффективности использования ПЛИС-ускорителя - время передачи данных на ускоритель должно быть существенно меньше времени обработки этих данных. Учитывая, что при современных технологиях время пересылки одного четырехбайтного числа между чипами на порядок дольше умножения чисел, можно заключить, что в ускоряемом фрагменте кода количество операций над данными должно в несколько десятков раз пре-
восходить количество данных. Значит, конвейеризуемый самый вложенный цикл должен содержать в своем теле несколько десятков операций. Необходимое для эффективности отношение количества операций к количеству данных существенно снижается при использовании коротких чисел (например, двух- или однобайтных).
Заключение
В данной работе частично реализованный проект создания компилятора с языка высокого уровня на процессор с ПЛИС-ускорителем. Этот проект ведет к решению проблемы создания высокоуровневых языков для вычислительных устройств с архитектурой программируемого конвейера.
Литература
1. Каляев, А.В. Модульно-наращиваемые многопроцессорные системы со структурнопроцедурной организацией вычислений / А.В. Каляев, И.И. Левин — М., «Янус-К», 2003. — 380 с.
2. Штейнберг, Р.Б. Отображение гнезд циклов на многоконвейерную архитектуру / Р.Б. Штейнберг. // Программирование. — 2010. — № 3.
3. Яджак, М.С. Высокопараллельные алгоритмы и методы для решения задач массовых арифметических и логических вычислений /М.С. Яджак. Диссертация на соискание ученой степени д.ф.-м.н. — Институт прикладных проблем механики и математики, Львов, 2009. — 298 с. (на украинском языке).
4. Bondalapati, K. Modeling and Mapping for Dynamically Reconfigurable Hybrid Architecture. / K. Bondalapati. Ph.D. Thesis — University of Southern California, August 2001.
5. 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.
6. 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.
Дубров Денис Владимирович, к.ф.-м.н., доцент, Южный федеральный университет (г. Ростов-на-Дону, Российская Федерация), dubrov@sfedu.ru.
Рошаль Александр Сергеевич, ведущий программист, tabor.ru (г. Ростов-на-Дону, Российская Федерация), teacplusplus@gmail.com.
Штейнберг Борис Яковлевич, д.т.н., доцент, зав. каф., Южный федеральный университет (г. Ростов-на-Дону, Российская Федерация), borsteinb@mail.ru.
Штейнберг Роман Борисович, к.ф.-м.н., ст. преподаватель Южный федеральный университет (г. Ростов-на-Дону, Российская Федерация), romanofficial@yandex.ru.
Поступила в редакцию 7 марта 2014 г.
A-B. ^y6poB, A.C. Poma^b, B.H. ffiTefa6epr, P.B. ffiTefa6epr
Bulletin of the South Ural State University Series “Computational Mathematics and Software Engineering”
2014, vol. 3, no. 2, pp. 117-121
AUTOMATIC MAPPING PROGRAMS ONTO A PROCESSOR WITH AN FPGA ACCELERATOR
D.V. Dubrov, Southern Federal University (Rostov-on-Don, Russian Federation),
A.S. Roshal, Southern Federal University (Rostov-on-Don, Russian Federation),
B.Ya. Steinberg, Southern Federal University (Rostov-on-Don, Russian Federation),
R.B. Steinberg, Southern Federal University (Rostov-on-Don, Russian Federation)
A problem of automatic high level program mapping onto a CPU with an FPGA accelerator is considered in this work. For such a mapping an HDL code generator from a parallelizing system’s internal representation is being developed and used.
Keywords: social network analysis, information retrieval, data mining, expert finding, popularity analysispeline computing, high-level synthesis, parallelizing compiler, FPGA, VHDL.
References
1. Kalyaev A.V., Levin I.I. Modul’no-naraschivaemye mnogoprocessornye sistemy so structurno-procedurnoj organizatsyej vychislenij [Modular scalable multiprocessor systems with structural-procedural computing setup]. Moscow, Yanus-K, 2003. 380 P.
2. Steinberg R. Mapping loop nests to multipipelined architecture. MAIK Nauka/Interperiodica distributed exclusively by Springer Science+Business Media LLC., May 2010, Vol. 36, No. 3, P 177-185.
3. Yadzhak M.S. Vysokoparallel’nye algoritmy i metody dlya resheniya zadach massovykh arifmeticheskikh i logicheskikh vychislenij [Highly parallel algorithms and methods for solving problems with massive arithmetic and logic computations]. Dissertation for a degree of doctor of physics and mathematics, Institut prikladnykh problem mekhanili i matematiki [Institute of applied mechanics and mathematics problems]. Lvov, 2009. 298 P. (in Ukrainian language).
4. Bondalapati K. Modeling and Mapping for Dynamically Reconfigurable Hybrid Architecture. Ph.D. Thesis. University of Southern California, August 2001.
5. Dubrov D.V., Roshal A.S. Generating Pipeline Integrated Circuits Using C2HDL Converter Proceedings of IEEE East-West Design & Test Symposium (EWDTS’2013), Rostov-on-Don, Russia, September 27-30, 2013, P. 215-219.
6. Self R.P., Fleury M., Downton A.C. A Design Methodology for Construction of Asynchronous Pipelines with Handel-C. IEEE Software, 1988, Vol. 150, P. 39-47.
Received 7 March 2014-