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

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

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

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

< И, д++) ( аког() = О, ) < М, )++) ( А[д][)] = 3 141528 В[)3[д) = 2 812, С[дз [)1 = О О, ) /х Засекаем начало умножения матриц х/ Ееспдшео1е)ъу(йсч1, (зсгцсс сдшекопех)О), /х Каждая ветвь производит умножение своих полос матриц х/ /х Самый внешний цикл Хог(К) — цикл по компьютераи х/ аког(К = О, К < здхе, К++) /х Каждая ветвь вычисляет координаты (вдоль строки) для результируюших » злементов матрицы С, которые зависят от нонера цикла К и х ранга компьютера х/ б = ((гапК + К)увдке)»М, /х Каждая ветвь производит умножение своей полосы матрицы А на х текушую полосу натрипы В х/ Хог() = О, ) с М, )++) ( аког(дд = О, )1 = б, )1 С й+М, )1++, дд++) ( аког(д = О, д < М, д++) С[)3 [) 11 +и А[)3 Ы х ВЫ [д13, /х Унножение полосы строк матрицы А на полосу столбцов матрицы В в каждой х ветви завершено х/ /* Каждая ветвь передает своим соседним ветвям с меньшим рангом * вертикальные полосы матрицы В Т е полосы матрицы В сдвигаются вдоль х кольца компьютеров х/ МР1 Беппгесч гер1асе(В, Е1(В), МР1 ПООВЕЕ, бевс, 12, нопг, 12, сопле сагс, йвс), 180 9.

Примеры параллельных программ /» Умножение завершено Каждая ветвь умножила свою полосу строк матрицы А на » все полосы столбцов матрицы В » Засекаем время и результат печатаем »/ Вессдшеотбау(йсч2, (всгпсс Фдшекопе»)О), бтд = (та2 Сч вес — Счд Сч вес) » 1000000 + Сч2 Сч овес — тчд тч пвес, ргдптт(ьгапк = Уб Тдше = /б'дп", гапй, бт1), /» Пля контроля печатаем первые четыре элемента первой строки результата »/ дХ(гапй == О) ( Хог(д = О, д < 1, д++) бог() = О, д < 4, б++) ргдптТ(»СЫ()3 = /Йп", СЫ [)1), /» Все ветви завершают системные процессы, связанные с топологией сошш сагс » и завершаю выполнение программы »/ ИР1 Сошш аггее(йсошш сагс), МР1 Едпа1дхе(), геспгп(0), 9.2.2.

Произведение двух матриц в топологии "двумерная решпета" В этом примере исходные н результируюшая матрицы разрезаются в нулевой ветви и затем части матриц рассылаются во все другяе ветви. Схемы распределения данных по компьютерам приведены в и. 2.2.2. /» Произведение двух матриц в топологии "двумерная решетка" компьютеров »/ /» В примере предполагается, что количество строк матрицы А и количество » столбцов матрицы В делятся без остатка на кокичество компьютеров в системе » В данном примере задачу запускаем на 4-х компьютерах и на решетке 2х2 »/ №дпс1ибе<втбдо Ь> №дпс1ибе<втб1дЬ Ь> №дпс1ибе<шрд Ь> №дпс1ибе<сдше Ь> №дпс1пбе<вув/сдше Ь> /» ИПМ 01МБ — размер декартовой топологии "двумерная решетка" РОхР1 */ №бетдпе МОИ 01ИЯ 2 №бетдпе РО 2 №бе1дпе Р1 2 /» Задаем размеры матриц А = Ихй, В = ИхК и С = МхК (Эти размеры значимы в » ветви О) »/ №беХдпе М 8 №беддпе И 8 №бетдпе К 8 №бед'дпе А(д,)) Аьй»д+)3 №беддпе В(д,1) ВЕК»д+13 №бейдпе С(д,1) СЕК»д+~] /» Подпрограмма, осушествпяюшая перемножение матриц »/ РМАТМАТ 2(п, А, В, С, р, сошш) /» Аргументы А, В, С, и„ р значимы в данном случае только в ветви 0 »/ р.е.

Произведение двух матриц 181 /» Размеры исходных матрип х/ /« Исхолные катрины: А[и[0]][и[1]], В[и [1]] [и[2]], С[и[0]] [п[2]]; х/ 1пт »и; е)опЫе *А; хВ, хС; /х Лалее все описываемые перененные значимы во всех ветвях, в том числе * и ветви 0 х/ бопЫе »АА, »ВВ, »СС; /» Локальные полматрипы (доносы) х/ 1пп пп[2]; /х Размеры полос в А и В и подматрип СС в С «/ 1пс соогбя[2]; /» Лекартовы координаты ветвей »/ 1пс гапк; /х Ранг ветвей х/ /» Смешения и размер полматрил СС лля сборки в корневом пропессе (ветви) х/ 1пъ »соппсс, хбйзрс, »соппСЬ, хбйярЬ; /х Типы ланных и массивы лля создаваемых типов »/ МР1 Оаъасуре пуреЬ, сурес, сурен[2]; 1пп Ыеп [2]; 1пп1,],к; 1пс регйобз[2], гешайпз[2]; 1пс з1хеоте)опЫе, б1зр[2], /х Комнуникаторы лля 2Р решетки, для полрешеток 1Р, и копии х/ /» коммуникатора сопел х/ МР1 Сопел сошш 20, сопел 10[2], рсошш; /х Создаем новый коммуникатор »/ МРХ Сошш бпр(сопвп, ерсошш); /» Нулевая ветвь передает всем ветвям массивы и[] и РП х/ МР1 Всазт(п, 3, МР1 1МТ, О, рсошш); МР1 Всаят(р, 2, МР1 1МТ, О, рсошш); /» Создаен 20 решетку компьютеров размером р[О] хр[1] */ рег1обз[0] = 0; рег1обя[1] = О; МР1 Сагс сгеасе(рсоппп, 2, р, рег1ое(з, О, асошш 2Р); /х Находим ранги и лекартовы координаты ветвей в этой решетке х/ МР1 Сошш гап)е(сошш 2Р, агап)е); МР1 Сагс соогбз(соппп 20, гапк, 2„ соогбя); /х Нахожление коммуникаторов лля полрешеток 1Р для рассылки полос « матрип А и В »/ Хог(1 = 0; т < 2; 1++) ( аког() = 0; ] < 2; ]++) /х Ванные х/ тпФ »р; /х размеров решетки компьютеров.

