Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Граф-схемное потоковое параллельное программирование_2 / Граф-схемное потоковое параллельное программирование.pdf
Скачиваний:
59
Добавлен:
28.06.2014
Размер:
564.7 Кб
Скачать

Sum обеспечивается последовательное считывание поступающих на его вход данные и последующее их сложение.

ГС программы:

GenN

Генерация N

GenA

GenB

Генерация ai

Генерация bi

 

MultAB

 

Умножение ci=ai*bi

Sum

Сложение ci

Output

Вывод результата

Описание подпрограмм каждого модуля на языке C:

Модуль GenN: void startup()

{

int N; N=rand();

int place[1]={1},data[1]; data[0]=N; out(1,0,place,data);

}

Модули GenA и GenB: void Generate (int tag,int x1)

{

int elem;

int place[1]={1},data[1]; for(int i=0;i<x1;i++)

{

elem=rand();

data[0]=elem;

write(1,0,place,data);

}

}

 

Модуль MultAB:

Модуль Output:

void MultiplicationAB(int tag,int x1,int x2)

void PrintRes(int tag,int x1)

{

{

int c;

printf(“Скалярное произведение

c=x1*x2;

равно %d”,x1);

int place[1]={1},data[1];

}

data[0]=c;

 

out(1,0,place,data);

 

}

 

Модуль Sum:

 

void Sum (int tag,int x1,int x2)

 

{

 

int val,res;

 

val=x1;

 

res=val;

 

int place[1]={1},data[1];

 

25

for(int i=0;i<x2-1;i++)

{

read(1,0,place,&val);

res+=val;

}

out(1,0,place,data);

}

Приложение 2. Синтаксис текстового представления ГСПП

Описание структуры ГС и подсхем:

<!ELEMENT schema (nodes, relations)> //Описание ГС состоит из описания модулей и ИС

<!ATTLIST schema name CDATA #REQUIRED>//Атрибутом описания ГС является ее имя <!ELEMENT nodes (node)+> //Описание модулей

<!ELEMENT node EMPTY> //Описание отдельного модуля

<!ATTLIST node id CDATA #REQUIRED module CDATA #REQUIRED> //id - Имя модуля, module - имя xml-

файла с описанием модуля

<!ELEMENT relations (relation)+> //Описание ИС <!ELEMENT relation (first, second)> //Описание отдельной ИС

<!ELEMENT first (group, output)> //Описание выходной точки ИС

<!ATTLIST first id CDATA #REQUIRED> // id - имя модуля, откуда исходит ИС

