77373

Язык программирования RiDE.L

Научная статья

Информатика, кибернетика и программирование

Традиционно используемые в HPC языки с архитектурой классических компиляторов: C, C++, FORTRAN, Pascal – не позволяют справляться с этой сложностью настолько хорошо, насколько позволяют более поздние языки: Haskell, JavaScript, Oz, Ruby. Но программы, написанные на таких языках недостаточно эффективны во время исполнения

Русский

2015-02-02

18 KB

0 чел.

Язык программирования RiDE.L

М.О. Бахтерев, В.В. Косенко

ИММ УрО РАН, УрГУ, Екатеринбург

Разработка ПО, используемого для высокопроизводительных вычислений (HPC), со временем становится всё сложнее вместе с усложнением применяемых в больших расчётах аппаратных архитектур,  структур данных и алгоритмов, математических моделей.

 Традиционно используемые в HPC языки с архитектурой классических компиляторов: C, C++, FORTRAN, Pascal –  не позволяют справляться с этой сложностью настолько хорошо, насколько позволяют более поздние языки: Haskell, JavaScript, Oz, Ruby. Но программы, написанные на таких языках недостаточно эффективны во время исполнения. Лучший в этом Haskell GHC даже с использованием направленных на оптимизацию, нарушающих стройные синтаксис и семантику этого языка конструкций не позволяет получать программы, сравнимые с полученными при помощи C++ по скорости исполнения и по эффективности использования памяти. Известно, что Haskell GHC проигрывает по этим параметрам C++ в более чем 2 раза на программах, вычисляющих одинаковые функции.

Попытки расширять классические компиляторы инструментами из новых языков программирования предпринимаются: C++0x, C#, Java. Но они приводят к чрезмерному усложнению и без того нетривиальных синтаксиса и семантики расширяемых языков, что существенно затрудняет работу как пользователям этих инструментов, так и их создателям.

В связи с этим актуальной становится разработка языка, обладающего набором характеристик, обеспечивающих как эффективное программирование, так и эффективное исполнение полученных программ. Требования к языку формулировались в ходе работ над ядром операционной системы, но выполнение этих требований может привести к средству полезному и в разработке ПО для HPC. Нужным представляется сочетание следующих качеств:

1. Базовые синтаксис и семантика должны быть максимально простыми и однородными.

2. Язык  должен позволять составлять программы в императивной парадигме.

3. В языке должны быть возможны работа с замыканиями, перегрузка и спецификация операторов.

