
- •Алгоритм выхода из тупиковой ситуации с минимальной ценой
- •Алгоритмы защиты от взаимных блокировок. Классификация алгоритмов защиты.
- •Асинхронные параллельные процессы. Проблема «производитель-потребитель».
- •Асинхронные параллельные процессы. Проблемы синхронизации параллельных процессов.
- •Высокопроизводительный Фортран hpf. Общая характеристика.
- •Задача предотвращения тупиков. Алгоритм банкира.
- •Задача предотвращения тупиков. Алгоритм упорядоченных классов.
- •1. Некоторые процессы бесконечно ожидают освобождения требуемых ресурсов, не производя никакой полезной работы
- •2. Процессы удерживают некоторые ресурсы не выполняя никакой полезной работы, и система без внешнего воздействия не может выйти из этого состояния.
- •Конструктор массивов в языке Фортран 90.
- •Непроцедурный язык Норма. Понятие сетки. Понятие области.
- •Оператор полагать в языке норма.
- •Операторы языка Фортран 90
- •Операции над массивами в языке Фортран 90.
- •Организация ввода и вывода в языке норма.
- •Понятия критического ресурса и критической секции.
- •Проблема «Производитель-потребитель». Общие семафоры.
- •Проблема взаимных блокировок (тупиков).
- •Программирование пространственно-временных структур на языке оккам.
- •Секции массивов в языке фортран 90.
- •19. Система программирования pvm (Parallel Virtual Machine).
- •20. Система параллельного программирования dvm(Distributed Virtual Machine).
- •21. Система параллельного программирования mpi.
- •22. Структура программы на языке норма. Оператор итерация.
- •23. Условные области в языке норма.
- •24. Язык фортран 90. Общая характеристика.
- •25,26. Язык оккам. Общая характеристика. Операторы языка оккам.
24. Язык фортран 90. Общая характеристика.
3 класса (категории) языков параллельного программирования:
1. Языки с явным описанием взаимодействий параллельных процессов (Параллельный C, OCCAM); 2. Языки с неявным описанием параллелизма (способом представления структур данных) (FORTRAN); 3. Не процедурные языки (НОРМА).
Фортра́н (Fortran) — первый язык программирования высокого уровня, имеющий транслятор. Создан в период с 1954 по 1957. Разработчики ориентировались на военные цели и задачи физики. 2 раза в год – симпозиум по параллельным вычислениям. Название Fortran от FORmula TRANslator (переводчик формул). Фортран широко используется в первую очередь для научных и инженерных вычислений. В Fortran-90 включены инструкции для параллельного прог-ания.
Фортран - язык фиксировано-свободных форматов записи. Любой оператор состоит из 80-ти символов. Состоит из метки (5 символов), далее пробел и до конца - операнды. Если не хватает 80 символов, то можно писать на следующей строке при условии, что шестым символом идет символ, отличный от пробела.
В качестве метки используются только целые положительные числа. Алфавит – только заглавные латинские буквы, знаки арифметических операций.
Если буква С в первой позиции то далее будет комментарий.
Типы данных: INTEGER, REAL, LOGICAL (bool). Язык с неявным описанием типа. Все, которые начинаются с I,J,K,L,M,N – по умолчанию целые, а прочие – вещественные. Явное описание, возможно, любым INTEGER B5. Неявное описание IMPLICIT REAL J. Массивы описываются словом DIMENSION A(10,10), в скобках указываются верхние границы индексов, а нижние всегда единица. Максимальное измерение 7. В памяти располагаются по столбцам.
Структура программы.
ОСНОВНАЯ ПРОГРАММА |
ПОДПРОГРАММА1 |
ПОДПРОГРАММА2 |
… |
ПОДПРОГРАММАn |
Каждый раздел заканчивается словом «END». Описание переменных идет сначала раздела. Подпрограммы начинаются со слов SUBROUTINE или FUNCTION.
Операторы:
1. Оператор присваивания: <переменная> = <выражение>
** - возведение в степень
2. Логические отношения: .EQ, .NE, .LT, .GT, .GE, .LE
3. Логические операции .NOT, .AND, .OR, .XOR
4. Логические константы .TRUE, .FALSE
Переход GOTO <метка>
Логический IF <логическое выражение> <оператор1> <оператор2>
Арифметический IF <арифметическое выражение> (M1, M2, M3)
Если меньше нуля, то переход на M1, равно нулю M2, больше M3.
Цикл
DO <метка> <оператор цикла> = <начальное значение>, <верхняя граница>
<тело цикла>
<метка>
Оператор CONTINUE – аналогия break
Вызов процедуры CALL <имя процедуры> (список операторов)
Операторы ввода и вывода
В языке фортран осуществляется форматный ввод и вывод. Это означает что операторы ввода и вывода применяются в паре с форматом, которое может быть помещено в любой части программы. Обычно № канала: для ввода 5, для вывода 6.
READ (№ канала, метка формата) список ввода; WRITE (№ канала) список вывода.
Метка формата это FORMAT (I4, F8.3 …). Каждая спецификация может иметь кратность повторения и заключаться в скобки : 2(4I4,5F8.3). Работает как цикл. Первый вывод при выводе – управляющий: 1X. Для размещения введенного формата есть спецификации целых I, (доп. еще E, F), затем идет число позиции, например I4. Для F – F8.3, затем число позиций после запятой. Для E10.5.1 : второе – для мантиссы, а третье для изображения чисел после запятой. Для порядка обозначатся E+01. Спецификация L – для логических переменных (например, L4), спецификация X – пробег (2X – два пробега)
Для ввода/вывода массива можно использовать неявный цикл
DIMENSION A(5), B(3,3)
…
WRITE (6,1) ((B(I,J), J=1,3), I=1,3)
1FORMAT(1X,3F8.3)
Отличия Fortran 90 (1991) от Fortran:
-
Введены управляющие операторы и конструкции. Добавлены DO … END DO (вместо завершения цикла меткой), DO WHILE, оператор передачи управления на начало цикла CYCLE, конструкция выбора SELECT CASE (для замены громоздких конструкций IF и операторов GOTO), а также заключительный оператор программной единицы, модульной или внутренней процедуры END[3].
-
Введён инструментарий указателей (по аналогии с языком С).
-
Операторы работы с динамической памятью: ALLOCATE, DEALLOCATE и т.д.
-
Добавлены компоненты MODULE, PRIVATE, PUBLIC, CONTAINS и т.д.
-
Введено маскирование присваивания массивов (присваивание при выполнении наложенного на элементы массива логического условия без использования операторов условия), а также работа с сечениями массивов. Введён оператор и конструкция WHERE для частичной замены циклов (правая часть оператора присваивания не изменяется). Маскирование присваивания распространяется почти на все операторы, конструкции и функции, оперирующие с массивами.
-
Стандартные операции присваивания, сложения, вычитания, а также деления и умножения на число распространены на массивы и их секции, определяемые сечениями. В этом случае осуществляется поэлементное присваивание.
-
Появились новые встроенные функции, в основном для работы с массивами.
-
В языке появились элементы ООП. Введены производные типы данных.
-
Добавлены дополнительные функции для работы со строковыми данными