Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Файлы для подготовки к экзамену / Архитектура компьютеров и ВС, принципы параллельного программирования.doc
Скачиваний:
71
Добавлен:
28.06.2014
Размер:
1.26 Mб
Скачать
    1. Язык граф - схемного потокового параллельного программирования (ягспп)

ЯГСПП ориентирован на крупноблочное (модульное) потоковое программирование задач, он также может эффективно применяться для программного моделирования распределенных систем, систем массового обслуживания и др., информационные связи между компонентами которых структурированы и управляются потоками данных, передаваемых по этим связям.

Язык позволяет эффективно и единообразно представлять в программах три вида параллелизма:

  • параллелизм информационно-независимых фрагментов;

  • потоковый параллелизм, обязанный своим происхождением конвейерному принципу обработки данных;

  • параллелизм множества данных, реализуемый в ЯГСПП через механизм тегирования, когда одна и та же программа или ее фрагмент применяются к различным данным;

Другими, важными с позиции программирования, особенностями ЯГСПП являются:

  • возможность визуального графического и текстового представлений программ;

  • возможность простого структурирования программы и отражения декомпозиционной иерархии при ее построении путем использования отношения «схема-подсхема»;

использование традиционных последовательных языков при программировании модулей.

    1. Функциональное параллельное программирование

Функциональное параллельное программирование можно разделить:

  • концептуальное;

  • Рекурсивное;

  • Functional Parallel Typified Language (FPTL);

  • Основанное на  - исчислении (Lisp, Haskell, ML и т.д.)

      1. Functional Parallel Typified Language (FPTL)

Основные понятия.

Пусть T – счетное множество сортов или типов, которые будем обозначать t, t1, t2, …, t, t, … и пусть каждому tT однозначно сопоставлен непустой носитель (множество данных) Dt.

Определим как множество кортежей типаt1t2…tk и длины k, k0, положив для k=0 D{}, где  – пустой кортеж (кортеж нулевой длины) со свойством x = x = x для любого кортежа x*.

Типизированное направленное отношение R(,) (d-отношение) типа (,) есть график соответствия из D в D. Пара (n, n), где n и n длины кортежей типов  и , есть арность d-отношения.

Всякое d-отношение R(,) однозначно характеризуется своим графиком:

,

где  и  – кортежи соответствующих длин; ,– области определения и значений R(,) соответственно.

d-отношения арности (0, n), n0, можно рассматривать как генераторы данных, задающие множество кортежей длины n, а d-отношения арности (n, 0), как нуллификаторы. У первых «входной» кортеж их графика, а у вторых – «выходной» кортеж имеют нулевую длину (кортеж ).

Нуллификатор арности (n, 0) можно трактовать как представление n-арного предиката, поскольку n-арный предикат однозначно характеризуется множеством кортежей, на которых он принимает значение «истина»:

, где P(x1, x2, …, xn) – предикат, а R – (n, 0)-арное d-отношение, которое его представляет.

Для арности (0, 0) существует всего два d-отношения: одно с графиком {(, )}, другое с пустым графиком, которые могут рассматриваться как представляющие логические константы true и false соответственно.

d-отношение R называется функциональным, если

.

Язык функций строится как замыкание операций композиции функций и оператора наименьшей фиксированной точки над некоторым непустым множеством базисных (элементарных) функций. В теоретическом плане язык функций можно рассматривать как свободную алгебру.

Множество операций композиции функций должно быть универсальным, т.е. независимым от природы базисных функций и обеспечивающим возможность представления в языке любой вычислимой функции над рассматриваемыми типами данных, а базисные функции должны быть, как правило, простыми, так что их вычислимость не вызывает сомнений.