Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Граф-схемное потоковое параллельное программирование

Граф-схемное потоковое параллельное программирование (Граф-схемное потоковое параллельное программирование 2), страница 7

PDF-файл Граф-схемное потоковое параллельное программирование (Граф-схемное потоковое параллельное программирование 2), страница 7 Параллельные системы и параллельные вычисления (5743): Другое - 9 семестр (1 семестр магистратуры)Граф-схемное потоковое параллельное программирование (Граф-схемное потоковое параллельное программирование 2) - PDF, страница 7 (5743) - СтудИзба2015-08-23СтудИзба

Описание файла

Файл "Граф-схемное потоковое параллельное программирование" внутри архива находится в папке "Граф-схемное потоковое параллельное программирование 2". PDF-файл из архива "Граф-схемное потоковое параллельное программирование 2", который расположен в категории "". Всё это находится в предмете "параллельные системы и параллельные вычисления" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "параллельные системы и параллельные вычисления" в общих файлах.

Просмотр PDF-файла онлайн

Текст 7 страницы из PDF

Данная библиотека может далее использоваться для реализации любого модуляна этом языке программирования. Библиотека предоставляет программисту модулейфункции высокого уровня, такие как запись данных на конъюнктивную группу выходов,завершение процесса граф-схемы и т.д. Подобная стратегия (рис. 14) позволяетпрограммировать модули на разных языках программирования и даёт возможность выборанаиболее подходящего языка.Рис.

14. Взаимодействие процесса модуля с системойВзаимодействие между локальными компонентами системы управленияосуществляется при помощи протокола TCP/IP посредством передачи сообщенийопределённого формата. Каждое сообщение имеет имя и тело сообщения. При получениисообщения компонент системы Service Manager по имени сообщения определяет сервис,которому предназначено это сообщение и передаёт его найденному сервису, которыйвыполняет обработку данного события. Список сообщений, обрабатываемых сервисом,предоставляется системе самим сервисом. По такому же сценарию проходит взаимодействиесистемы с модулями и внешними системами. У каждого типа сообщений есть наборметаданных, который включает вид возможных отправителей для данного сообщения:локальный компонент системы, модуль или внешняя система.Функции системы по управлению выполнением граф-схем распределены междунесколькими сервисами.

Набор этих сервисов должен присутствовать на каждом узлекластера, участвующем в вычислениях. Список данных сервисов следующий:− сервис выполнения. Данный сервис отвечает за запуск граф-схем, управлениепроцессами, индуцируемыми при выполнении. Этот сервис осуществляет также всевзаимодействия между процессами модулей, получает запросы на выполнениефункций WRITE, READ, CHECK, KILL, OUT, KILL,− сервис управления буферами. Данный сервис реализует функции WRITE, READ,CHECK и OUT,− сервис планирования.

Осуществляет планирование выполнения граф-схемы, а именноопределяет узлы кластера, на которых будут выполняться процессы модулейДля того чтобы понять принципы взаимодействия данных сервисов, приведёмнесколько сценариев:Запуск граф-схемы: Пользователь инициирует команду запуска граф-схемы, котораяпередаётся на выполнение сервису выполнения.

Этот сервис создаёт контекст выполненияграф-схемы. Контекст содержит идентификатор контекста и имя граф-схемы. Контекстнеобходим для того, чтобы пользователь имел возможность выполнять несколько граф-схемв системе.Запись данных на висящие входы граф-схемы: Пользователь инициирует командузаписи данных на висящие входы граф-схемы, которая перенаправляется сервисувыполнения. Сервис выполнения определяет контекст выполнения и запрашивает у сервисапланирования узел кластера или компьютер, на котором должен располагаться буфер дляданного модуля.

На указанном узле или компьютере создаётся буфер и в него записываютсяданные. Данные действия выполняет сервис управления буферами на этом узле.Запись данных в буфер: При записи данных сервис управления буферами проверяетналичие в буфере готовых кортежей данных. Если в буфере есть кортеж, данный сервиссообщает об этом сервису управления. После получения уведомления от сервиса управления20буферами о наличии готового кортежа данных, сервис выполнения запрашивает у сервисапланирования компьютер, на котором должен выполняться процесс для этого набораданных.

