Граф-схемное потоковое параллельное программирование (Граф-схемное потоковое параллельное программирование 2), страница 8
Описание файла
Файл "Граф-схемное потоковое параллельное программирование" внутри архива находится в папке "Граф-схемное потоковое параллельное программирование 2". PDF-файл из архива "Граф-схемное потоковое параллельное программирование 2", который расположен в категории "". Всё это находится в предмете "параллельные системы и параллельные вычисления" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "параллельные системы и параллельные вычисления" в общих файлах.
Просмотр PDF-файла онлайн
Текст 8 страницы из PDF
Модуль MultAB перемножает поступающие «парные» значения ai и bi ипередает результат на вход модуля Sum, который суммирует поступающие на вход значения. Модуль Outputвыводит результат. Этот пример интересен тем, как в нем посредством использования команды READ в модуле24Sum обеспечивается последовательное считывание поступающих на его вход данные и последующее ихсложение.ГС программы:GenNГенерация NGenAГенерация aiGenBГенерация biMultABУмножение ci=ai*biSumСложение ciOutputВывод результатаОписание подпрограмм каждого модуля на языке 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);}}Модуль Output:void PrintRes(int tag,int x1){printf(“Скалярное произведениеравно %d”,x1);}Модуль MultAB:void MultiplicationAB(int tag,int x1,int x2){int c;c=x1*x2;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];25for(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=”p1” type=”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 programmingand controlling parallel computations on computer systems. Proceedings of Internationalconference on parallel computing technologies, Novosibirsk, 19913. Арефьев А.А.
и др. Язык граф-схем параллельных алгоритмов и его расширения.Программирование, 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.28YИмя ГСППYОписание КГВхмодуляНомер Кол-воКГВх входов12. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. Санкт-Петербург, “БХВПетербург”, 2002.13.ОписаниеAmnonBarak 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.