Параллельные вычисления в ИММ УрО РАН
|
|
Фортран 90 В ИММ попрежнему программируют на Фортране. И главной
сложностью в использовании Фортрана для больших задач является согласование взаимодействия частей большой задачи. С
добавлением параллелизма эти сложности возрастают. Главные проблемы в программировании на Фортране до 77-го: Коллизии согласования имен данных и подпрограмм при линейной структуре программы Повторное использование затруднено (частично следует из предыдущего) Статическое распределение памяти Отсутствие возможности создания новых типов Эти сложности в значительной мере уменьшаются при использовании технологий объектно - ориентированного программирования. А именно: технология ООП
Поэтому желательно идеи ООП внести и в Фортран. Типичная структура программы на Фортран 77
Краткое описание Фортрана 90. Его
особенности и свойства Прежде всего отметим, что Фортран 90 более эффективный язык
чем Фортран 77 для программы с большими массивами и большим числом структурных
единиц программы и данных. Рассмотрим Фортран 90 с точки зрения его свойств как языка ООП, его общую характеристику языка и его главные отличия от Фортран 77. Затем дадим характеристику некоторых конструкций и операторов языка. Небольшие примеры покажут свойства языка. Объекты в Фортране 90
При описании данных определяются их свойства, часть свойств называется атрибутами. К числу свойств относятся
Атрибуты определяются описателями: PARAMETER, PUBLIC, PRIVATE, INTENT, DIMENSION, SAVE, OPTIONAL, POINTER, TARGET, ALLOCATABLE, EXTERNAL и INTRINSIC. О некоторых из них будет сказано ниже. Ряд атрибутов применялся и в Фортране 77. Структура модуля и пример
Схема структуры модуля показывает, что все
содержащиеся в модуле процедуры (подпрограммы и функции) размещаются между
ключевыми операторами CONTAINS и END MODULE. Пример модуля cartesian с процедурой swap MODULE
cartesian TYPE point REAL
:: x, y END
TYPE point CONTAINS SUBROUTINE swap( p1, p2 ) TYPE(point), INTENT(INOUT)::
p1, p2 TYPE(point) :: tmp tmp
= p1 p1 =
p2 p2 =
tmp END SUBROUTINE swap END MODULE
cartesian В этом модуле дается описание типа point как структуры, содержащей два поля x, y типа REAL, а также процедура swap с двумя параметрами p1, p2, из которых каждый описан имеющим тип point и атрибут INTENT (вид параметра) со значением INOUT (входной IN и выходной OUT одновременно, или изменяемый). Тип point задан и для локальной переменной tmp. Символом :: отделяется перечисление свойств переменных от списка переменных. Использование
cartesian Использование описаний и процедур модуля должно идти после объявления о намерении использовать модуль (оператор USE) в использующей процедуре. PROGRAM graph USE cartesian TYPE(point) :: first, last ... CALL
swap( first,
last) ... END
PROGRAM graph
Трансляция и запуск на Альфа
Трансляция и запуск на кластере um16 Запуск на
нескольких процессорах с использованием mpi Размещение информации о Фортран-средствах на сервере
ИММ |