Главная » Просмотр файлов » paralllel_data_processing

paralllel_data_processing (811086), страница 11

Файл №811086 paralllel_data_processing (paralllel_data_processing) 11 страницаparalllel_data_processing (811086) страница 112020-08-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 11)

Данные типа TASKID используются в операторах передачи/приема со­общений - SEND и RECEIVE для задания абонентов - получателя или отпра­вителя . Такие данные могут также передаваться в качестве параметров процедурам и функциям, а также могут быть переданы другим процессам с помощью операторов передачи сообщений.

Значения типа TASKID не могут использоваться в списках ввода-вы­вода, так как не имеют внешнего представления.

Начальная инициализация переменных этого типа также, как и других переменных Фортрана, не предусматривается, поэтому использование дан­ных до присваивания им значений некорректно. Присвоение начальных зна­чений зтим данным в операторах DATA не предусмотрено.

Спецификация данных типа TASKID в виде массива, структура которого совпадает с конфигурацией вычислительной системы, облегчает программи­рование задачи, например, может унифицировать операторы передачи дан­ных между соседними процессами. В языке есть возможность заданием идентификатора массива данных типа TASKID указать массовую операцию для всех его элементов: в функциях порождения процессов,редукции и операциях передачи сообщений. Такая запись может ускорить выполнение программы, так как такие массовые операции могут выполняться парал­лельно.

Для задания массовых операций над частью массива - подмассива можно присвоить подмассиву имя оператором EQUIVALENCE, динамическое формирование структур подмассивов можно производить операторами языка Фортран МВК. Например:

TASKID T1(100),T2(100),TM

DIMENSION TM(100,2)

EQUIVALENCE (TM(1,1),T1(1)),(TM(1,2),T2(1))

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

Задачи и процессы

В языке вводится дополнительный вид программных единиц - прог­раммные единицы-задачи. Программа может содержать (помимо традиционных для Фортрана программных единиц) одну или более программных единиц-за­дач.

Главная программная единица (main program) определяет главный и единственный - начальной процесс программы. Эта единица может иметь за­головок:

PROGRAM n, где n - имя программы.

По Фортрану, заголовок программы может отсутствовать.

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

При запуске начального процесса ему присваивается другое имя - системный идентификатор, по которому на него могут ссылаться другие процессы программы при передаче сообщений или при выполнении функций редукции. Это имя может быть получено любым процессом при помощи встроенной функцией MASTER без параметров. Результат функции имеет тип TASKID.

Программная единица-задача являются описанием задачи. Вычисли­тельные процессы создаются по описанию задачи динамически и во время создания им присваиваются уникальные имена - системные идентификаторы. По одному описанию задачи может быть образовано произвольное число процессов данного класса.

Первым оператором программной единицы-задачи является оператор заголовка, имеющий вид: TASK PROGRAM n, где n - имя программной едини­цы-задачи.

В остальном, структура программной единицы-задачи не отличается от структуры главной программной единицы Фортрана 77. В частности, последним оператором, как обычно, является оператор END.

Задачи не могут иметь общей памяти с другими задачами, в частнос­ти, с главной, поэтому общие блоки (COMMON-блоки) задач локальны в пределах каждой задачи и программных единицах, которые в ней использу­ются. Семантика COMMON-блоков в пределах одной задачи - традиционная.

Создание процессов.

Для создания процессов в динамической модели параллелизма исполь­зуется стандартная функция NEWTASK. Обращение к этой функции произво­дится операторами присваивания вида:

it = NEWTASK (n, ia) , где

n - имя программной единицы-задачи;

ia - константа, имя переменной, элемента массива или массива цело­го типа; значения этого параметра определяют виртуальные но­мера вычислителей, на которых создаются порождаемые процессы.

it - имя переменной, элемента массива или массива типа TASKID, ку­да заносятся имена (системные идентификаторы) порожденных процессов.

Функция NEWTASK создает по описанию задачи с именем n вычислитель­ные процессы, количество которых определяется числом виртуальных номе­ров вычислителей. Это число равно количеству элементов массива пара­метра ia или равно одному для скалярного параметра.

Результатом выполнения функции NEWTASK является имя процесса или массив имен (системных идентификаторов) созданных процессов. Эти имена присваиваются переменным it.

