
- •Алгоритм выхода из тупиковой ситуации с минимальной ценой
- •Алгоритмы защиты от взаимных блокировок. Классификация алгоритмов защиты.
- •Асинхронные параллельные процессы. Проблема «производитель-потребитель».
- •Асинхронные параллельные процессы. Проблемы синхронизации параллельных процессов.
- •Высокопроизводительный Фортран 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. Язык оккам. Общая характеристика. Операторы языка оккам.
-
Операторы языка Фортран 90
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)
Оператор присваивания в среде операций над массивами.
REAL X(10,10), Y(40), Z(-9:10)
…
X(10,:) = 2.9 + Y(2:40:2) + SQR(Z)
X(:,3) = 3.5
Здесь оператор присваивания выполняется над секциями массивов в обычном порядке, т.е. каждому элементу секции слева ставится в соответствие элемент секции, получающийся при вычислении выражения справа. Элементы секции перебираются слева направо. Условием является согласованность секций в левой и правой части.
Пример: REAL X(10) ………… X(1:10)=X(10:1:-1) |
Такой оператор присваивания – встроенный, его особенности: 1)сначала выполняются все операции в правой части над элементами исходных массивов, 2)затем все операции в индексной части слева. После этого → само присваивание. В результате элементы массива X разместятся в обратном порядке. |
Присваивание по маске. Рассмотрим следующий пример
WHERE (Y.NE.0) X(10,:) = 4.1 + Z/Y ELSE WHERE X(10,:) = 0.0 END WHERE |
В этом примере задается маска в виде лог. выражения над массивом Y. Для тех элементов, где оно истинно, над элементами массивов Z, X, Y выполняется первая часть конструкции, а для остальных – вторая часть конструкции. Конструкция WHERE может не содержать вторую часть ELSE WHERE. |
В ФОРТРАН 90 имеются функции, возвращающие в качестве результата массив. Есть возможность использовать традиционные функции в суперскалярном режиме.