Главная » Просмотр файлов » В.Д. Корнеев - Параллельное программирование в MPI

В.Д. Корнеев - Параллельное программирование в MPI (1162616), страница 34

Файл №1162616 В.Д. Корнеев - Параллельное программирование в MPI (В.Д. Корнеев - Параллельное программирование в MPI) 34 страницаВ.Д. Корнеев - Параллельное программирование в MPI (1162616) страница 342019-09-20СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

знйссЬ(гапй) ( сазе О: МР1 Всазс(Ьиг'1, соипс, суре, О, соппп); МР1 Яепб(Ьи12, соипс, суре, 1, саЯ, сопка); Ьгеа)г; сазе 1: МР1 Веси(Ьи12, соипс, суре, О, саи, совв); МР1 ВсазС(Ьи11, соипС, Суре, О, савв); Ьгеа1с; Нулевой процесс выполняет МР1 ВсазсЦ, сопровождаемый блокированной операцней передачи МР1 Яепб(). Процесс 1 первым выполняет блокированную операцию приема МР1Лесч Ц, что соответствует МР1 Всазс() нулевого процесса. Эта программа зайдет н тупик. МР1 Всазс() нулевого процесса может блокировать первый процесс, который выполнит соответствуюший МР1 Всазс(), так что МР1 Яепп() не будет выполнен.

Относительный порядок выполнения коллективных и ро)пй-Со-ро)пС операций должен быть такой, чтобы даже они были синхронизованы и никакая блокировка не встречалась, Пример 6.26. Правильная, но недетерминированная программа. зн1СсЬ(гани) саве О: МР1 Всазс(Ьи11, соипс, суре, О, совв); МР1 Яепо(Ьиг2, соипс, суре, 1, саи, совв); Ьгеак; сазе 1: МР1 Веси(Ьи12, соипс, суре, МР1 АМУ ЯОУВСЕ, саи, сопка); допустим, что группа соввΠ— (0,1), соппп1 — (1,2) и соппп2 — (2,0). Если МР1 Всазс() — синхронизированный оператор, то имеется циклическая зависимость: МР1 Всазс() и совв2 заканчивает только после МР1 Всазс() в соввО; МР1 ВсазС() в сопппΠ— только после МР1 ВсазС() в совв1 н МР1 ВсазС() в совв1 — только после МР1 ВсазС() в совв2. Таким образом, программа зайдет в тупик. Коллективные операции должны быть выполнены в таком порядке, чтобы никакие циклические зависимости не встречались.

б.1о. Се,кантика коллективной связи 131 МР1 Осана(Ьц11, соппс, суре, О, сопи); МР1 Веси(Ьц12, соцпт, суре, МР1 АМУ БООВСЕ, гак, сопел); Ьгеак; саве 2; МР1 Яепо(Ьп12, соппс, суре, 1, сац, сопел); МР1 ВсавС(Ьц11, соцпп, Суре, О, сопел); Ьгеак; Все три процесса выполняют МР1 Всавс(). Процесс О посылает сообщение к процес.у 1, после выполнения МР1 Всавс(), и процесс 2 посылает сообщение процессу 1 перед 1Р1 Всавс(). Процесс 1 прежде получает с аргументом любого источника и после выполняет МР1 Всавс(). Возможны два выполнения этой программы с различными передачей и получением, это иллюстрируются ниже на рис. 6.13, Заметьте, что второе выполнение имеет особый эффект, ~ерепача выполнена после того, как мР1 Всавп() получен в другом узле перед мР1 Всавп().

)тот пример поясняет тот факт, что нельзя положиться на коллективные функции связи, ~мея частный эффект синхронизации, И в заключение, в многоподпроцессных выполнениях может быть больше, чем одна, >дновременно выполняющаяся коллективная связь. В этих случаях ответственность польювателя — гарантировать, что тот же самый переключатель каналов не используется одювременно двумя различными коллективными связями. Предположим, что выполняется МР1 Всавс(), используя роЫ-1о-ро)пФ операции. Предюложим, выполняются следующие два правила.

1. Все приемы определяют их источник явно (нет никаких групповых символов). 2. Каждый процесс посылает все сообщения, которые относятся к одному коллективному запросу перед посылкой любого сообщения, который относится к последующему коллективному запросу. Тогда сообщения, принадлежащие последовательным МР1 Всавс(), не могут быть перепутаны, поскольку сохранен порядок ро)п1-1о-ро)п1 операций.