Если n не совпадает с именем программной единицы-задачи, по кото­рой образован текущий процесс, то оно должно быть описано. По аналогии с оператором EXTERNAL, для описания имен внешних задач вводится опера­тор спецификации TASK EXTERNAL, имеющий вид:

TASK EXTERNAL n [, ni ]... где

n, ni - имена программных единиц-задач.

Имена, указанные в списке этого оператора, разрешается использо­вать в качестве фактических параметров процедур (в том числе в качест­ве параметров функций NNAME и NEWTASK) и в качестве адресатов в опера­торе SEND. Если в качестве таковых параметров используется имя текущей единицы - задачи, то оно также должно быть описано как внешнее. Таким образом, передать сообщение процессу можно, идентифицируя его именем программной единицы-задачи, по которой он был образован (по имени класса), или по системному имени. Оператор TASK EXTERNAL должен быть размещен в программе-задаче до первого исполняемого оператора. Имена (системные идентификаторы) процессов не имеют внешнего представления, они скрыты от пользователя, их можно присваивать пере­менным типа TASKID. Процесс может определить собственное имя, имя про­цесса, породившего его, и имя главного процесса программы с помощью стандартных функций MYTASKID, РАRENT и МАSTER. Определение имен про­цессов по номерам виртуальных процессоров приведено в п. 7.

Созданные процессы загружаются и сразу начинают выполняться на процессорах, виртуальные (логические) номера которых заданы значениями параметра ia. Допускается использование одинаковых логических номеров для размещения процессов на одном виртуальном процессоре (для стати­ческой модели параллелизма это не так !).

Конкретное отображение виртуальных номеров процессоров на процес­соры рабочей машины, способ загрузки процессов определяется реализаци­ей, например, конструкциями языка описания конфигурации (аналогично тому, как номера каналов ввода-вывода в стандартах Фортрана не закреп­лены, а определяются реализацией, в частности, языком управления зада­ниями). Процедура создания главного процесса программы и порядок его размещения на процессоре также определяется реализацией.

При реализации статической модели параллелизма распределение про­цессов по процессорам производиться статически, на этапе подготовки задания. В этом случае, функции NEWTASK в программе отсутствуют и про­цессы запускаются при инициализации задачи. В статическом варианте имена процессов (системные идентификаторы) определяются с помощью функции GETTASKID, имеются еще ряд стандартных функций для работы в этом режиме (см. 7.).

Примеры использования функций порождения процессов

Операторы порождения будут иметь окружение программы-задачи С.

TASK PROGRAM C

TASK EXTERNAL A,B,READ,PRINT

TASKID TI, TM(100),TM2(100,2)

INTEGER K,KM(100),KM2(100,2)

.............

END

Инициализация процессов: 1 TI = NEWTASK(A,K)

2 TМ = NEWTASK(A,KМ)

3 TМ2 = NEWTASK(A,KМ2)

DO 4 I=1,100

4 TМ(I) = NEWTASK(A,KМ(I))

DO 5 I=1,100

TМ2(I,1) = NEWTASK(A,KМ2(I,1))

5 TМ2(I,2) = NEWTASK(B,KМ2(I,2))

Операторы с метками 2 и 4 (3 и 5) производят одинаковые действия, но инициализация в форме 2 (3) предпочтительнее, так как эта запись позволяет производить инициализацию процессов параллельно.

Отсутствие в Фортране 77 аппарата вырезок из массивов не позволяет иметь такую запись для алгоритмов:

DO 6 I=1,99,2

TМ(I) = NEWTASK(A,KМ(I))

6 TМ(I+1) = NEWTASK(В,KМ(I+1))

или

TМ(1) = NEWTASK(READ,KМ(1))

TМ(100) = NEWTASK(PRINT,KМ(100))

DO 7 I=2,99

7 TМ(I) = NEWTASK(В,KМ(I))

В результате выполнения операторов: TI = NEWTASK(PRINT,1) 8 TI = NEWTASK(READ,2))

на виртуальном процессоре с номером 1 будет образован и запущен про­цесс PRINT, внутреннее имя которого потеряно и недоступно программе из-за выполнения оператора 8.Доступ к нему для передачи сообщений воз­можен только по программному имени, заказать от него прием сообщений невозможно. C процессом на втором процессоре возможен обмен сообщения­ми в обе стороны.

