Институт Прикладной Математики им.
Российская Академия Наук
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 |




Модель параллелизма по данным
последовательная программа

