Fortran dvm версия 0 Описание языка Апрель, 2001 - umotnas.ru o_O
Главная
Поиск по ключевым словам:
Похожие работы
Fortran dvm версия 0 Описание языка Апрель, 2001 - страница №1/11



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

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



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. Выравнивание динамических массивов 18

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 38

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

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

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

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



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

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

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

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

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

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

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

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



8. COMMON и EQUIVALENCE 44

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

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

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

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

Литература 48

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

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

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

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

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

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

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

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

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




1. Введение

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


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

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

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

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

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



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


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







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




+




























данные




данные




данные




























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

















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




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













библиотека










библиотека







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










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




































































































процесс




процесс




процесс










процесс




процесс




процесс



























































































































































































































































































данные




данные




данные










данные














































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


следующая страница >>