В языке определена только одна синтаксическая конструкция исполь­зования функции NEWTASK - в операторе присваивания. Тем не менее вход­ные языки могут разрешать использование этой функции и в других кон­текстах, там, где употребляются переменные типа TASKID. Например, опе­ратор:

SEND (NEWTASK(PRINT,MI)) RES породив процесс печати, передает ему данные через RES.

Виртуальные номера процессоров.

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

Одинаковые номера процессоров могут быть использованы для опти­мального распределения ресурсов путем выравнивания времени работы про­цессов. Определив время работы (число операций) самого время-емкого процесса, можно объединять на одном процессоре выполнение нескольких других процессов, если их суммарное время меньше.При этом можно уско­рить выполнение программы из-за упрощения коммуникаций между процесса­ми, выполняемых на одном процессоре.

Виртуальные номера процессоров могут быть использованы для наст­ройки решающего поля. Параллельные алгоритмы, формулируемые в теорети­ческой постановке обычно как n-размерные, при программировании приво­дятся к параметрам реальной структуры решающего поля. Алгоритмы, реа­лизуемые как стандартные процедуры, также должны адаптироваться к структуре выделяемых ресурсов. Настройка структуры (под) программ под параметры вычислительной среды может управляться заданием номеров вир­туальных вычислителей.

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

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

  1. Средства передачи и приема сообщений в языке Фортран-GNS.

Обмен информацией между процессами осуществляется с помощью пе­редачи сообщений. Для этого используются операторы:

SEND - послать сообщение и RECEIVE - принять сообщение.

Предусмотрено три способа передачи сообщений: синхронный, асинх­ронный и передача без ожидания.

Синхронный способ

При синхронном способе передачи сообщений посылающий и принимаю­щий процессы приостанавливают выполнение своих программ и переходят в состояние ожидания до тех пор, пока не выполнятся оба синхронных опе­ратора SEND и RECEIVE.

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

Процесс может посылать синхронные сообщения как отдельному про­цессу, так и группе процессов. В последнем случае процесс отправи­тель продолжит выполнение только после получения подтверждения о вы­полнении соответствующих операторов RECEIVE во всех процессах - полу­чателях. Получив сообщение, получатель группового синхронного сообще­ния может продолжить работу, не ожидая завершения всех остальных обме­нов по данному оператору SEND. Получатель синхронного сообщения может ждать его только от процесса, имя которого указано в параметре опера­тора RECEIVE, т.е нельзя заказать в одном операторе ожидание синхрон­ных сообщений от нескольких процессов.

Асинхронный способ

При асинхронном способе передачи сообщения посылающий процесс продолжает выполнение независимо от того, выполнил ли получающий про­цесс оператор RECEIVE или нет.

Сразу же после выполнения оператора SEND процесс может изменить значения данных, перечисленных в списке передаваемых значений этого оператора, однако абоненту передаются те значения, которые были на мо­мент выполнения оператора SEND.

Выполнение асинхронного оператора RECEIVE и продолжение работы процесса - получателя производиться только после поступления сообще­ния. Если сообщение пришло к получателю до выполнения у него оператора RECEIVE, то сообщение помещается в почтовый ящик процесса без прерыва­ния его выполнения. Сообщения с одинаковым значением тега от одного и того же отправителя помещаются в почтовом ящике в том же порядке, как они посылались и в таком же порядке они будут выбраны операторами RE­CEIVE.

Сообщения, передаваемые асинхронным способом, идентифицируются именами отправителя и тегами (положительными значениями целого типа). Имя отправителя можно опускать в процессе - получателе, т.е. можно за­казывать ожидание сообщений этого типа (с заданным тегом) от произ­вольного процесса. В этом случае отправителя можно идентифицировать при получения сообщения при помощи параметра SENDER в операторе RECEI­VE.

Стандартные функции TESTMSG, TESTTAG, PROBE позволяют анализиро­вать наличие сообщений, значения тегов и имен отправителей асинхронных сообщений в почтовом ящике процесса и, соответственно, управлять по­рядком выбора поступивших сообщений.

Для организации селекции и установки режимов ожидания заданных асинхронных сообщений можно использовать также конструкции выбора (см. раздел 5.).

Передача без ожидания

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

Характеристики

Тип файла
Документ
Размер
925,5 Kb
Высшее учебное заведение

Список файлов ответов (шпаргалок)

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