Гарантия, что ро)пь-Ьо-ро!п1 операции не перепутаны с коллективными сообшениями— ~то ответственность пользователя. Один из способов избежать этого — создание отдельного ~ереключателя каналов для коллективной связи. Первое выполнение Процесс: о гесч вела Ьгоайсаве Ьгвайсаве Ьгвайсаве вела гесч Второе выполнение Ьгоайсавп вела гесч Ьгваасвве гвсч вела Ьгоаасаве Рис. 6.13. Два выполнения программы с различными передачей н получением. Стрелками указаны напетермнннрованные соответствия передач н приемов. Нельзя полагаться на синхронизации нз Ьгоас)сввФ, чтобы делать детерминированную программу 7.

Определяемые пользователем типы данных и упаковка данных 7.1. Введение Коммуникационные механизмы МР1, представленные в предыдущей главе, допускают посылку или получение последовательности идентичных элементов, которые являются смежными в памяти. Часто желательно посылать данные, которые неоднородны, типа структуры или (если это не смежные в памяти элементы) типа секции массива.

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

Конструирование и использование производного типа описано в пп, 7.2-7.7. Использование упаковываюшей и распаковывающей функций описано в и. 7.8. Часто возможно достичь той же самой передачи данных, используя любой из этих механизмов. Обсуждение всех "за" и "против" каждого подхода, в конце этой главы. 7.2. Введение к определяемому пользователем типу данных Все МР1-функции связи имеют аргумент дасасуре (тип данных). В самом простом случае это примитивный тип, например, целый (хпс) или с плавающей запятой (11оас) я т.д.

МР1 приложения позволяют определяемый пользователем (или "производный" ) тип писать везде, где примитивные типы могут встречаться. Они — не "типы" в смысле языка программирования. Они — только "типы", которые МР1 делает с помощью функций стро. ителей типов, описывающих расположение в памяти наборов примитивных типов. Через определяемые пользователем типы МР1 поддерживает обмен комплексмыми структурами данных, например, секциями массивов и структур, содержащих комбинации примитивных типов данных. Пример 7.1 показывает, как определяемый пользователем тип данных используется при посылке верхней триангуляции матрицы. На рис.

7.1 показана диаграмма расположения в памяти определяемого пользователем типа данных. Пример 7.1. Фрагмент программы, которая передает верхнюю триангуляпию матрицы аолЫе а~1001(1003, бхврГ1001, Ыоск1епН003, х, МР1 Расасуре иррег, /«Вычисление начала и размера каклой строки матрицы (начиная от диагонали) «/ хог(х=0, х<100, ++х) ( бхврЫ = 100«х+х, Ыоск1елЫ = 100-х, 1 /« Создание типа для верхней триангуляции матрицы «/ МР1 Туре хпбехеб(100, Ыоск1еп, бхвр, МР1 ВОВВЬЕ, виррег), МР1 Туре сопвпхс(виррег), /« и его передача «/ МР1 Яепб(а, 1, баррет, бевс, хай, МР1 СОММ МОВЫ), Производный тнп данных построен из основного типа данных с использованием строителей типов, описанных в и. 7.3.

Строители могут применяться рекурсивно. У.й. Введение н определяемому пользователем типу данных 133 сопвеспвевв аеахевв 10110) 10)111 10) 1г166666666666666666666666 Ш1П [П1г)66666666666666666666666 1г)1г)66666666666666666666666 66666666666666666666666 Рис. 7.1. Диаграмма ячеек памяти, представляющих определяемый пользователем тип данных цррег. Заштрихованные ячейки — элементы матрицы, которые будут посланы Производный тип данных — непрозрачный объект, который определяет два предмета: — последовательность примитивных типов и — последовательность целого числа смещений (в количестве байт) значений этих типов от начального адреса. Не требуется, чтобы смещения были положительными, различными илн в увеличивающемся порядке. Следовательно, порядок значений типов в списке производного типа не обязательно должен совпадать с нх порядком в памяти, и значения типов могут появляться в списке больше, чем один раз.

