77373

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

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

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

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

Русский

2015-02-02

18 KB

1 чел.

Язык программирования 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, и вскоре будет создан его рабочий прототип, на котором можно будет проверить гипотезы о гибкости, выразительной мощи и удобстве предлагаемых подходов к построению компиляторов.


 

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

37399. Моделирование движения заряженных частиц в электрических и магнитных полях 690 KB
  В дерева dd physics выберите Mthemtics Mthemticl Prticle Trcing pt. В дереве выберите Preset Studies Time Dependent. Построение геометрической модели Задание области в корой движутся частицы В окне Model Builder щелкните ПКМ Model 1 Geometry 1 и выберите Cylinder Перейдите к окну Settings для Cylinder. Выберите размер и форму сечения.
37400. Габаритний розрахунок монокуляра з вибором оптичної схеми об’єктива і окуляра 1.43 MB
  Наявність в трьох лінзових обєктивах великої кількості вільних параметрів марки стекол радіуси товщини і повітряні проміжки дозволяє істотно поліпшити їх абераційних корекцію в порівнянні з двох лінзовими. Окуляр Гюйгенса В цих окулярах компонентами є плосковипуклі або випуклоплоскі лінзи виготовлені із оптичного скла однієї марки. Показник заломлення Марка скла 4878 125 16475 К8 2599 29265 25 15163 ТФ1 Вибраний обєктив має фокусну відстань f об = 100 мм. Показник заломлення Марка скла 14634...
37401. Расчет электромагнитных переходных процессов. Методические указания к курсовому и дипломному проектированию 16.74 MB
  Составим схему замещения прямой последовательности Определим параметры схемы замещения прямой последовательности: Система Линия 1 Линия 2 Трансформатор Трансформатор Т1 Реактор Автотрансформатор Нагрузка 1 Нагрузка 2 Асинхронный двигатель Генератор 1 Генератор 2 Все параметры элемента генератор 2 точно такие же как и у элемента генератор 1 Найдем и для этого свернем схему Составим схему замещения обратной последовательности Определим параметры схемы замещения обратной...
37402. Исследование автоматических выключателей 928.5 KB
  Предмет исследования: В работе исследуется поведение автоматических выключателей при испытаниях по ГОСТ. Основные параметры автоматических выключателей: Номинальное рабочее напряжение Ue номинальное напряжение действующее значение напряжения при котором обеспечивается работоспособность выключателя особенно в момент короткого замыкания. Стандартные кривые отключения: Существует несколько типов характеристик автоматических выключателей.
37403. Исследование устройства защитного отключения серии F360 458.5 KB
  Предмет исследования: в работе исследуется поведение устройства защитного отключения УЗО F360 при синусоидальном однополупериодном и импульсном токах. Теоретическая часть: ДИФФЕРЕНЦИАЛЬНЫЕ АВТОМАТЫ И УЗО Дифференциальный автомат представляет собой устройство защиты которое срабатывает при возникновении некоторой разницы токов фазного и нулевого проводов. Различают устройства следующего типа: термомагнитные дифференциальные автоматы; дифференциальные модули; устройства защитного отключения УЗО. УЗО это быстродействующий...
37404. Исследование контактора постоянного тока 574 KB
  Предмет исследования: в работе исследуются коммутационные процессы и динамические характеристики электромагнита контактора постоянного тока при включении и отключении по результатам осциллографирования соответствующих процессов. Теоретическая часть: Динамика работы на примере полного рабочего цикла электромагнита. 1 Рабочий цикл электромагнита: а зависимость положения якоря от времени; б зависимость тока в обмотке электромагнита от времени. Первым этапом рабочего цикла электромагнита рис.
37405. Исследование контактора переменного тока 928 KB
  Предмет исследования: в работе исследуются коммутационные процессы и динамические характеристики включения и отключения по результатам осциллографирования соответствующих процессов в силовой цепи и цепи управления электромагнита переменного тока. Теоретическая часть: Весьма широкое распространение имеют электромагниты питание которых осуществляется от источника переменного тока. Магнитный поток создаваемый обмоткой по которой проходит переменный ток периодически меняется по величине и направлению переменный магнитный поток в...