Далее сети сервис выполнения запускает процесс модуля по соответствующейконъюнктивной группе входов.ЗаключениеВ настоящее время завершена разработка инструментальной среды и созданэкспериментальный вариант программных средств для параллельного выполнения накластерных системах.Этот экспериментальный вариант системы управления реализован на языкепрограммирования JAVA. Выбор языка Java обусловлен в первую очередь такимтребованием к системе, как поддержка различных операционных систем.

К плюсам данногоязыка программирования можно отнести поддержку параллельного программирования исинхронизации, а также простоту документирования системы. Минусом является то, чтопрограммы на языке Java работают медленнее, чем программы на таких языкахпрограммирования как C/C++.

В дальнейшем предполагается перепрограммированиекритических компонентов системы или всей системы на более “быстрых” языкахпрограммирования для нескольких популярных операционных систем, в частности дляплатформ Win32 и Unix/Linux.Отметим, что средства описания потоковых вычислений, реализованные в ЯГСПП,уже эффективно использовались для построения программного обеспечения распределенныхсистем: гибких автоматизированных систем [22], систем управления военными действиями идр. По-видимому, они могут оказаться также вполне конкурентоспособными при реализациираспределенных вычислений, представляемых в виде объектно-ориентированных программ.Для этого достаточно сравнить средства языка UML и ЯГСПП для описания параллельной ираспределенной обработки информации.Приложение 1. Примеры программ на ЯГСПП1. Использование пространственного параллелизмаПостроим ГСПП решения нелинейного уравнения xраций с заданной точностью ε и начальным приближением х0.ГС программы:= ae x + bx 3 − c x методом простых ите-GenDataГенерация исх.

данныхMult1Умножение a на exMult2Умножение b на x3CheckCondПроверка критерияокончания вычисленийOutputВывод результата21Mult3Умножение c на √xНа ГС модуль GenData задает значения x0 и ε и передает их на входы модуля CheckCond, а значения a,b, c на входы модулей Mult1, Mult2, Mult3 соответственно. Начальное значение x0 передается на входы модулейMult1, Mult2, Mult3, CheckCond. Модули Mult1, Mult2, Mult3 перемножают передаваемые им данные иотправляют результаты на входы модуля CheckCond, который в свою очередь вычисляет новое приближение,когда сравнивает его со старым и, в зависимости от результата сравнения, либо передает полученный результатна следующую итерацию, либо результат передается модулю Output.

