
- •Оглавление
- •1. Архитектура, технологические характеристики, принципы работы, проблемы развития компьютеров и вс. 3
- •2. Принципы, языки, технологии параллельного программирования. 16
- •3. 3. Реализация параллельных языков программирования 34
- •Архитектура, технологические характеристики, принципы работы, проблемы развития компьютеров и вс.
- •Краткая история развития параллелизма в архитектуре эвм.
- •Введение и основные понятия.
- •Ряд основных понятий и определений.
- •Архитектурный облик современного компьютера.
- •Режимы работы компьютера и связь с работой процессора.
- •Два вида параллелизма.
- •Показатели вс, сравнение.
- •Принципы, языки, технологии параллельного программирования.
- •Параллелизм задач, его особенности и характеристики.
- •Процессы, их характеристики.
- •Типы и характеристики параллелизма.
- •Типы и особенности параллелизма.
- •Процессы модели и языки.
- •Сети Петри
- •Событийная модель; статические процессы.
- •Расширение сети Петри
- •1. Одновременность.
- •2. Сети с порождение процессов.
- •3. Расширение: рекурсивные сети
- •4. Раскрашивание сети
- •Модели взаимодействующих последовательных процессов Хоара
- •3. Реализация параллельных языков программирования
- •Примитивы и языки параллельного программирования
- •Язык граф - схемного потокового параллельного программирования (ягспп)
- •Функциональное параллельное программирование
- •3.4.1.1. Операции композиции
- •3.4.1.2. Задание данных и базисных функций
- •Модель асинхронного выполнения функциональных программ
Расширение сети Петри
1. Одновременность.
Сеть N1.
-
могут сработать одновременно.
Сеть N2.
- не могут сработать одновременно, так
как конкурируют за фишку.
-
делают одно и то же.
1.
- произошло срабатывание.
-
сколько фишек у разметки
в
месте
.
2.
Множество переходов
-совместны
(они могут сработать одновременно), если
IN(t)
– множество всех переходных мест
перехода t.
3.
Разметка M
в сети N
конфликтна, если существуют множества
переходов T1
и T2,
готовых к срабатыванию,
,
таких, что после
,T2
не является множеством совместных
переходов.
Множество совместных переходов:
Бесконфликтные сети – это сети, в которых не существует конфликта разметок, на каждом шаге срабатывают все готовые переходы.
2. Сети с порождение процессов.
-
программа, которая выполняется в
конвейерном режиме, пока не выполнится
t
для x1,нельзя
выполнить x2.
Результаты помечаются индексами, так
как они выходят не в порядке поступления.
Порождается переход
-
порожденный переход уходит после
выполнения.
3. Расширение: рекурсивные сети
4. Раскрашивание сети
Модели взаимодействующих последовательных процессов Хоара
Введем следующие обозначения:
A – алфавит действий (актов).
-
акты
Сигнатура операций:
-
непосредственное следование актов.
Процесс – последовательность (в общем случае бесконечная) непосредственного следования актов.
Операции композиции:
условная, обозначим, как ;
параллельная ( );
Условная детерминированная операция:
-
выбор, который зависит от того, что
совершится (a
или b)
P,
ведет себя как P1
или
P2.
Пример.
|
x |
|
|
|
|
хотим передвинуть x.
P1 = внизу направо стоп
P2 = направо внизу стоп
P3 = налево внизу стоп
Оператор рекурсии.
-
правосторонняя рекурсия
Взаимная рекурсия:
Протоколы процесса.
Протоколы процесса – последовательность свершенных актов (наблюдений), которые свершились до наступления момента.
Протоколы: <> - пустой, <a>
Протокол: <>.
Рекурсивное
определение:
,
где
- результат одновременной подстановки
вместо
.
Параллельная композиция процессов.
Два
процесса происходят независимо
и
,
ждетx
от
,
чтобы записатьx
в y.
Процесс замирает,
не
приметx.
-
алфавит процессов
и
(могут различаться или совпадать).
Акты
взаимодействий:
Аксиоматика параллельной операции композиции:
1.
- коммутативность;
2.
- ассоциативность;
3.
Пусть
даны процессы
и
4.
5.
6.
7.
Операция может быть сведена к последовательным
-
последовательность, полученная из t
оставлением элементов алфавита A
и выбрасыванием отличных от A
элементов.
-
любое конечное слово в алфавите
.
Если
- пусто, то Прот(PQ)
= {tt
– произвольное чередование frnjd
bp
}.
Если
.
Дополнительные аксиомы:
1.
2.
3. Реализация параллельных языков программирования
Примитивы и языки параллельного программирования
Рассматриваются два подхода:
процессный, что подразумевает явное задание параллелизма.
неявный, зависит от природы задачи и языка.
Процессные примитивы и языки.
1. Par begin O1… On end
Sim begin O1… On end
O1 … On.
2. fork S1, S2 join S1 S2.
3. асинхронные оперативные схемы.
{O1… On}
Управление условия готовности «оператора» для выполнения.
[“спусковая” функция Oi изменение переменной x, участвующей в спусковой функции].
Пример.
Динамическое управление (в условия используются переменные самой программы).
Пример.
x, y, z – целые.
-
правило выполнения.
параллельная программа = <описание (денотационная семантика), правила параллельного программирования>.
MPI
В первую очередь необходимо сказать, что же представляет MPI. MPI - message passing interface - библиотека функций, предназначенная для поддержки работы параллельных процессов в терминах передачи сообщений.
Номер процесса - целое неотрицательное число, являющееся уникальным атрибутом каждого процесса.
Атрибуты сообщения - номер процесса-отправителя, номер процесса-получателя и идентификатор сообщения.
Идентификатор сообщения (msgtag) - атрибут сообщения, являющийся целым неотрицательным числом, лежащим в диапазоне от 0 до 32767. Процессы объединяются в группы, могут быть вложенные группы. Внутри группы все процессы перенумерованы. С каждой группой ассоциирован свой коммуникатор. Поэтому при осуществлении пересылки необходимо указать идентификатор группы, внутри которой производится эта пересылка.