Институт Прикладной Математики им.

Российская Академия Наук

Fortran DVM

Версия 2.0

Описание языка

Апрель, 2001

Содержание

1. Введение.......................................................................................................................... 4

1.1. Модели параллельного программирования............................................................ 4

1.2. DVM–подход к разработке параллельных программ............................................ 6

2. Обзор языка.................................................................................................................. 7

2.1. Модель программирования и модель параллелизма.............................................. 7

2.2. Синтаксис директив FDVM..................................................................................... 7

3. Массивы виртуальных процессоров. Директива PROCESSORS................ 9

4. Распределение данных.............................................................................................. 9

4.1. Директивы DISTRIBUTE и REDISTRIBUTE........................................................ 9

4.1.1. Формат BLOCK.................................................................................................. 11

4.1.2. Формат GEN_BLOCK........................................................................................ 11

4.1.3. Формат WGT_BLOCK....................................................................................... 12

4.1.4. Формат *............................................................................................................. 12

НЕ нашли? Не то? Что вы ищете?

4.1.5. Многомерные распределения............................................................................ 13

4.2. Распределение динамических массивов............................................................... 13

4.2.1. Динамические массивы в программе на языке Фортран 77............................. 13

4.2.2. Динамические массивы в модели FDVM. Директива POINTER...................... 14

4.2.3. Директива DISTRIBUTE и REDISTRIBUTE для динамических массивов....... 15

4.3. Распределение через выравнивание...................................................................... 16

4.3.1. Директивы ALIGN и REALIGN......................................................................... 16

4.3.2. Директива TEMPLATE....................................................................................... 18

4.3.3. Выравнивание динамических массивов............................................................ 19

4.4. Директивы DYNAMIC и NEW_VALUE.............................................................. 20

4.5. Распределение по умолчанию................................................................................ 20

5. Распределение вычислений.................................................................................. 20

5.1. Параллельные циклы............................................................................................... 20

5.1.1. Определение параллельного цикла................................................................... 20

5.1.2. Распределение витков цикла. Директива PARALLEL...................................... 21

5.1.3. Приватные переменные. Спецификация NEW.................................................. 22

5.1.4. Редукционные операции и переменные. Спецификация REDUCTION............ 22

5.2. Вычисления вне параллельного цикла.................................................................. 24

6. Cпецификация удаленных данных.................................................................... 25

6.1. Определение удаленных ссылок............................................................................ 25

6.2. Удаленные ссылки типа SHADOW....................................................................... 26

6.2.1. Спецификация массива с теневыми гранями.................................................... 26

6.2.2. Синхронная спецификация независимых ссылок типа SHADOW для одного цикла 27

6.2.3. Вычисление значений в теневых гранях. Спецификация SHADOW_COMPUTE 28

6.2.4. Спецификация ACROSS зависимых ссылок типа SHADOW для одного цикла 29

6.2.5. Асинхронная спецификация независимых ссылок типа SHADOW................. 32

6.3. Удаленные ссылки типа REMOTE........................................................................ 34

6.3.1. Директива REMOTE_ACCESS........................................................................... 34

6.3.2. Синхронная спецификация удаленных ссылок типа REMOTE........................ 34

6.3.3. Асинхронная спецификация удаленных ссылок типа REMOTE...................... 35

6.3.4. Асинхронное копирование по ссылкам типа REMOTE.................................... 37

6.3.4.1. Цикл и операторы копирования................................................................. 37

6.3.4.2. Директивы асинхронного копирования...................................................... 38

6.3.4.2.1. Директива ASYNCID..................................................................................................................... 38

6.3.4.2.2. Директива F90................................................................................................................................. 38

6.3.4.2.3. Директивы ASYNCHRONOUS и END ASYNCHRONOUS..................................................... 39

6.3.4.2.4. Директива ASYNCWAIT............................................................................................................... 39

6.4. Удаленные ссылки типа REDUCTION................................................................. 39

6.4.1. Синхронная спецификация удаленных ссылок типа REDUCTION................. 39

6.4.2. Асинхронная спецификация удаленных ссылок типа REDUCTION............... 40

7. Параллелизм задач.................................................................................................. 41

7.1. Описание массива задач.......................................................................................... 41

7.2. Отображение задач на процессоры. Директива MAP.......................................... 42

7.3. Распределение массивов по задачам...................................................................... 42