В данном примере модули Mult1, Mult2,Mult3 являются информационно-независимыми и поэтому могут выполняться параллельно.Описание подпрограмм каждого модуля на языке C:Модуль GenData:void startup(){float data[5];int place[5] = {1,2,3,4,5};GenFloat(data[0],100);GenFloat(data[1],100);GenFloat(data[2],100);GenFloat(data[3],10);GenFloat(data[4],0.1);out(1,0,place,data);}void GenFloat(float &x,float p){x=(float)rand()/(float)RAND_MAX;x*=p;}Модуль Mult1:void Multiplication1(int tag,float x1,float x2){float data[2];data[0] = x1;data[1] = x1*exp(x2);//вычисление а * ехint place[2] = {1,2};out(1,0,place,data);}Модуль Mult2:void Multiplication2(int tag,float x1,float x2){float data[2];data[0] = x1;data[1] = x1*pow(x2,3); //вычисление b * х3int place[2] = {1,2};out(1,0,place,data);}Модуль Mult3:void Multiplication3(int tag,float x1,float x2){float data[2];data[0] = x1;data[1] = x1*pow(x2,0.5); //вычисление c * √xint place[2] = {1,2};out(1,0,place,data);}Модуль CheckCond:void Eval(int tag,float x1,float x2,float x3,float x4,float x5){float xnew,data1[2],data2[1];xnew = x2 + x3 - x4;//вычисление новой итерацииint place1[2] = {1,2},place2[1] = {1};if(fabs(xnew-x1)<x5)//проверяем критерий окончания{data1[0] = xnew; data1[1] = x5;out(1,0,place1,data1);22}else{data2[0] = xnew;out(2,0,place2,data2);}}void StartEval(int tag,float x1){int place[1] = {1};float data[1];data[0] = x1;out(1,0,place,data);}Модуль Output:void PrintRes(int tag,float x1){printf(“Корень уравнения равен %d”,x1)}2.

Использование параллелизма SIMD – применения одной программы кмножеству различных данныхПустьтребуетсяорганизоватьодновременноерешениемножествауравненийx = a i e + bi x − c i x (i=1,..,n) методом простых итераций с заданной точностью ε и начальнымx3приближением х0.Графическое и текстовое представления ГС в данном случае аналогично соответствующимпредставлениям в примере 1.Т.к.

в данном примере необходимо осуществить одновременное решение множества уравнений,воспользуемся механизмом тегирования данных. Для однозначной идентификации наборов данных будемсопоставлять с каждым набором уникальный тег, который будет «приклеен» к “порождаемым” в процессевычислений данным. При межмодульном взаимодействии в процессе выполнения ГСПП, тег передается вместес набором данных, который он идентифицирует.Рассмотрим, как изменится описание подпрограмм каждого модуля, описываемых на языке C:Модуль GenData:void startup(){float data[5];int place[5] = {1,2,3,4,5};//GenFloat – генерирует случайное вещественное число в промежутке от 1 до NGenFloat(data[0],100);GenFloat(data[1],100);GenFloat(data[2],100);GenFloat(data[3],10);GenFloat(data[4],0.1);int TAG = GenTag(); //Генерируем новый уникальный тегout(1,TAG,place,data); //Связываем тег с данными и передаем их на выход КГВых модуля}void GenFloat(float &x,float p){x=(float)rand()/(float)RAND_MAX;x*=p;}Модуль Mult1:void Multiplication1(int tag,float x1,float x2){float data[2];data[0] = x1;data[1] = x1*exp(x2);//вычисление а * ехint place[2] = {1,2};out(1,tag,place,data);//Выходные данные передаем с тем же тегом, с которым были получены входные данные23}Модуль Mult2:void Multiplication2(int tag,float x1,float x2){float data[2];data[0] = x1;data[1] = x1*pow(x2,3); //вычисление b * х3int place[2] = {1,2};out(1,tag,place,data); //Выходные данные передаем с тем же тегом, с которым были получены входные данные}Модуль Mult3:void Multiplication3(int tag,float x1,float x2){float data[2];data[0] = x1;data[1] = x1*pow(x2,0.5); //вычисление c * √xint place[2] = {1,2};out(1,tag,place,data); //Выходные данные передаем с тем же тегом, с которым были получены входные данные}Модуль CheckCond:void Eval(int tag,float x1,float x2,float x3,float x4,float x5){float xnew,data1[2],data2[1];xnew = x2 + x3 - x4;//вычисление новой итерацииint place1[2] = {1,2},place2[1] = {1};if(fabs(xnew-x1)<x5)//проверяем критерий окончания{data1[0] = xnew; data1[1] = x5;out(1,tag,place1,data1); //Выходные данные передаем с тем же тегом, с которым были получены входныеданные}else{data2[0] = xnew;out(2,tag,place2,data2); //Выходные данные передаем с тем же тегом, с которым были получены входныеданные}}void StartEval(int tag,float x1){int place[1] = {1};float data[1];data[0] = x1;out(1,tag,place,data); //Выходные данные передаем с тем же тегом, с которым были получены входные данные}Модуль Output:void PrintRes(int tag,float x1){printf(“Корень уравнения равен %d”,x1)}3.

Использование потокового параллелизмаСледующий пример иллюстрирует использование потокового параллелизма в задаче нахожденияNскалярного произведения двух N-мерных векторов (т.е. вычисления∑a bi =1i i). Предполагается, что в модулеGenN осуществляется задание значения N, которое передается на входы модулей GenA, GenB и Sum. МодулиGenA и GenB генерируют значения ai и bi (i=1,..,n) соответственно, которые последовательно (асинхронно)передаются на входы модуля MultAB.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5288
Авторов
на СтудИзбе
417
Средний доход
с одного платного файла
Обучение Подробнее