Главная » Просмотр файлов » Ответы 190 страниц

Ответы 190 страниц (1184228), страница 30

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

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

Создать интерфейс прикладного программирования для МРР систем;

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

Допускать удобное сопряжение с языками C, Fortran 77, Fortran 90 и C++;

Простой способ создания процессов для модели SPMD (одна программа используется для обработки разных данных на разных процессорах);

Основные понятия языка

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

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

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

Имеются предопределенные коммуникаторы (точнее, создавае­мые при инициализации MPI-системы): * MPI_COMM_ALL - все процессы и операции над группами (локальные, без обмена сообщениями), например, Дай размер группы. MPI_GROUP_SIZE(IN group, OUT size) Дай номер в группе обратившегося процесса. MPI_GROUP_RANK(IN group, OUT rank)

Основные операции - send, receive

Операции могут быть блокирующими и неблокирующими.

В операции send задается:

- адрес буфера в памяти;

- количество посылаемых элементов;

- тип данных каждого элемента;

- номер процесса-адресата в его группе;

- тег сообщения;

- коммуникатор.

MPI_SEND(IN start, IN count, IN datatype, IN dest, IN tag, IN comm) Типы данных - свои в MPI, но имеется соответствие между ними и типами Fortran и С.

В операции receive задается:

- адрес буфера в памяти;

- количество принимаемых элементов;

- тип данных каждого элемента;

- номер процесса-отправителя в его группе;

- тег сообщения;

- коммуникатор;

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

Имеется возможность указать "любой отправитель" и "любой тег".

Имеется три режима коммуникаций - стандартный, режим готовности и синхронный.

В стандартном режиме последовательность выдачи операций send и receive произвольна, операция send завершается тогда, когда сообщение изъято из буфера и он уже может использоваться процессом.

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

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

Средства описания и создания процессов в языке Фортран-GNS.

Тип данных – TASKID

По семантике языка Fortran GNS все процессы программы получают уникальные имена - системные идентификаторы, по которым производится отождествление корреспондентов при обмене сообщениями между процессами и в терминах которых задается среда выполнения функций редукции. Эти имена вырабатываются функцией порождения процессов - встроенной функ­цией языка NEWTASK. Структура системного идентификатора определяется реализацией, это имя не имеет внешнего представления.

Для манипулирования именами процессов внутри программы в язык Fortran GNS вводится новый для Фортрана тип данных - тип TASKID. Зна­чения этого типа представляют собой имена процессов, которые вырабаты­ваются функцией порождения процессов.

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

Добавляется константа .NOTASKID., которая представляет собой "ну­левое" значение для объектов этого типа. Данные типа TASKID должны быть описаны в операторе TASKID, син­таксис которого аналогичен синтаксису операторов объявления типа в Фортране 77. Данные этого типа могут использоваться в операторах EQUI­VALENCE, но при этом могут быть эквивалентными только данным типа TASKID. Допускается использование TASKID в качестве описателя типа подп­рограммы-функции.

Использование переменных данного типа в операторах СOMMON огова­ривается в инструкциях по использованию языка на конкретных установ­ках, в них же приводятся размеры имени процесса для расчетов длин об­щих блоков. В реализации на базе Фортран МВК [3] допускается использо­вание данных типа TASKID в общих блоках, их длина - одно слово (как у данных типа INTEGER).

Для данных типа TASKID определены следующие операции: операции .EQ. , .NE. и присваивание (когда операнды операций,левая и правая части операторов присваивания имеют тип TASKID).

Данные типа 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))

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

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

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

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

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

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

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

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

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

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

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

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

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

Для создания процессов в динамической модели параллелизма исполь­зуется стандартная функция 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)

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

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

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

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

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