При разработке как ядра ОС, так и ПО для HPC это позволяет удобно (опыт показывает: удобнее чем шаблоны (template) в C++) описывать алгебраические типы данных. Также в ПО для HPC при помощи замыканий можно обеспечивать специализацию кода во время исполнения, что полезно для достижения максимальной производительности. При этом обеспечивать её с сохранением контроля со стороны программиста над процессом специализации, как это позволяет `C, а не прозрачными методами, возможно, не соответствующим особенностям решаемой задачи, которые используются в виртуальных машинах .Net и Java.

4. В языке должны присутствовать механизмы для описания машинно-зависимых типов данных. При работе и над ОС, и над ПО для HPC это обеспечивает возможность оптимизировать программы для работы на процессорах определённой архитектуры.

5. Язык должен обеспечивать создание новых конструкции для управления потоком выполнения. При разработке ОС это полезно для создания абстракций, облегчающих описание цепочек обработки ошибок, а в разработке ПО для HPC это может пригодиться, например, для реализации оптимизированной под архитектуру конкретного супер-компьютера параллельной версии оператора for, или некого оператора, предназначенного для управления работой вычислительных ядер (имеются в виду специальные программы) в потоковых вычислителях.

Удовлетворяющий всем этим требованиям язык удалось разработать. И более того, RiDE.L, оказался несложным в своей архитектуре. Он прост синтаксически и является, в общем, тривиальным языком выражений. Семантика же этих выражений определяется при помощи простого алгоритма, замещающего участки дерева выражений реализациями соответствующих перегруженных операторов. Это нельзя сделать без определения некоторых базовых примитивов, но оказалось, что достаточно реализовать в семантической базе небольшое число простых конструкций (меньше десятка), предназначенных для абстрактной работы с типами, для работы с выражениями и для перегрузки операторов.

Несмотря на свою базовую простоту, RiDE.L позволяет работать например, с такими нетривиальными конструкциями:

int i; int j; future(int) array(M * N) retvals; int allisok;

for (((i; j) ={in} range(0; N - 1) * range(0; N - 1)) &&
(ok = 1; ok)) (
retvals.(i * j) = matrixmul 'A.%1 B.%2 : R.%1.%2 = R'(i; j) |
 grep 'success'
);

for ((allisok = 1; i = 0); i < M * N && allisok; i += 1)
allisok &&= wait(retvals.i) && retvals.i.value == 0);

if (allisok) () or (print 'ERROR')

Данный код описывает запуск и ожидание результатов примитивного параллельного умножения матрицы A на матрицу B в рамках модели распределённых вычислений, принятой в разрабатываемой ОС. В этом коде конструкции: int, future, array, range, for, if-or, ={in} – не являются элементами базовой семантики RiDE.L, а могут быть реализованы на уровне библиотек.

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


 

А также другие работы, которые могут Вас заинтересовать

42794. Технико-экономический расчет для участка распределительной сети 10/0,4 кВ 135.31 KB
  Годовой фонд основной заработной платы одного работника при повременной оплате труда определяется по формуле: ФЗП г о = Бч ∙ Фд ∙ к ∙ Ч руб 4 [ 9 ] где Б ч – минимальная часовая ставка оплаты труда минимальный часовой тариф руб час; Фд – действ. Минимальная часовая ставка оплаты труда рассчитывается по формуле: Б ч = ЗПм Н руб ч...
42795. ТЯГОВАЯ ПОДСТАНЦИЯ ПЕРЕМЕННОГО ТОКА 6.73 MB
  Пояснительная записка к курсовому проекту ОТЖТ. 18 сентября 2012 года ЗАДАНИЕ На курсовой проект студента группы ЭХ136III курса Батиенко Максима специальности Электроснабжение по отраслям по дисциплине Электрические подстанции 1 Тема курсового проекта Тяговая подстанция переменного тока.2 Транзитная тяговая подстанция переменного тока электрифицированной железной дороги 220 35 275 кВ 3 Курсовой проект состоит из двух частей.6 1Структурная схема тяговой подстанции переменного тока 220 35 275 кВ.
42796. Организационные и технические мероприятия безопасного проведения работ с электроустановками до 1000 В 1.05 MB
  Электроснабжение является неотъемлемой частью жизни каждого человека. С давних времен основной задачей электроснабжения было обеспечение объектов электрической энергией. С помощью электрической энергии освещаются помещения, осуществляется автоматическое управление производственными процессами, приводятся в движение миллионы станков и механизмов и многое другое.
42797. Электроснабжение узловой распределительной подстанции 325.95 KB
  Потребитель Марка PкВТ IА Об мин Cos φ КПД Компрессора АИР200L6 30 596 980 086 90 Насосы АИР200L6 30 596 980 086 90 Распеделение нагрузок по пунктам питания. В сп1 входят: Компрессорная установка P= 30кВТ Kи=07 cos φ= 08; зарядноподзорядный агрегат АБ типа ВАЗП Р=23кВТ Ки=07 cos φ=08; синхронный компенсатор Р=80кВТ Ки=07 cos φ=07; Насос системы охлаждения АТ Р=226кВТ Ки=07 cos φ=08; Отопление вентиляция и освещение ОПУ Р=9 Ки=06 cos φ=08. Подпись Лист 6 В сп2 входят: электронагреватель для выключателей и приводов...
42798. Разработка микропроцессорной системы на базе КР 580 238.9 KB
  Интерфейсный модуль обеспечивает параллельный ввод вывода информации с 2х УВВ ключи светодиоды с помощью БИС КР580ВВ55 расположенный по адресу 10h. Для того чтобы подключить к МП память и устройство ввода вывода в системе организован 3х шинный доступ: 1 Шина адреса МП подключается с помощью буферных регистров КР580ИР82 2 Шина данных и управления – формируется системный контроллер КР580ВК28 Тактированиеформирование импульсов по переключению системы из 1 состояния в другое осуществляется тактовым генератором КР580ГФ24 Изм. Шина адреса...
42799. Метод Флетчера-Ривса 3.14 MB
  Все описываемые градиентные методы основаны на итерационной процедуре реализуемой в соответствии с формулой Где текущее приближение к решению ; параметр характеризующий длину шага; направление поиска управляемых переменных x. Первый называется методом градиентного спуска с постоянным шагом. Где направление движения на каждом шаге совпадает с антиградиентом функции. А длина шага задается пользователем и остается постоянной до тех пор пока функция убывает в точках последовательности .
42800. Анализ информационных потребностей пользователей предметной области «Народное образование области» 684.5 KB
  Вместе с тем информационные потребности пользователей меняются со временем, что должно быть учтено в методике проектирования КИМПО: она должна быть ориентирована не столько на первоначальное создание модели, сколько на интеграцию новой информационной потребности с текущей моделью.
42801. Разработка специализированного цифрового функционального узла 6.35 MB
  Генератор чисел на базе счетчика Джонсона. Варианты построения счетчика Джонсона и выбор оптимального в соответствии с критерием оптимизации. Сигнал (R) имеет отрицательную полярность и длительность более Т и менее 1.5Т. В результате воздействия сигнала (R) генератор чисел должен установиться в исходное состояние и сформировать на своих выходах первое число из заданной последовательности.
42802. Расчетная АСР 258.49 KB
  При автоматизации технологических объектов управления ТОУ широко применяют одноконтурные системы регулирования АСР обеспечивающие стабилизацию выходных координат объектов. Проектирование таких АСР предполагает знание статических и динамических характеристик ТОУ позволяющих произвести расчет системы регулирования – определить структуру регулятора и найти параметры его настройки. Тогда по аналогии с критерием Найквиста можно сформулировать следующее условие: если разомкнутая АСР имеет степень колебательности...