Такая пара последовательностей (нли последовательность пар) называется отображением глина. Последовательность примитивных типов данных (смещения игнорируются) называется сигнатурой типа данных. Предположим, Туревар = ((сурев,агвре),"., (суреп г,оуврп г)), — такое отображение типа, где сурег — примитивные типы и г)1врг — смещения значений этих типов относительно базового алреса, Предположим, Туревгй = (сурее - суреп-1), — соответствующая сигнатура типа. Это отображение типа вместе с базовым адресом ЬпТ определяет коммуникационный буфер, который состоит из и элементов, где 1-й элемент стоит по адресу ЬцХ+Жвря и имеет тип сурег.

Сообщение, собранное из отдельных типов, будет состоять из и значений типов, определенных Турев1я. Имя производного типа может появляться как аргумент в посылающей или получающей функции вместо аргумента примитивного типа, Функция ИР1.5ЕИ0(Ьп~,1,6асасуре,... ) использует адрес посылаемого буфера как базовый адрес ЬцХ производного типа данных, и тип посылаемых данных как производный тип, соответствующий басасуре. Она генерирует сообщение с сигнатурой типа, определенной аргументом басасуре.

Функция ИР1ЯЕСЧ(ЬпТ, 1, г)асасуре, . ) использует адрес буфера приема как базовый адрес ЬпХ производного типа и тип принимаемых данных как производный тип, ссютветствуюший 3асасуре, Производные типы данных могут использоваться во всех посылаюгцих и принимающих функциях, включал коллективные функции (см. гл. 6), В и. 7.4.3 обсуждается случай, где второй индекс аргумента в обменных функциях имеет значение > 1. Примитивный тип данных, представленный в п. 5.2.2, — частный случай производного типа данных и предопределен. Таким обрезом, ИР1 1ИТ вЂ” предопределенный заголовок к типу данных с отображением типа ((гпс, 0) ), с одним элементом типа хпс и нулевым смещением этого элемента относительно базового адреса. Другие примитивные типы данных определены аналогично. Диапазон (ехсепс) типа данных определен, как поле памяти от 184 7. Ояределяемые пользователем ньанм данных и онаноена данных первого байта до последнего байта, заполненного элементами этого типа данных, округпкемыми в большую сторону, чтобы удовлетворить требования к точности совмещения, т.е, если ТурЕвар = ((СурЕЕ, 61эре), ..., (СурЕа 1, баира 1)), ГдЕ 1Ь(Туревар) = вап)бквр1, пЪ(Турешар) = шах.

(8 кар + вкиеот(Суре )) + е, ехсепс(Туревар) = иЬ(Туревар) — 1Ь(Туревар). где )=О „,п-1, 1Ь вЂ” нижняя и иЬ вЂ” верхняя границы типа. Если Суреа требует выравппвания к адресу байта, который является кратным Ка байт, то е — наименее неотрипатель ное приращение, необходимое для округления ехсепс(Туревар) к следующему кратному шах,К1. (Определение диапазона расширено в и. 7.6.) Пример 7.2. Предположим, что Туре=((бопЫе,О), (спаг,8)) (боцЫе — со смещением ноль, сЬаг со смещением восемь). Предположим, кроме того, что вещественные величины (бопЫе) должны строго выравниваться по адресам, кратным восьми байтам. Тогда 1Ь(Туре) шкп баир) — — О, пЬ(Туре) = шах)(бквр1+ экхеоу(суре))) + е = (8+ 1+ 7) = 16, и диапазон этого типа равен 16 (8 байт (бопЫе) + 1 байт (сйаг) = 9, которая округляется к следующему кратному 8, т.е.

16), Отображение этого типа проиллюстрировано ниже на рис. 7.2. бачите ьпе 8 байт 1 байт е 7 байт Рис. 7.2. Отображение типа Туре=((боиЫе,0), (спас,8)) Замечание. Округляющий терм е, который появляется в формировании верхней границы типа, должен облегчить формирование типов данных, соответствующих массивам струк. тур. Диапазон типов определен, чтобы описать структуру диапазона памяти, которую компилятор будет распределять для структур в массиве структур. Волее явный контроль диапазона описан в и. 7.6. Такой явный контроль необходим в случаях, например, где компилятор предлагает различные выборы выравнивания дм структур.

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

Тип файла
DJVU-файл
Размер
5,85 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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