Современные
информационные технологии/1. Компьютерная
инженерия
Д-р техн.
наук И.И. Левин
ООО «Научно-исследовательский центр супер-ЭВМ и
нейрокомпьютеров»,
г. Таганрог, Россия
Канд. техн. наук А.И. Дордопуло
Южный научный центр Российской академии
наук, г. Ростов-на-Дону, Россия
Программирование перспективных вычислительных систем
с реконфигурируемой архитектурой на языке COLAMO*
Одним из
перспективных способов достижения высокой реальной производительности
вычислительной системы является адаптация ее архитектуры под структуру решаемой
задачи и создание вычислительного устройства, одинаково эффективно реализующего
как структурные, так и процедурные фрагменты вычислений. Поэтому отечественные [1] и зарубежные производители
вычислительной техники все чаще включают в состав разрабатываемых
вычислительных систем программируемые логические интегральные схемы (ПЛИС) для
ускорения работы при реализации вычислительно трудоемких алгоритмов.
В
научно-исследовательском центре суперЭВМ и нейрокомпьютеров («НИЦ СЭ и НК», г.
Таганрог) в содружестве с научно-исследовательским институтом многопроцессорных
вычислительных систем Южного федерального университета (НИИ МВС ЮФУ, г.
Таганрог) и Южным научным центром Российской академии наук (ЮНЦ РАН, г. Ростов-на-Дону)
разрабатываются и производятся реконфигурируемые вычислительные системы класса
суперЭВМ, где основным вычислительным ресурсом являются не микропроцессоры, а
множество кристаллов ПЛИС, объединенных в вычислительные поля посредством
высокоскоростных каналов передачи данных. Спектр выпускаемых и проектируемых
изделий достаточно широк: от полностью автономных малогабаритных
реконфигурируемых ускорителей (вычислительных блоков), вычислительных модулей в
настольном или стоечном конструктивном исполнении до вычислительных систем,
состоящих из нескольких вычислительных шкафов, размещаемых в специально
оборудованном машинном зале.
Реконфигурируемые
вычислительные системы, содержащие большие вычислительные поля ПЛИС, находят применение для решения вычислительно
трудоемких задач в различных областях науки и техники, поскольку обладают рядом
существенных преимуществ по сравнению с многопроцессорными вычислительными
системами кластерной архитектуры: высокими реальной и удельной
производительностями, высокой энергоэффективностью и др.
Использование воздушных
систем охлаждения современных высокопроизводительных вычислительных систем и
построенных на их основе суперкомпьютеров, в том числе реконфигурируемых,
практически достигло своего предела. Большинство разработчиков вычислительной
техники в качестве перспективы для решения проблем охлаждения проектируемых
вычислительных комплексов ориентируются на применение жидкостного охлаждения.
Для вычислительных модулей РВС, проектируемых на основе перспективных семейств
ПЛИС, целесообразно использовать жидкостное охлаждение, в частности,
непосредственное погружение плат вычислительных модулей в жидкостный хладагент
на основе минерального масла.
В «НИЦ СЭ и НК» активно
развивается направление по созданию РВС нового поколения на основе жидкостного
охлаждения. Разработаны новые конструкции печатных плат и вычислительных
модулей, характеризующиеся высокой плотностью компоновки. В частности, в
настоящее время ведется разработка перспективных вычислительных модулей
«Скат-8» для многостоечных РВС сверхвысокой производительности.
Плата перспективного
вычислительного модуля содержит 8 ПЛИС семейства Virtex UltraScale
логической емкостью не менее 100 млн. эквивалентных вентилей каждая.
Вычислительный модуль состоит из двух секций: в первой секции размещается 16
плат вычислительных модулей с потребляемой мощностью до 800 Вт каждая, причем
все платы полностью погружены в электрически нейтральный жидкостный хладагент;
во второй секции располагаются насосная группа и теплообменник, обеспечивающие
проток и охлаждение хладагента. Эскиз ВМ с высотой конструктива 3U показан на рис. 6а.
|
а) б) |
|
Рис. 6. Эскиз вычислительной системы на основе
жидкостного охлаждения (а - эскиз ВМ «Скат-8», б - эскиз вычислительной стойки на основе ВМ «Скат-8») |
Согласно проведенным
расчетам, использование жидкостного охлаждения и построение вычислительных
систем на основе ВМ «Скат-8» обеспечивает сверхпетафлопсную производительность
одного вычислительного шкафа РВС. Вычислительная 19” стойка суперкомпьютера,
эскиз которой представлен на рис. 6-б, может содержать до 12 ВМ «Скат-8» с
жидкостным охлаждением. Производительность ВМ «Скат-8»составляет 105 ТФлопс,
производительность стойки из 12 ВМ «Скат-8» составит 1 ПФлопс, потребляемая мощность составит 13 и 150 кВт
соответственно.
Существенное повышение
степени компоновки в ВМ «Скат-8» требует использования средств программирования
для автоматизированного создания многокристальных решений прикладных задач.
В
настоящее время существует множество различных систем проектирования,
позволяющих создавать структурные решения прикладных задач на ПЛИС. Наиболее
популярными как в качестве отдельного средства разработки, так и в составе
комплексов, являются программы-синтезаторы, предоставляемые
фирмами-изготовителями ПЛИС: ISE и Vivado фирмы Xilinx [2], Quartus II фирмы Altera [3] и Actel Libero IDE фирмы
Actel [4]. Данные средства, помимо непосредственно среды
проектирования цифровых устройств, включают в себя ряд вспомогательных утилит: анализаторы
временных характеристик, редакторы размещения, модули программирования ПЛИС,
системы моделирования цифровых устройств и др. Благодаря широкому
инструментарию эти системы проектирования обеспечивают полный цикл разработки
цифровых устройств в пределах одного кристалла ПЛИС: создание исходного
описания проекта, синтез, моделирование, размещение, трассировку,
конфигурирование кристалла.
В
связи с постоянным ростом ёмкости кристаллов ПЛИС проектирование решений
прикладных задач в кристаллах ПЛИС с помощью языков описания аппаратуры (VHDL, AHDL, Verilog и др.), а также разработка цифровых устройств в
графических редакторах становится всё более трудоёмкой. Поэтому в настоящее
время ведущие производители ПЛИС и реконфигурируемых вычислителей ориентируются
на языки высокого уровня. Так, в новой среде разработки Vivado фирмы Xilinx добавлен
новый инструмент проектирования Vivado
HLS [5], основанный на языке высокого уровня, а компания Altera для своих ПЛИС предлагает инструментарий разработки Altera SDK [6]
для нового стандарта параллельного программирования гетерогенных систем OpenCL. В данных решениях используются трансляторы
С-подобных языков, генерирующие из программы на аналоге языка программирования
высокого уровня С код на языках описания аппаратуры на уровне регистровых
передач (RTL-уровень, трансляторы C-to-RTL).
Несмотря
на схожесть синтаксисов данных С-подобных языков с самим языком С, подобный
подход вовсе не означает, что исходный код на языке С, написанный под
персональный компьютер или кластерную вычислительную систему, будет понят
трансляторами C-to-RTL. Выбор языка
С в качестве основы обусловлен широкой распространённостью данного языка, что
существенно упрощает освоение новых инструментариев разработки решений
прикладных задач для ПЛИС.
Также
при использовании трансляторов C-to-RTL весь код
программы либо явно указанные процедуры транслируются в RTL-описания отдельных кристаллов ПЛИС. В подобных
системах разработки отсутствует инструментарий, обеспечивающий автоматические
разбиения параллельной программы на множество связанных кристаллов ПЛИС.
В Vivado HLS
проект разрабатывается в рамках одного кристалла ПЛИС, и если программисту
недостаточно аппаратного ресурса кристалла, то он вынужден самостоятельно
распределять вычисления между несколькими проектами для каждой ПЛИС и
синхронизировать управляющие и информационные потоки между ними.
Стандарт OpenCL используется компанией Nallatech (разработчик
реконфигурируемых вычислителей) и подразумевает использование нескольких ПЛИС в
одном проекте. Программирование решений в кристаллах ПЛИС в данном случае
осуществляется с помощью вызова функций из библиотек инструментария разработки Altera SDK, и в
каждом задействованном кристалле ПЛИС выполняются вычисления, описанные
отдельным участком кода. Таким образом, программа, написанная в стандарте OpenCL, представляет собой основной код, написанный под
традиционные процессоры, и отдельные участки кода, написанные под ПЛИС,
задействованные как сопроцессоры. В данном случае задача синхронизации данных
также возлагается на самого программиста.
Ещё одним известным
средством программирования ПЛИС является комплекс, разработанный компанией Mitrionics, состоящий из виртуального процессора Mitrion Virtual Processor (MVP), программирование которого
осуществляется на языке высокого уровня Mitrion-C, и библиотеки функций для построения хост-программ MithalAPI, входящих в пакет разработки Mitrion SDK [7].
Разрабатываемая на языке Mitrion-C программа должна быть полностью реализована на одном
виртуальном процессоре MVP, что не
позволяет программировать многокристальные РВС, и следовательно, существенно
снижает эффективность использования программного комплекса компании Mitrionics. Для программирования многокристальных РВС со связями
между ПЛИС программисту необходимо самому реализовать интерфейс (протокол)
обмена данными между ПЛИС и решить вопросы, связанные с синхронизацией потоков
данных. В этом случае программа для РВС вырождается в программу для кластера
(множество процессоров MVP),
реализованного на ПЛИС, что существенно снижает эффективность реализации задач
на многокристальных РВС.
Альтернативный подход к
программированию РВС предлагается в НИИ МВС ЮФУ, занимающемся
разработкой многокристальных реконфигурируемых вычислительных систем различных
архитектуры и конфигурации уже более 15 лет. В НИИ МВС ЮФУ разработан и широко
используется программный комплекс, состоящий из:
- транслятора
языка программирования COLAMO,
осуществляющего трансляцию исходного кода на COLAMO в информационный граф параллельной прикладной
программы;
- синтезатора
масштабируемых схемотехнических решений на уровне логических ячеек ПЛИС Fire!Constructor,
осуществляющего отображение полученного от транслятора языка программирования COLAMO информационного графа на архитектуру РВС, размещение
отображенного решения по кристаллам ПЛИС и автоматическую синхронизацию
фрагментов информационного графа в разных кристаллах ПЛИС;
- библиотеки IP-ядер, соответствующих операторам
языка COLAMO (функционально-законченных структурно-реализованных
аппаратных устройств) для различных предметных областей, и интерфейсов для
согласования скорости обработки информации и связи в единую вычислительную
структуру;
- средств отладки и
программ доступа и мониторинга состояния РВС.
Язык высокого уровня COLAMO предназначен для описания реализации параллельного
алгоритма и создания на основе принципов структурно-процедурной организации
вычислений [1, 8, 9] в архитектуре РВС специализированной вычислительной
структуры, которая предполагает последовательную смену структурно (аппаратно)
реализованных фрагментов информационного графа задачи, каждый из которых
является вычислительным конвейером потока операндов. Таким образом, приложение
(прикладная задача) для РВС состоит из структурной составляющей, представленной
в виде аппаратно реализованных фрагментов вычислений, и процедурной
составляющей, представляющей собой единую для всех структурных фрагментов
управляющую программу последовательной смены вычислительных структур и
организации потоков данных. Для представления такой организации вычислений в
языке используется понятие «кадр». Кадром является программно-неделимый
компонент, представляющий собой совокупность операторов, которые реализуются в
виде арифметико-логических команд и команд чтения/записи, выполняемых на
различных функциональных устройствах, соединенных между собой в соответствии с
информационной структурой алгоритма.
В языке COLAMO отсутствуют явные формы описания параллелизма, а
распараллеливание достигается с помощью объявления типов доступа к переменным и
индексации элементов массивов, что характерно для языков потока данных. Для
обращения к данным используется два основных метода доступа: параллельный
доступ (задаваемый типом Vector) и
последовательный доступ (задаваемый типом Stream). Степень параллелизма определяется по минимальному
значению параметра распараллеливания. Для типа доступа Stream степень параллелизма равна 1, а для типа доступа Vector определяется наименьшим значением векторной
составляющей каждого массива, участвующего в вычислениях. Для параллельного
типа доступа возможна одновременная обработка всех размерностей массивов,
заданных типом Vector, при этом повышается
аппаратный ресурс на обработку, но снижается время обработки.
Многомерные массивы
данных могут иметь множество измерений, каждое из которых может иметь
последовательный или параллельный тип доступа, задаваемый ключевым словом Stream или Vector
соответственно. Изменение типа доступа позволяет достаточно просто управлять
как степенью распараллеливания вычислений на уровне описания структур данных,
так и скоростью обработки и занимаемым ресурсом, что позволяет программисту
описывать различные виды параллелизма в достаточно сжатом виде. Помимо типа
доступа, для переменной в языке COLAMO
определены также и типы ее хранения: мемориальный (Mem), регистровый (Reg) и коммутационный (Com).
Трансляция программы на
языке высокого уровня COLAMO состоит в создании схемотехнической конфигурации
вычислительной системы (структурной составляющей) и параллельной программы,
управляющей потоками данных (потоковой и процедурной составляющих) [1, 8, 9].
Создание структурной составляющей заключается в построении вычислительного
графа, соответствующего описанным на COLAMO информационным зависимостям между
результатами вычислений. При этом для каждой используемой в тексте программы
операции подставляется специализированный вычислительный блок в зависимости от
типа доступа к переменным, типа данных, их разрядности и т.д. Синтезированный
информационный граф задачи передается в синтезатор Fire!Constructor для отображения на аппаратный ресурс многокристальной
РВС [10].
Задача автоматического
отображения параллельной программы на аппаратный ресурс многокристальной РВС
состоит из трех подзадач: разбиения информационного графа на непересекающиеся
подграфы, размещения сформированных подграфов в ПЛИС РВС и трассировки внешних
связей размещённых подграфов в системе коммутаций РВС.
Результатом работы
синтезатора Fire!Constructor являются файлы VHDL-описаний и файлы временных и топографических
ограничений (User Constraints Files). Файлы VHDL описывают структурные реализации фрагментов
параллельной программы. На основании этих файлов и библиотеки схемотехнических
элементов формируются проекты для синтезатора ISE под каждую отдельную ПЛИС. Далее с помощью
синтезатора ISE формируются конфигурационные
файлы ПЛИС. Полученные конфигурационные файлы загружаются в РВС.
Программа
на языке COLAMO разрабатывается в едином
проекте и может быть транслирована на любую РВС, описание которой и
соответствующие библиотеки присутствуют в комплексе программирования РВС. В
отличие от других существующих систем разработки решений прикладных задач на
ПЛИС пользователю не требуется в тексте программы указывать, какие фрагменты
программы в каких ПЛИС будут выполняться. Синтезатор Fire!Constructor
обеспечивает автоматическое разбиение вычислительной структуры программы на
языке COLAMO на несколько проектов в синтезаторе Xilinx ISE, при
этом обеспечивается синхронизация информационных потоков как внутри кристалла
ПЛИС, так и между ними.
ПЛИС как элементная
база реконфигурируемых суперЭВМ обеспечивают устойчивый, близкий к линейному,
рост производительности РВС, открывая новые перспективы по созданию
суперкомпьютеров петафлопсной производительности, в том числе суперкомпьютеров
гибридного типа. Это позволяет рассматривать РВС на основе ПЛИС Xilinx Virtex
как основу для создания высокопроизводительных вычислительных комплексов нового
поколения, обеспечивающих высокую эффективность вычислений и близкий к
линейному рост производительности при наращивании вычислительного ресурса.
1. Каляев И.А., Левин И.И., Семерников Е.А., Шмойлов В.И.
Реконфигурируемые мультиконвейерные вычислительные структуры /Изд. 2-е,
перераб. и доп. / Под общ. ред. И.А. Каляева. Ростов-на-Дону: Изд-во ЮНЦ РАН,
2009. 344 с.
2. Зотов В.Ю. Проектирование цифровых устройств на основе
ПЛИС фирмы XILINX в САПР WebPACK ISE
[Текст] М.: Горячая линия-Телеком. 2003 – 624 с.
3. Quartus II Handbook Version
10.1 Volume 1: Design and Synthesis. Altera Corporation 2010.
4. Libero IDE v9.1 User’s Guide. Actel Corporation 2010.
5. Проектирование для ПЛИС Xilinx с применением языков высокого уровня в среде Vivado HLS.
Компоненты и технологии. 2013 г. №12.
6. http://www.altera.com/literature/lit-opencl-sdk.jsp/(дата обращения
23.02.2015)
7. http://www.mitrionics.com/(дата обращения 23.02.2015)
8. Kalyaev I.A., Levin I.I., Dordopulo A.I., Slasten L.M. Reconfigurable Computer
Systems Based on Virtex-6 and Virtex-7 FPGAs // IFAC Proceedings Volumes (ISSN 14746670), Programmable
Devices and Embedded Systems, Volume №12, part №1, 2013, рр. 210-214.
9. Igor A. Kalyaev, Ilya I.
Levin, Alexey I. Dordopulo, Liuba M. Slasten. FPGA-based Reconfigurable
Computer Systems // Science and Information Conference (SAI) 2013, Oct 7, 2013
- Oct 9, 2013, London, UK, рр. 148-155;
10.
V.A. Gudkov, A.A. Gulenok, V.B. Kovalenko, L.M. Slasten. Multi-level
Programming of FPGA-based Computer Systems with Reconfigurable Macroobject
Architecture // IFAC Proceedings Volumes (ISSN 14746670), Programmable Devices and Embedded
Systems, Volume №12, part №1, 2013, рр. 204-209.
______________________________________
*Работа выполнена при финансовой поддержке
Министерства образования и науки РФ по Соглашению о предоставлении субсидии
№14.578.21.0006 от 05.06.2014, уникальный идентификатор RFMEFI57814X0006, гранту Южного федерального
университета №213.01-2014/014
и НИР №2257 базовой части государственного задания №2014/174.