- •Оглавление
- •1. Архитектура, технологические характеристики, принципы работы, проблемы развития компьютеров и вс. 3
- •2. Принципы, языки, технологии параллельного программирования. 16
- •3. 3. Реализация параллельных языков программирования 34
- •Архитектура, технологические характеристики, принципы работы, проблемы развития компьютеров и вс.
- •Краткая история развития параллелизма в архитектуре эвм.
- •Введение и основные понятия.
- •Ряд основных понятий и определений.
- •Архитектурный облик современного компьютера.
- •Режимы работы компьютера и связь с работой процессора.
- •Два вида параллелизма.
- •Показатели вс, сравнение.
- •Принципы, языки, технологии параллельного программирования.
- •Параллелизм задач, его особенности и характеристики.
- •Процессы, их характеристики.
- •Типы и характеристики параллелизма.
- •Типы и особенности параллелизма.
- •Процессы модели и языки.
- •Сети Петри
- •Событийная модель; статические процессы.
- •Расширение сети Петри
- •1. Одновременность.
- •2. Сети с порождение процессов.
- •3. Расширение: рекурсивные сети
- •4. Раскрашивание сети
- •Модели взаимодействующих последовательных процессов Хоара
- •3. Реализация параллельных языков программирования
- •Примитивы и языки параллельного программирования
- •Язык граф - схемного потокового параллельного программирования (ягспп)
- •Функциональное параллельное программирование
- •3.4.1.1. Операции композиции
- •3.4.1.2. Задание данных и базисных функций
- •Модель асинхронного выполнения функциональных программ
Язык граф - схемного потокового параллельного программирования (ягспп)
ЯГСПП ориентирован на крупноблочное (модульное) потоковое программирование задач, он также может эффективно применяться для программного моделирования распределенных систем, систем массового обслуживания и др., информационные связи между компонентами которых структурированы и управляются потоками данных, передаваемых по этим связям.
Язык позволяет эффективно и единообразно представлять в программах три вида параллелизма:
параллелизм информационно-независимых фрагментов;
потоковый параллелизм, обязанный своим происхождением конвейерному принципу обработки данных;
параллелизм множества данных, реализуемый в ЯГСПП через механизм тегирования, когда одна и та же программа или ее фрагмент применяются к различным данным;
Другими, важными с позиции программирования, особенностями ЯГСПП являются:
возможность визуального графического и текстового представлений программ;
возможность простого структурирования программы и отражения декомпозиционной иерархии при ее построении путем использования отношения «схема-подсхема»;
использование традиционных последовательных языков при программировании модулей.
Функциональное параллельное программирование
Функциональное параллельное программирование можно разделить:
концептуальное;
Рекурсивное;
Functional Parallel Typified Language (FPTL);
Основанное на - исчислении (Lisp, Haskell, ML и т.д.)
Functional Parallel Typified Language (FPTL)
Основные понятия.
Пусть T – счетное множество сортов или типов, которые будем обозначать t, t1, t2, …, t, t, … и пусть каждому tT однозначно сопоставлен непустой носитель (множество данных) Dt.
Определим как множество кортежей типаt1t2…tk и длины k, k0, положив для k=0 D{}, где – пустой кортеж (кортеж нулевой длины) со свойством x = x = x для любого кортежа x*.
Типизированное направленное отношение R(,) (d-отношение) типа (,) есть график соответствия из D в D. Пара (n, n), где n и n длины кортежей типов и , есть арность d-отношения.
Всякое d-отношение R(,) однозначно характеризуется своим графиком:
,
где и – кортежи соответствующих длин; ,– области определения и значений R(,) соответственно.
d-отношения арности (0, n), n0, можно рассматривать как генераторы данных, задающие множество кортежей длины n, а d-отношения арности (n, 0), как нуллификаторы. У первых «входной» кортеж их графика, а у вторых – «выходной» кортеж имеют нулевую длину (кортеж ).
Нуллификатор арности (n, 0) можно трактовать как представление n-арного предиката, поскольку n-арный предикат однозначно характеризуется множеством кортежей, на которых он принимает значение «истина»:
, где P(x1, x2, …, xn) – предикат, а R – (n, 0)-арное d-отношение, которое его представляет.
Для арности (0, 0) существует всего два d-отношения: одно с графиком {(, )}, другое с пустым графиком, которые могут рассматриваться как представляющие логические константы true и false соответственно.
d-отношение R называется функциональным, если
.
Язык функций строится как замыкание операций композиции функций и оператора наименьшей фиксированной точки над некоторым непустым множеством базисных (элементарных) функций. В теоретическом плане язык функций можно рассматривать как свободную алгебру.
Множество операций композиции функций должно быть универсальным, т.е. независимым от природы базисных функций и обеспечивающим возможность представления в языке любой вычислимой функции над рассматриваемыми типами данных, а базисные функции должны быть, как правило, простыми, так что их вычислимость не вызывает сомнений.