- •Оглавление
- •1. Архитектура, технологические характеристики, принципы работы, проблемы развития компьютеров и вс. 3
- •2. Принципы, языки, технологии параллельного программирования. 16
- •3. 3. Реализация параллельных языков программирования 34
- •Архитектура, технологические характеристики, принципы работы, проблемы развития компьютеров и вс.
- •Краткая история развития параллелизма в архитектуре эвм.
- •Введение и основные понятия.
- •Ряд основных понятий и определений.
- •Архитектурный облик современного компьютера.
- •Режимы работы компьютера и связь с работой процессора.
- •Два вида параллелизма.
- •Показатели вс, сравнение.
- •Принципы, языки, технологии параллельного программирования.
- •Параллелизм задач, его особенности и характеристики.
- •Процессы, их характеристики.
- •Типы и характеристики параллелизма.
- •Типы и особенности параллелизма.
- •Процессы модели и языки.
- •Сети Петри
- •Событийная модель; статические процессы.
- •Расширение сети Петри
- •1. Одновременность.
- •2. Сети с порождение процессов.
- •3. Расширение: рекурсивные сети
- •4. Раскрашивание сети
- •Модели взаимодействующих последовательных процессов Хоара
- •3. Реализация параллельных языков программирования
- •Примитивы и языки параллельного программирования
- •Язык граф - схемного потокового параллельного программирования (ягспп)
- •Функциональное параллельное программирование
- •3.4.1.1. Операции композиции
- •3.4.1.2. Задание данных и базисных функций
- •Модель асинхронного выполнения функциональных программ
3.4.1.1. Операции композиции
Пусть f – определяемая функция, f1, f2 – заданные функции определенных типов. Обозначаем значение функции для аргумента x через (x); требуемое согласование типов для заданных функций при применении к ним операций композиции осуществляется путем их явного указания. В определении операции композиции сначала дается синтаксис ее представления, затем дается определение графика новой функции, определяемое через операцию композиции, и ее аппликативная форма, определяющая результат применения функции к аргументу.
Для упрощения график функции обозначается тем же символом, что и сама функция; , , – обозначение кортежей.
Все операции композиции являются бинарными, и их определение дается в инфиксной форме.
Последовательная композиция ()
; ;
Конкатенация ()
; ; f(x) = f1(x)f2(x)
Объединение ()
;
Для того чтобы сохранялось свойство функциональности для f операция (отдавая дань предыстории, мы используем вместо общепринятого обозначения операции теоретико-множественного объединения знак ) должна применяться только к совместным или ортогональным функциям.
Функции f1 и f2 совместны тогда и только тогда, когда
;
функции f1 и f2 ортогональны, если они совместны и не существует кортежей 1 и 2 таких, что (, 1)f1 и (, 2)f2 для всякого .
Далее мы покажем, как использование конструкторов (функций), вводимых при задании данных, позволяет (через понятие деструктора) строить ортогональные функции.
Аппликация функции f, определенной посредством операции , теперь имеет следующую семантику: f(x) = f1(x) или f(x) = f2(x), т.е. одному из значений f1(x) или f2(x), которое определено; если значение f1(x) и f2(x) оба не определены, f(x) также не определено.
Условие ()
; ;, если значение f1(x) определено.
Заметим, что первые две операции композиции позволяют выразить известный оператор подстановки, используемый в языке рекурсивных функций и в обычной математической нотации:
,
где g – m-арная, а f1, f2, …, fm – n-арные заданные функции; .
Через две другие операции композиции легко представляется условный оператор языков программирования или задание функции путем разбора случаев, используемое в обычной математической практике:
. Здесь ,, …,– попарно ортогональные пропозициональные функции, представляющие p1, p2, …, pn. При этом значение «ложь» для pi(x), i = 1, 2, …, n, можно трактовать как неопределенное значение для , причем это неопределенное значение является вычислимым и в описываемом далее языке представляется явно в виде обозначения. Значение «истина» для pi(x) совпадает со значением .
Ясно, что значение функции может быть также не определено, если процесс его вычисления длится неограниченно. Мы различаем эти оба случая неопределенного значения, причем, если в результате вычисления значения функции получено неопределенное значение , мы можем существенно повысить эффективность при распараллеливании. Так в последнем примере при вычислении значения f(x) возможно одновременное вычисление всех значение pi(x) и fi(x), i = 1, 2, …, n, но получив в результате pi(x) = для некоторого i мы можем прервать начатое вычисление fi(x), которое уже не может повлиять на результат.
Заметим, что операции композиции , , ассоциативны, – ассоциативна и коммутативна. Введение следующего старшинства для операций композиции: , , , позволит в дальнейшем опускать некоторые скобки в задании функций.
С вычислительной точки зрения, только операция является последовательной, остальные операции композиции параллельны.
Определение функций через систему функциональных уравнений.
Пусть F1, F2, …, Fn – символы типизированных функциональных переменных, 1, 2, …, n – формы или термы, представляющие конечные композиции этих переменных и базисных функций f1, f2, …, fm, m0, относительно введенных операций композиции функций.
Синтаксически оператор наименьшей фиксированной точки, как способ композиции функций f1, f2, …, fm, определяется как система функциональных уравнений
() Fi = i, i = 1, 2, …, n, где Fi – связанные в этом определении функциональные переменные.
В интерпретации () задает первый компонент кортежа функций …, являющегося наименьшим (в смысле включения графиков) решением для ():
, i = 1, 2, …, n.
Здесь – результат одновременной подстановки Aj вместо переменной Xj, j = 1, 2, …, k, в C.
Известно [7], что операции , , и монотонны и, более того, непрерывны относительно своих аргументов и, как следствие, значения , i = 1, 2, …, n, всегда существуют и могут быть выражены явно:, i = 1, 2, …, n, где– нигде не определенная функция, а для k>0,.
Отметим, что в системе уравнений () во всех термах i, i = 1, 2, …, n, должно быть выполнено согласование типов для используемых операций композиции, и тип каждой функциональной переменной Fi должен совпадать с типом i, i = 1, 2, …, n.
Введенные операции и оператор наименьшей фиксированной точки универсальны, потому что они не зависят от типов функций, к которым применяются, и потому, что при правильном выборе множества базисных функций они позволяют представлять любую вычислимую функцию.
Представление функции, в котором рассматривается только композиционная ее структура с точностью до введенных операций композиции, т.е. без задания интерпретации базисных функций, называется схемой. Схема как самостоятельный элемент в задании функции, наглядно отражает ее композиционную структуру и упрощает ее анализ. Именно схема функции является основой построения асинхронной модели вычисления значений функций.