Р[0] соответствует п[О], р[1] » соответствует п[2] и произвеление р[0] »р[1] бупет эквивалентно » размеру группы сошш х/ /* Коммуникатор лля пропессов, участвующих в умножении матрипы на матрипу »/ МР1 Сошщ сошш, 182 9, Примеры параллельных программ гешатпв[)] = (т == )) ИР1 Саги зиЬ(сошш 20, геша1пя, мсоюш 10[т]) /х Во всех ветвях задаем подматрииы (полосы) */ /* Здесь предполагается, что пеление без остатка ь/ пп[О] = п[О]/р[О], пп[1] = п[2]/р[1], №бе1тпе АА(т,)) АА[п[1]*а+)] №йет1пе ВВ(1,]) ВВ[пп[1]ах+)] №беХтпе СС(т,)) СС[пп[1]ьт+)] АА = (боиЫе *)ша11ос(пп[О] ь п[1] ь з1нео1(боиЫе)), ВВ = (поиЫе ь)ша11ос(п[1] ь пп[1] ь втяеоХ(йоиЫе)), СС ~ (боиЫе ь)ша11ос(пи[О] х пи[1] м вднео1(боиЫе)), /ь Работа нулевой ветви м/ т1(гяпК == О) ( /* Задание типа данных для вертикальной полосы в В х Этот тип создать необходимо, т к в языке С массив в памяти Ф располагается по строкаи Лля массива А такой тип создавать * нет необходимости, т к там передаются горизонтальные полосы, а они в памяти расположены непрерывно ь/ ИР1 Туре чессог(п[1], пи[1], п[2], ИР1 000ВЬЕ, йеурез[О]), /* и корректируем пиапазон размера полосы ь/ МР1 Туре ехсепс(МР1 000В|Е, яятлео1боиЫе), Ыеп[О] = 1, Ыеп[1] = 1, а яр[О] = О, 61вр[1] = втнео1боиЫе ь пп[1], сурен[1] = МРТ ОВ, ИР1 Туре ясгисс(2, Ыеп, д1вр, сурен, 8ьсуреЬ), ИР1 Туре сошштп(йпуреЬ), /ь Вычисление размера подматриды ВВ и смешений каждой * подматриды в матриде В Подматрипы ВВ упорядочены в В м в соответствии с порядком номеров компьютеров в решетке, * т к ма~сизы расположены в памяти по строкам, то подматриды э ВВ в памяти (в В) должны располагаться в следуюшей * последовательности ВВО, ВВ1,' ь/ бтзрЬ = (тпс э)ша11ос(р[1] * зтнео1(тпп)), соипсЬ = (тпс *)ша11ос(р[1] ь втиеот(тпс)), Хог() = О, 1 < р[1], 1++) ( бтврЬ[)] соипъЬ[)] = 1, /* Задание типа данных для подматриды СС в С ь/ МР1 туре чессог(пп[О], пп[1], п[2], мР1 000В|е, ясурев[О]), /* и корректируем размер диапазона */ МР1 Туре всгисс(2, Ыеп, бтяр, сурен, йсурес), У.в.