7.4. Распределение вычислений. Директива TASK_REGION.................................. 42

7.5. Локализация данных в задачах............................................................................... 43

7.6. Фрагмент статической многообластной задачи................................................... 43

7.7. Фрагмент динамической многообластной задачи............................................... 44

MON и EQUIVALENCE................................................................................. 45

9. Процедуры................................................................................................................... 46

10. Ввод-вывод............................................................................................................... 47

11. Совместимость с HPF............................................................................................. 48

12. Отличие версии FDVM 2.0 от версии FDVM 1.0............................................ 48

Литература....................................................................................................................... 49

Приложение 1. Синтаксис........................................................................................... 50

Приложение 2. Примеры программ......................................................................... 60

Пример 1. Алгоритм метода исключения Гаусса........................................................ 60

Пример 2. Алгоритм Якоби........................................................................................... 61

Пример 3. Алгоритм Якоби (асинхронный вариант)................................................. 62

Пример 4. Последовательная верхняя релаксация...................................................... 63

Пример 5. "Красно-черная" последовательная верхняя релаксация.......................... 64

Пример 6. Статические задачи (параллельные секции)............................................. 65

Пример 7. Динамические задачи (цикл задач)............................................................. 67

1. Введение

1.1. Модели параллельного программирования

В настоящее время в области научно-технических расчетов превалируют три модели параллельного программирования: модель передачи сообщений (МПС), модель с общей памятью (МОП) и модель параллелизма по данным (МПД).

Модель передачи сообщений. В модели передачи сообщений каждый процесс имеет собственное локальное адресное пространство. Обработка общих данных и синхронизация осуществляется посредством передачи сообщений. Обобщение и стандартизация различных библиотек передачи сообщений привели к разработке стандарта MPI [1].

Модель с общей памятью. В модели с общей памятью процессы разделяют общее адресное пространство. Так как нет ограничений на использование общих данных, то программист должен явно специфицировать общие данные и упорядочивать доступ к ним с помощью средств синхронизации. В языках высокого уровня логически независимые нити (потоки) вычислений определяются на уровне функциональных задач или витков цикла. Обобщение и стандартизация моделей с общей памятью привели к созданию стандарта OpenMP [2].

Модель параллелизма по данным. В модели параллелизма по данным отсутствует понятие процесса и, как следствие, явная передача сообщений или явная синхронизация. В этой модели данные последовательной программы распределяются по узлам (процессорам) вычислительной системы. Последовательная программа преобразуется компилятором либо в модель передачи сообщений, либо в модель с общей памятью (рис.1.1). При этом вычисления распределяются по правилу собственных вычислений: каждый процессор выполняет только вычисления собственных данных, т. е. данных, распределенных на этот процессор.

По сравнению с двумя предыдущими моделями МПД имеет явные преимущества. Эта модель освобождает программиста от рутинной и трудоемкой работы по распределению глобальных массивов на локальные массивы процессов, по управлению передачей сообщений и синхронизации доступа к общим данным. Однако область применения этой модели является предметом исследований. Результаты этих исследований показывают, что эффективность многих алгоритмов научно-технических расчетов в модели МПД сравнима с эффективностью реализации в моделях МПС и МОП.

Первой попыткой стандартизации МПД для научно-технических расчетов явилась разработка HPF1 [3]. Стандартизация моделей МПС и МОП проводилась на базе обобщения большого опыта реализации и практического применения этих моделей. Стандарт HPF1 разрабатывался на базе теоретических исследований и 2-3 экспериментальных реализаций. Кроме этого, стандарт базировался на полной автоматизации распараллеливания вычислений и синхронизации работы с общими данными. Первые реализации HPF1 показали неэффективность стандарта для современных методов вычислений (в частности, для нерегулярных вычислений). В следующей версии стандарта HPF2 [4] сделан шаг в сторону «ручного» управления эффективностью параллельного выполнения. В частности, определены средства распределения вычислений и спецификации общих редукционных переменных.


Модель параллелизма по данным

Овал: Компилятор

последовательная программа

+

данные

данные

данные

директивы распределения данных

 


Модель передачи сообщений

Модель с общей памятью

библиотека

библиотека

передачи сообщений

синхронизации

процесс

процесс

процесс

процесс

процесс

процесс

данные

данные

данные

данные

Рис.1.1. Три модели параллельного программирования

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10