- •Алгоритм выхода из тупиковой ситуации с минимальной ценой
- •Алгоритмы защиты от взаимных блокировок. Классификация алгоритмов защиты.
- •Асинхронные параллельные процессы. Проблема «производитель-потребитель».
- •Асинхронные параллельные процессы. Проблемы синхронизации параллельных процессов.
- •Высокопроизводительный Фортран hpf. Общая характеристика.
- •Задача предотвращения тупиков. Алгоритм банкира.
- •1. Некоторые процессы бесконечно ожидают освобождения требуемых ресурсов, не производя никакой полезной работы
- •2. Процессы удерживают некоторые ресурсы не выполняя никакой полезной работы, и система без внешнего воздействия не может выйти из этого состояния.
- •Задача предотвращения тупиков. Алгоритм упорядоченных классов.
- •1. Некоторые процессы бесконечно ожидают освобождения требуемых ресурсов, не производя никакой полезной работы
- •2. Процессы удерживают некоторые ресурсы не выполняя никакой полезной работы, и система без внешнего воздействия не может выйти из этого состояния.
- •Конструктор массивов в языке Фортран 90.
- •Непроцедурный язык Норма. Понятие сетки. Понятие области.
- •Оператор полагать в языке норма.
- •Операторы языка Фортран 90
- •Операции над массивами в языке Фортран 90.
- •Организация ввода и вывода в языке норма.
- •Понятия критического ресурса и критической секции.
- •Проблема «Производитель-потребитель». Общие семафоры.
- •Проблема взаимных блокировок (тупиков).
- •Программирование пространственно-временных структур на языке оккам.
- •Секции массивов в языке фортран 90.
- •19. Система программирования pvm (Parallel Virtual Machine).
- •20. Система параллельного программирования dvm(Distributed Virtual Machine).
- •21. Система параллельного программирования mpi.
- •22. Структура программы на языке норма. Оператор итерация.
- •23. Условные области в языке норма.
- •24. Язык фортран 90. Общая характеристика.
- •25,26. Язык оккам. Общая характеристика. Операторы языка оккам.
-
Программирование пространственно-временных структур на языке оккам.
Пример 1: Пространственно-временная структура изображается в виде ориентированного графа. CHAN OF INT C: INT A: PAR C ! 1 C ? A «1» передается по каналу С в переменную «а».Транслятор отобразит процессы на транспьютер, а транспьютер на linkи. Данные процессы выполняются параллельно. |
Пример 2: →объединение информации, поступающей по каналам в произвольном порядке. Не заботимся о синхронизации. WHILE TRUE ALT LEFT.CHAN ? X OUTPUT ! X RIGHT.CHAN ? X OUTPUT ! X |
Пример 3:
[4] CHAN OF INT CHANS :
PAR I=0 FOR 3
PIPE.EL( CHANS[I], CHANS[I+1])
Согласование обеспечивается операторами приема и выдачи из канала. Здесь реализована линейная пространственно-временная структура, включающая в себя три процесса и массив из четырех каналов. Параллельные процессы образуются при обращении к процедуре PIPE.EL, к которой в качестве параметров передаются 2 соседние элементы массива каналов.
Пример 4: реализованы двумерная пространственно-временная структура, в которой два двумерных массива каналов X.CHANS и Y.CHANS, и параллельная вложенная конструкция PAR, в которой процессы создаются при вызове процедуры.
[3][2] CHAN OF INT X.CHANS:
[2][3] CHAN OF INT Y.CHANS:
PAR I=0 FOR 2
PAR J=0 FOR 2
GRID.EL (X.CHANS[I,J], Y.CHANS[I,J], X,CHANS[I+1],J, Y.CHANS[I,J+1])
-
Секции массивов в языке фортран 90.
Секция массива - часть элементов исходного массива, выбранная из него по определенному правилу.
Формат секции массива: b (i1, i2, … , in) , где b – имя исходного массива, ik - индексы секции.
Каждый индекс может быть скалярного типа, векторного типа или индексным триплетом. Скалярный индекс – скалярное выражение целого типа.
Замечание: в секции массива по крайней мере один индекс не должен быть скалярным выражением, в противном случае секция вырождается в элемент.
Формат индексного триплета:
[l1] : [l2] : [l3]
где:
l1 – нижняя граница
l2 – верхняя граница
l3 – шаг
Пример использования индексного триплета.
DINSION ROW (N), COL (M)
DINSION Z (M, N)
……………
ROW=Z(3,:)
COL=Z(:,J)
CALL SUB1(Z(M:1:-2,1:N:2))
В этом примере массиву CALL присваивается J-й столбец массива Z. Массиву ROW присваивается 3-я строка массива Z.
Пример использования векторного индекса
INTEGER A(10,10), U(3), U(4)
INTEGER MAT (3,4), VNEW(4)
V=(/1,3,2/)
U=(/2,1,1,3/)
VNEW=A(3,U) à A(3,2), A(3,1), A(3,3)
MAT=A(U,V)
à
A(1,2), A(1,1), A(1,1), A(1,3)
A(3,2), A(3,1), A(3,1), A(3,3)
A(2,2), A(2,1), A(2,1), A(2,3)
Из примера видно, что при использовании векторного индекса могут возникать секции с повторами, в которых один и тот же элемент исходного массива используется несколько раз.
Такие секции не могут использоваться в левой части оператора присваивания.