Лроизведеиие даув матриц 1ВЗ МР1 Туре сопап1С(впурес); /» Вычисление размера подматрипы СС и смешений каждой » подматрипы в катрине С. Попматрипы СС упорядочены в С » в соответствии с порядком номеров компьютеров в решетке, » т.к. массивы распопожены в памяти по строкам, то подматрипы * СС в памяти (в С) должны располагаться в следуюшей » последовательности ССО, СС1, СС2, ССЗ, СС4, СС5, ССб, СС7.

»/ бйврс = (1пс»)ша11ос(р[0]» р[1]» в1веоХ(1пс)); соппсс = (1пс »)ша11ос(р[О] » р[1] » в1зео1(1пс)); бог(1 = 0; 1 < р[0]; 1++) ( Хог() = О; ] < р[1]; )++) ( б1врс[1»р[1]+)] = (1»р[1]»пп[0] + )): соппсс[1»р[1]+)] = 1; ) /» Нупевая ветвь завершает подготовительную работу */ /* Вычиспения (этапы указаны на рнс.2.4 в гп. 2) »/ /* 1.

Нулевая ветвь передает (всагтег) горизонтальные полосы матрипы А » по х координате »/ 11(соогбв[1] == О) ( МР1 Всапсег(А, па[О]»п[1], МР1 ОООВЬЕ, АА, по[О]»п[1], МР1 0ОВВЕЕ, О, соппп 10[0]); МР1 Ваггйег(МР1 СОНМ НОЕВО); /» 2. Нулевая ветвь передает (всассег) горизонтальные полосы матрипы В по у координате »/ 11(соогбв[0] == 0) ( МР1 Ясастеги(В, соппсЬ, бйврЬ, СуреЬ, ВВ, п[1]»по[1], МР1 0ОУВЕЕ, О, сошш 10[1]); ) /» Э. Передача подматрип АА в измерении у */ МР1 Всавт(АА, оп[0]»п[1], МР1 0ООВЕЕ, О, сошш 10[1]); /* 4. Передача подматрип ВВ в измерении х »/ МР1 Всавс(ВВ, п[1] »оп[1], МР1 ПСОВОЕ, О, соппп 10[0] ); /* 5 Вычисление подматрип СС в каждой ветви »/ аког(1 = 0; 1 < оп[О]; 1++) ( аког() = О; ] < пп[1]; ]++) С СС(1,]) = О.О; Хог(й = О; К < п[1]; К++) ( СС(1,)) = СС(1,)) + АА(1,к) » ВВ(К,)); ) /» б.

Сбор всех подматрип СС в ветви 0 »/ 184 9. Примеры параллельных проерамм МР1 ОасЬегч(СС, пи[03«ппМ , МР1 ООчВсЕ, С, соипъс, б1врс, пурес, О, соппп 20); /х Освобождение памяти всеми ветвяни и завершение подпрогранны х/ атее(АА); атее(ВВ); атее(СС); МР1 Сошш атее(жрсошш); МР1 Сошш 1гее(жсошш 20); 1ог(1 - "О; 1 < 2; г++) ( МР1 Соппп атее(еесошш 1ЭЫ); Н(тапи -"= 0) ( тгее(сапиенс); 1гее(бйврс); МР1 Туре 1гее(жпуреЪ); МР1 Туре атее(йсурес); МР1 Туре гтее(асурев[ОЛ); теъитп 0; /х Главная программа х/ тпъ ша1п(гпп атис, сваг х*агбч) с 1пп в1ке, Мур, и[33, р[2л, 1, ), К; 1пс бйшв [МОМ Р1МЯ , регйобв[МОМ 01МЯ]; боибйе «А, «В, «С; 1пс геогбет = 0; впгисп Сйшеча1 пч1, сч2; /х Лля засечения времени х/ 1пп бъ1; МР1 Соппп сошш; /х Инипиализапия библиотеки МР1 х/ МР1 1п1п(лагос, Магич); /х Каждая ветвь узнает количество задач в стартовавшен приложении х/ МР1 Сошш вбяе(МР1 СОММ ИОВЫ, йвбхе), /х и свой собственный номер (ранг) «/ МР1 Сошш тапи(МР1 СОММ ИОВЫ, жМуР); /х Обнуляен массив ббшв и заполняеи пассив регйобв для топологии х "двунерная решетка" х/ Тот(1 = 0; 1 < МУМ 01МЯ; 1++) ( б1швЫ = О„рег1обвЫ = 0; /х Заполняен массив бтшв, где указываются разиеры двумерной решетки х/ МР1 01шв сгеасе(в1ке, ИУМ 01МЯ, бгшв), /х Создаен топологию "двунерная решетка" с сошшипбсасог(он) соппп х/ МР1 Сагл сгеасе(МР1 СОММ МОВЮ, МОМ 01МЯ, ббшв, регбобв, теогбег, йсопып) /х В первой ветви выпеляен в памяти кесто для исходных натрии х/ 11(МуР == 0) ( /х Задаен размеры натрии и размеры двуиерной решетки конпьютеров х/ и[ОД = М; 9 Я Произведение дене .наенрич пШ =и, пС23 = К, р(0) = РО, р(1~ = Р1, А = (боцЫе х)ва11ос(М * М х егхеотйоцЫе)), В = (боцЫе х)ва11ос(И» К х егхео1(боцЫе)), С = (боцЫе х)ва11ос(М х К х зтвеоТИоцЫе)), /х Генерируем в первой ветви исхопные матрицы А и В, матрицу С обнуляем х/ аког(т = О, т с М, з++) аког() = О, ) < М, д++) А(э.,)) = т+1, Хог(д = О, д < М, д++) аког(к = О, )е < К, К++) в(),н) = 21+), тог(т = О, т < М, т++) Хог(К = О, )» < К, К++) С(з.,н) = О О, ) /х Попготовка матриц ветвью 0 завершена х/ /х Засекаем начало умножения матриц во всех ветвях х/ кесствео1бау(йсч1, (зсгцсс ствехопех)О), /* Все ветви вызывают функцию перемножения матриц х/ РМАТМАТ 2(п, А, В, С, р, сопеп), /х Умножение завершено Кажлая ветвь умножина свою полосу строк матрицы А на х поносу стопбпов матрицы В Резуиьтат нахопится в нупевой ветви * Засекаем время и результат печатаем х/ Весствеотоау(асч2, (зсгцсс ствекопех)0), ос1 = (сч2 тч зес — гч1 гч зес) х 1000000 + сч2 сч цзес — сч1 тч цзес, ргтпсХ(нМуР = %6 Ттве = %б~п", МуР, бс1), /х Лля контроля 0-я ветвь печатает результат х/ т1(МуР == 0) ( аког(т = О, з < М, т++) ( аког() = О, ) с К, )++) ргтпс1(и %3 11»,с(т,))), ргтпс1(»1пн), /х Все ветви завершают системные процессы, связанные с топологией совв х и завершают выполнение програмны »/ дт(Мур == 0) ( аггее(А), тгее(В), аггее(С), МР1 Савв аггее(асовв), МР1 Ртпа1тхе(), гесцгп(0), 9.

Примеры параААельмых программ 9.2,3, Произведение двух матриц в топологии "трехмерная решетка" В этом примере исходные и резупьтируюшая матрицы разрезаются в нулевой ветви н затем части матриц рассыпаются во все другие ветви. Схемы распределения данных по компьютерам приведены в и. 2.2.3. /» Произведение двух матриц в топологии "трехмерная решетка" компьютеров »/ /» В примере предполагается, что копичество строк и столбцов иатрицы А » и количество строк и стопбцов иатрицы В делятся без остатка на количество » компьютеров в системе * В данном примере зэлачу запускаем на 8-х компьютерах и на решетке 2х2х2 »/ №тпс1пбе<всбзо Ь> №зпс1пде<зсб1зЬ Ь> №тпс1пбе<шрп Ь> №зпс1пбе<сзше Ь> №ппс1пбе<зуз/Сппе Ь> /» МРИ Р1ИЯ вЂ” размер декартовой топологии "трехмерная решетка" РОхр1хр2 »/ №беттпе МОМ Р1И3 3 №беХзпе РО 2 №бе1зпе Р1 2 №беХзпе Р2 2 /* Залаем размеры матриц А = Ихй, В = МхК и С = ИхК (Эти размеры значимы в ветви 0) »/ №6е1зпе М 8 №беттпе М 8 №беХтпе К 8 №бе1зпе А(т, ) ) А сМ»~+)3 №бегзпе В(т,)) ВГК»з+)3 №бейзпе С1з,)) СГК»з+)) №беХгпе С1(з,)) С1~К»з+)Я /» Подпрограмма, осушествпяюшая перемножение матриц »/ РМАТИАТ 3(п, А, В„ С, р, соппп) /» Аргументы А, В, С, и, р значимы только в ветви 0 */ зпс »и, /» Размеры исходных матриц »/ бопбйе »А, »В, »С, /* Исходные матрицы А~п~031 ~пШ1, ВСп[133 СпС2П .

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

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

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

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