<!ELEMENT group (#PCDATA)> //Имя КГВых/КГВх, откуда исходит/входит ИС

<!ELEMENT output (#PCDATA)> //Имя выхода, откуда исходит ИС <!ELEMENT second (group, input)> //Описание входной точки ИС

<!ATTLIST second id CDATA #REQUIRED> // id - Имя модуля, куда поступает ИС <!ELEMENT input (#PCDATA)> // Имя входа, куда поступает ИС

Описание структуры модулей:

<!ELEMENT module (inputs, outputs)>//Описание модуля состоит из описания КГВх и КГВых

<!ATTLIST module name CDATA #REQUIRED>//В качестве атрибута указываем имя модуля <!ELEMENT inputs (inputgroup)+>//Описание КГВх

<!ELEMENT inputgroup (input)+>//Описание отдельной КГВх

<!ATTLIST inputgroup name CDATA #REQUIRED link CDATA #REQUIRED proc CDATA #REQUIRED>//В

качестве атрибутов указывается имя КГВх (name), путь к подпрограмме данной КГВх (link) и заголовок (proc) подпрограммы с параметрами.

<!ELEMENT input EMPTY>//Описание входа

<!ATTLIST input name CDATA #REQUIRED type CDATA #REQUIRED>//Атрибуты: name - имя входа, type -

тип данных, сопоставленный входу

<!ELEMENT outputs (outputgroup)+>//Описание КГВых <!ELEMENT outputgroup (output)+>//Описание отдельной КГВых

<!ATTLIST outputgroup name CDATA #REQUIRED>//Атрибут: name - имя КГВых <!ELEMENT output EMPTY>//Описание входа

<!ATTLIST output name CDATA #REQUIRED type CDATA #REQUIRED>// Атрибуты: name - имя выхода, type - тип данных, сопоставленный выходу

Текстовое описание ГС, изображенной на рис. 4

Файл test.xml

<?xml version=”1.0” encoding=”windows-1251”?> <scheme name=”test”>

<nodes>//Описание модулей, атрибуты: id-имя модуля; module - имя xml-файла с подробным описанием модуля

<node id=”M_1” module=”Module_1”/> <node id=”M_2” module=”Module_2”/> <node id=”M_3” module=”Module_3”/>

<node id=”Sub_1” module=”subst.sub_1”/>//Описание подстановочного модуля

</nodes>

<relations>//Описание всех ИС ГС

<relation>

<first id=”M_1”>//Модуль, из которого выходит ИС

<group>1</group>//Номер КГВых <output>1</output>//Номер выхода </first>

<second id=”Sub_1”>//Модуль, в который входит ИС

26

<group>1</group>//Номер КГВх <input>3</input>//Номер входа </second>

</relation>

<relation> //Описание остальных ИС. <first id=”M_1”> <group>1</group> <output>2</output>

</first>

<second id=”Sub_1”> <group>1</group> <input>1</input> </second>

</relation>

<relation>

<first id=”M_1”> <group>1</group> <output>3</output> </first>

<second id=”Sub_1”> <group>1</group> <input>2</input> </second>

</relation>

<relation>

<first id=”M_1”> <group>2</group> <output>1</output> </first>

<second id=”Sub_1”> <group>2</group>

<input>1</input> </second>

</relation>

<relation>

<first id=”M_1”> <group>2</group> <output>2</output> </first>

<second id=”M_2”> <group>1</group> <input>1</input> </second>

</relation>

<relation>

<first id=”Sub_1”> <group>1</group> <output>1</output> </first>

<second id=”M_1”> <group>1</group> <input>1</input> </second>

</relation>

<relation>

<first id=”M_2”> <group>1</group> <output>1</output> </first>

<second id=”M_3”> <group>1</group> <input>2</input> </second>

27

</relation>

<relation>//Свободная ИС (тег first отсутствует)

<second id=”M_2”> <group>1</group> <input>2</input> </second>

</relation>

</relations>

</scheme>

Файл module_1.xml

<?xml version=”1.0” encoding=”windows-1251”?> <module name=”M_1”> //Подробное описание модуля

<inputs>//Описание всех КГВх модуля: name – имя КГВх, link - путь к подпрограмме, сопоставленной данной КГВх

<inputgroup name=”StartCG” link=”c:\modules\mod1.cpp”/> </inputs>

<outputs>//Описание всех КГВых

<outputgroup name=”CGOut_1”>//КГВых: name – ее имя и перечисление выходов

<output name=”p1type=”char”>//name-название выхода,type-его тип <output name=”p2” type=”bool”>

<output name=”p3” type=”string”> </outputgroup>

<outputgroup name=”CGOut_2”> <output name=”p4” type=”string”>

</outputgroup>

</outputs>

</module>

Остальные модули описываются по аналогии с представленным, подсхема описывается по аналогии с ГС. Если

на один из входов модуля поступает установочная ИС, то описание входа выглядит следующим образом:

<input name=”p” type=”float” value=”26.354”>, где value задает значение ИС.

Список литературы

1.Кутепов В.П. Организация параллельных вычислений на системах. М:, МЭИ, 1988.

2.Kutepov V.P., Falk V. Integrated tools for functional logical and data flow parallel programming and controlling parallel computations on computer systems. Proceedings of International conference on parallel computing technologies, Novosibirsk, 1991

3.Арефьев А.А. и др. Язык граф-схем параллельных алгоритмов и его расширения. Программирование, 1981, №4.

4.Кораблин Ю.П. Проблема корректности граф-схем параллельных алгоритмов. Программирование, 1978, №5.

5.Кораблин Ю.П. Языки параллельных алгоритмов и принципы их реализации. Автореферат канд. диссертации, М:, МЭИ, 1977.

6.Дмитриев Ю.К., Хорошевский В.Г. Вычислительные системы из мини ЭВМ, М:, “Радио и связь”, 1982.

7.Строева Т.М., Фальк В.Н. Асинхронные вычислительные сети (АВС): АВС-модель и АВС система программирования, Кибернетика, 1981, №3.

8.Dennis J.B. First version of data flow language. In Proc. Colloque sur la Programmation, vol.19 (Lecture notes in computer science), 1974.

9.Строева Т.М. Асинхронные вычислительные сети и их применение в системах параллельного программирования. Автореферат кандидатской диссертации. М:, МЭИ,

1981.

10.Лобанов В.П. Разработка алгоритмов и программных средств обеспечения надежности параллельных вычислений на вычислительных комплексах. Автореферат кандидатской диссертации. М:, МЭИ, 1985.

11.Кутепов В.П. Об интеллектуальных компьютерах и больших компьютерных системах нового поколения. Теория и системы управления, 1996, №5.

28

Y

Имя ГСПП

Y

Описа

Номер Кол

12.мВоеводин В.В., Воеводин Вл.В. Параллельные вычисления. Санкт-Петербург, “БХВ-

КГВх вхо

Петербург”, 2002.

13.Amnon Barak et. A Scalable cluster computing with Mosix for Linux: Institute of Computer Science. The Hebrew University of Jerusalem, 1999.

14.Шнитман В. Системы Exemplar SPP1200. Открытые системы, 1991, №6.

15.Шмидт В. Системы IBM SP2. Открытые системы, 1995, №6.

16.Горицкий Ю.А., Кутепов В.П., Старобогатова Н.Н. О выборе оптимального числа программ для ВС со страничной стратегией распределения памяти. Техническая кибернетика, 1975, №1.

17.Кутепов В.П. Активное множество страниц программы и его поведение. Программирование, 1975, №1.

18.Фляйшер П. Разработка и реализация алгоритмов управления многопрограммной работой в системах с виртуальной реализацией памяти. Автореферат канд. диссертации, М:, МЭИ,

1983.

19.Кутепов В.П., Пьянков В.П. Алгоритмы определения множества активных страниц (сегментов) программы, основанные на понятии динамического цикла. Программирование, 1979, №4.

20.Старобогатова Н.Н. Исследование влияния уровня многопрограммности на производительность многопрограммной работы вычислительных систем со страничной памятью. Автореферат канд. диссертации, М:, МЭИ, 1978.

21.Тихонов А.А. Исследование и разработка программного и информационного обеспечения уровня управления технологическим процессом в гибких автоматизированных производственных системах. Автореферат канд. диссертации, М: МЭИ, 1989.

29