
- •Средства разработки параллельных программ
- •Основные средства разработки параллельных программ
- •1.3. Стандартные языки программирования (Фортран, Си) с использованием параллельных специализированных библиотек. (Пример –
- •Декларативный язык Норма
- •Историческая справка
- •2.1985. Язык Норма. Препринт ИПМ АН СССР.
- •Типичный процесс разработки программы для решения задачи математической физики
- •Свойства языка Норма. Ограничения.
- •Пример класса задач, статические структурные сетки
- •Ключевые понятия языка Норма:
- •Границы области – константные выражения, константы задаются в описании, например:
- •Соотношения позволяют описывать вычисления, которые должны быть реализованы в программе.
- •Язык Норма. Пример программы 1 Решение системы линейных уравнений:
- •Программа решения системы линейных уравнений на языке Норма
- •Язык Норма. Пример программы 2
- •!Итерации по времени
- •!Тело итерации по времени
- •Основные возможности языка
- •Организация вычислений. ASSUME - не форма записи цикла.
- •Обмен информацией между процессорами (модель распараллеливания по данным)
- •Некоторые задачи, решаемые компилятором языка Норма для модели распараллеливания по данным
- •CВычисление параметров циклов в зависимости от номера
- •CТребуются вычисленные значения из процессоров
- •C Используются значения в процессорах с номерами 4..8 IF(IPR.LT.4.OR.IPR.GT.8.OR.JPR.NE.1) GOTO 7
- •Некоторые расчетные задачи, решенные с помощью языка Норма
- •4. Задача об акреции вещества на звезду с дипольным магнитным полем.
- •Ограничения в применении языка Норма

Средства разработки параллельных программ
Декларативные языки

Основные средства разработки параллельных программ
1. Расширения стандартных языков программирования (Фортран, Си)
1.1.Стандартные языки программирования (Фортран, Си) с использованием коммуникационных библиотек. (Пример - MPI)
1.2.Стандартные языки программирования (Фортран, Си) с использованием языковых расширений для параллелизма. (Пример – OpenMP).
(Пример – UPC, Unified Parallel C). Модель DSM (Distributed Shared Memory, Распределенная общая память).
Нить-1 |
Нить-n |
Общее
адресное
пространство

1.3. Стандартные языки программирования (Фортран, Си) с использованием параллельных специализированных библиотек. (Пример – PLAPACK, параллельные процедуры линейной алгебры, в том числе решение систем линейных уравнений с помощью LU и QR-разложений, разложения Холецкого …)
3.Специальные (новые) языки параллельного программирования.
(Примеры – Sisal, ZPL, Chapel, … ). Декларативные языки
4.Средства распараллеливания последовательных программ (распараллеливающие компиляторы, системы автоматизации распараллеливания – ParaWise, V-Ray)
5.Специализированные пакеты прикладных программ
(ANSYS, CFX, STAR-CD, FLOW-3D, MCNP).
MCNP (Monte Carlo N-Particle Transport Code) (Лос-Аламос, США) - моделирование протекания процессов ядерного распада, а также других взаимодействий с участием нейтронов, фотонов и электронов.
Методы Монте-Карло.

Декларативный язык Норма
Декларативный (непроцедурный) язык программирования –
это язык высокого уровня, в программах на котором программистом не задается пошаговый алгоритм решения задачи ( "как" решить задачу), а некоторым образом описывается, "что" требуется получить в качестве результата.
Фортран, Си – процедурные (императивные) языки.

Историческая справка
1. 1963. Статья И.Б. Задыхайло “Организация циклического процесса счета по параметрической записи специального вида” // Журнал
вычислительной математики и математической физики. 1963. Т. 3. N 2.
1 |
|
f 1 |
1 |
2 |
|
|
n |
|
X i |
|
( X i 1,1 , X i 1, 2 |
,..., X i 1,n ) |
|
||||
2 |
|
f 2 |
1 |
2 |
|
|
n |
|
X i |
|
( X i 2 ,1 |
, X i 2 , 2 |
,..., |
X i 2 ,n |
) |
||
n |
|
... |
1 |
2 |
|
|
n |
|
|
f n |
|
|
|
||||
X i |
|
( X i n ,1 |
, X i n , 2 |
,..., |
X i n,n |
) |
||
|
|
|
|
|
|
p |
p 1,..., n |
|
Организовать процесс вычисления |
|
X i , |
||||||
для индексов i = |
m0 ( p) … mN ( p), |
|
|
p 1,..., n, m0 ( p) заданы. |

2.1985. Язык Норма. Препринт ИПМ АН СССР.
3.1990. Статья “Непроцедурный язык Норма и методы его реализации”.
Компилятор для ЕС ЭВМ в последовательный Фортран -77. Расчет обтекания трехосного эллипсоида вязкой жидкостью.
4.1998. Компиляторы для параллельных систем с распределенной и общей памятью (Фортран GNS, Фортран PVM, Фортран MPI, Фортран Convex).
5.1998-2008. Программирование реальных приложений из области математической физики.
Компиляторы в Фортран DVM, Си MPI.
Интегрированная среда языка Норма, диалоговый отладчик.
6. 2009. Компилятор с языка Норма+ (разработка).
http://www.keldysh.ru/pages/norma/

Типичный процесс разработки программы для решения задачи математической физики
1.Постановка задачи. В качестве исходной информации берется некоторая физическая задача, и строится ее математическая модель. Выходом этого этапа является обычно система дифференциальных уравнений с определенными граничными условиями.
2.Выбирается пространственно-временная сетка и производится дискретизация уравнений с помощью одного из разностных методов.
3.Производится выбор метода решения дискретных уравнений. В результате получаются формулы (соотношения), описывающие необходимые вычисления в точках пространственно-временной сетки.
4.По описанию, полученному на предыдущем этапе, разрабатывается программа на языке программирования.
Цель создания языка Норма – упростить (исключить) этап 4.

Свойства языка Норма. Ограничения.
1.Декларативность. Описывается запрос на вычисление, каким образом он реализуется, не указывается. Нет понятий памяти, управления (переходов, циклов и тп).
2.Однократное присваивание. Single Assignment Language (класс SAL-языков). Нет глобальных переменных и побочных эффектов.
3.Ограничение на вид индексных выражений. K + .
4.Области (массивы) имеют границы, заданные константами.
Декларативность --> синтез выходной программы.
Теорема. Задача синтеза выходной программы для языка Норма разрешима

Пример класса задач, статические структурные сетки
Типичное соотношение: |
X(I) = … Y(I+ )..., |
|
I - индекс-вектор, - вектор констант |
X(I2)
X(I2+ )
X(I1)
X(I1+ )

Ключевые понятия языка Норма:
область, величина, соотношение .
Области используются для задания точек индексного пространства. Область - это совокупность координат точек n-мерного индексного пространства.
Ниже описаны одномерные области с именами oi, oj, om:
oi: ( i =1..Nx). oj:( j =MyJ..Ny+1). om:( m =1..4).
С каждым направлением (осью координат) n-мерного пространства задачи
связывается уникальное имя - имя индекса (имя оси координат индексного
пространства).
При описании одномерной области указывается
имя одномерной области, имя индекса и границы изменения значений индекса.