Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Лекция 5. Распределение данных. Основы MPI

Лекция 5. Распределение данных. Основы MPI (Электронные лекции)

PDF-файл Лекция 5. Распределение данных. Основы MPI (Электронные лекции) Суперкомпьютерное моделирование и технологии (64095): Лекции - 11 семестр (3 семестр магистратуры)Лекция 5. Распределение данных. Основы MPI (Электронные лекции) - PDF (64095) - СтудИзба2020-08-25СтудИзба

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

Файл "Лекция 5. Распределение данных. Основы MPI" внутри архива находится в папке "Электронные лекции 2016 года". PDF-файл из архива "Электронные лекции", который расположен в категории "". Всё это находится в предмете "суперкомпьютерное моделирование и технологии" из 11 семестр (3 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

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

Текст из PDF

Суперкомпьютерноемоделирование и технологии.сентябрь – декабрь 2016 г.Лекция21 сентября 2016 г.Материалы лекции представлены на сайтеВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаЗадание 2. Исследование эффективностирешения задачи Дирихле для уравненияЛапласа (один из вариантов)Задача Дирихле для уравнения Лапласа (1).  2u  2u  2u 2  2  2  0, ( x, y, z )  D,yz xu ( x, y, z )  g ( x, y, z ), ( x, y, z )  D 0 ,(1)где u(x, y, z) - функция, удовлетворяющая в области D уравнениюЛапласа и принимающая на границе D0 области D значения g(x, y, z).М.В.Абакумов, А.В.Гулин Лекции по численным методамматематической физики. Учебное пособие. – М.-:ИНФРА-М, 2013.158ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаПостановка задачи.Разностная схема.Численный подход к решению задачи (1) основан назамене производных соответствующими конечнымиразностями (2).ui 1, j ,k  2ui , j ,k  ui 1, j ,kh2ui , j 1,k  2ui , j ,k  ui , j 1,kh2ui , j ,k 1  2ui , j ,k  ui , j ,k 1h2 0, (2)где h  0 - шаг сетки, u i , j ,k - значение функции u(x, y, z) в точкеx  xi  ih, i  0, M  1, y  y j  jh, j  0, N  1, z  z k  kh, h  0, L  1,где M, N, L - количество внутренних узлов по каждой координатев области D.ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаМетод Якоби. итерационный метод Якоби (3).n 1i 1, j , kun 1i 1, j , kun 1i , j 1, kun 1i , j 1, kuni , j ,k (uuni , j ,k g i , j ,k , ( x, y, z )  D , n  1,2,..un 1i , j , k 10где n - номер итерации.ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.Поповаun 1i , j , k 1)/6(3)Уравнение Лапласа (2D)u u 2 02xy22x, y  [0,1](1)Краевые условия:u ( x,0 )  sin (x)0u ( x,1)  sin (x)ex1x0x1u (0, y )  u (1, y )  00y1(2)Аналитическое решение:u( x, y)  sin(x)e xyx, y  [0,1]ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.Попова(3)Дискретизация уравнения Лапласаuin, 1j uin1,j  uin1,j  ui,jn 1  ui,jn 14i  1,2, ,m; j  1,2, ,m(4)где n и n+1 текущий и следующий шаг,ui,jn  u n(xi ,y j )i  0,1,2, ,m  1; j  0,1,2, ,m  1 u n(ix, jy )Для простотыx  y 1m1ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.Попова(5)Вычислительная областьu(x,1)  sin(x)e xy, jx, iu(1,y)  0u(0,y)  0u ( x,0)  sin (x)uin, j 1 uin1,j  uin1,j  ui,jn 1  ui,jn 14i  1,2, ,m; j  1,2, ,mВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.Попова5-точечный шаблонuin, j 1 uin1,j  uin1,j  ui,jn 1  ui,jn 1xx o x4xвнутренняя область, накоторой ищется решениеуравнения(i, j)граничная область.xx o xxВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаМетод Якоби3.Задать начальные значения u во всех внутренних точках (i,j) вмомент времени n=0.Используя 5-точечный шаблон, вычислить значения воn 1внутренних точках ui , j (i,j).Завершить процесс, если заданная точность достигнута.4.Иначе:5.Перейти на шаг 2.1.2.uin, j  uin, j 1для всех внутренних точек.Это очень простая схема.

Медленно сходится, поэтому не используетсядля решения реальных задач.ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаРешение (линии уровня)ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаПараллельная реализация1D Domain Decomposition2D Domain DecompositionПроцесс 3Процесс 2Процесс 3Процесс 2Процесс 1Процесс 0Процесс 0ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаПроцесс 1Распределение данных – 1D5-точечная схема требуетзначений от соседнихпотоковНеобходим обменданными на границахобластиxx o xxПроцесс 2xx o xПроцесс 1xxx o xВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаxПроцесс 0Схема передачи данныхПроцессk+1Процесс kТекущийпроцессПроцессk-1ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаОбзор технологий параллельногопрограммирования.Основные возможности MPI.ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаПример параллельной программыпрограммы (C, OpenMP)Сумма элементов массива#include <stdio.h>#define N 1024int main(){ double sum;double a[N];int i, n =N;for (i=0; i<n; i++){a[i] = i*0.5; }sum =0;#pragma omp for reduction (+:sum)for (i=0; i<n; i++)sum = sum+a[i];printf (“Sum=%f\n”, sum);}МФК МГУ, 2015г.

Курс "Суперкомпьютеры иквантовая и нформатика"Пример параллельной программыпрограммы (C, MPI)#include <stdio.h>#include <mpi.h>#define N 1024int main(int argc, char *argv[]){ double sum, all_sum;double a[N];int i, n =N;int size, myrank;MPI_Init(&argc, &argv);MPI_Comm_rank(MPI_COMM_WORLD,&rank);MPI_Comm_size(MPI_COMM_WORLD,&size);n= n/ size;for (i=rank*n; i<n; i++){a[i] = i*0.5; }sum =0;for (i=rank*n; i<n; i++)sum = sum+a[i];MPI_Reduce(& sum,& all_sum, 1,MPI_DOUBLE, MPI_SUM, 0,MPI_COMM_WORLD);If ( !rank)printf (“Sum =%f\n”, all_sum);MPI_Finalize();return 0;}МФК МГУ, 2015 г. Курс "Суперкомпьютеры иквантовая и нформатика"Гибрид: MPI+OpenMP#include <stdio.h>#include <mpi.h>#define N 1024int main(int argc, char *argv[]){ double sum, all_sum;double a[N];int i, n =N;int size, myrank;MPI_Init(&argc, &argv);MPI_Comm_rank(MPI_COMM_WORLD,&rank);MPI_Comm_size(MPI_COMM_WORLD,&size);n= n/ size;for (i=rank*n; i<n; i++){a[i] = i*0.5; }sum =0;#pragma omp for reduction (+:sum)for (i=rank*n; i<n; i++)sum = sum+a[i];MPI_Reduce(& sum,& all_sum, 1,MPI_DOUBLE, MPI_SUM, 0,MPI_COMM_WORLD);If ( !rank)printf (“Sum =%f\n”, all_sum);MPI_Finalize();return 0;}МФК МГУ, 2015 г.

Курс "Суперкомпьютеры иквантовая и нформатика"MPIMPI 1.1 Standard разрабатывался 92-94MPI 2.0 - 95-97MPI 2.1 - 2008MPI 3.1 – 2015Стандартыhttp://mpi-forum.org/docs/http://www.mpi-forum.org/docs/docs.htmlОписание функций http://www-unix.mcs.anl.gov/mpi/www/ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаРеализации MPIMPICHLAM/MPIMvapichOpenMPIКоммерческие реализации Intel,IBM идр.ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаМодель MPIПараллельная программа состоит из процессов,процессы могут быть многопоточными.MPI реализует передачу сообщений междупроцессами.Межпроцессное взаимодействие предполагает: синхронизацию перемещение данных из адресного пространстваодного процесса в адресное пространство другогопроцесса.ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаМодель MPI-программ• SPMD – Single ProgramMultiple Data• Одна и та же программавыполняется различнымипроцессорами• Управляющимиоператорами выбираютсяразличные частипрограммы на каждомпроцессоре.Текст программыКомпиляция:одна программаДля всех процессоровИсполняемый кодProcessor 0ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаProcessorМодель выполненияMPI- программыЗапуск: mpirunПри запуске указываем число требуемых процессоров np иназвание программы: пример:mpirun –np 3 progКаждый процесс MPI-программы получает два значения: np – число процессов rank из диапазона [0 … np-1] – номер процессаЛюбые два процесса могут непосредственно обмениватьсяданными с помощью функций передачи сообщенийВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаОсновы передачи данных в MPIТехнология передачи данных MPI предполагаеткооперативный обмен.Данные посылаются одним процессом ипринимаются другим.Передача и синхронизация совмещены.Process 0Process 1Send(data)Receive(data)ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаОсновные группы функций MPIОпределение средыПередачи «точка-точка»Коллективные операцииПроизводные типы данныхГруппы процессовВиртуальные топологииОдносторонние передачиПараллельный ввод-выводВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаОсновные понятияПроцессы объединяются в группы.Каждое сообщение посылается в рамках некоторогоконтекста и должно быть получено в том же контексте.Группа и контекст вместе определяют коммуникатор.Процесс идентифицируется своим номером в группе,ассоциированной с коммуникатором.Спецкурс "Параллельное программированиедля высокопроизводительных систем",Лекция 225Понятие коммуникатора MPIВсе обращения к MPI функциям содержаткоммуникатор, как параметр.Наиболее часто используемый коммуникаторMPI_COMM_WORLD:- определяется при вызове MPI_Initсодержит ВСЕ процессы программыДругие предопределенные коммуникаторы:- MPI_COMM_SELF – только один (собственный)процесс--MPI_COMM_NULL – пустой коммуникаторСпецкурс "Параллельное программированиедля высокопроизводительных систем",Лекция 226Типы данных MPIДанные в сообщении описываются тройкой:(address, count, datatype), гдеdatatype определяется рекурсивно как :предопределенный базовый тип, соответствующий типуданных в базовом языке (например, MPI_INT,MPI_DOUBLE_PRECISION)Непрерывный массив MPI типовВекторный типИндексированыый типПроизвольные структурыMPI включает функции для построенияпользовательских типов данных, например, типаданных, описывающих пары (int, float).Спецкурс "Параллельное программированиедля высокопроизводительных систем",Лекция 227Базовые MPI-типы данныхMPI datatypeC datatypeMPI_CHARsigned charMPI_SHORTsigned short intMPI_INTsigned intMPI_LONGsigned long intMPI_UNSIGNED_CHARunsigned charMPI_UNSIGNED_SHORTunsigned short intMPI_UNSIGNEDunsigned intMPI_UNSIGNED_LONGunsigned long intMPI_FLOATfloatMPI_DOUBLEdoubleMPI_LONG_DOUBLElong doubleСпецкурс "Параллельное программированиедля высокопроизводительных систем",Лекция 228Специальные типы MPIMPI_CommMPI_StatusMPI_datatypeВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаПонятие тэгаСообщение сопровождается определяемымпользователем признаком – целым числом – тэгомдля идентификации принимаемого сообщенияТеги сообщений у отправителя и получателя должныбыть согласованы.

Можно указать в качествезначения тэга константу MPI_ANY_TAG.ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаMPI helloworld.c#include <stdio.h>#include <mpi.h>int main(int argc, char **argv){MPI_Init(&argc, &argv);printf("Hello, MPI world\n");MPI_Finalize();return 0; }ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаФункции определения средыint MPI_Init(int *argc, char ***argv)должна первым вызовом, вызывается только один разint MPI_Comm_size(MPI_Comm comm, int *size)число процессов в коммуникатореint MPI_Comm_rank(MPI_Comm comm, int *rank)номер процесса в коммуникаторе (нумерация с 0)int MPI_Finalize()завершает работу процессаint MPI_Abort (MPI_Comm_size(MPI_Comm comm,int*errorcode)завершает работу программыВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаИнициализация MPIMPI_Init должна быть первым вызовом,вызывается только один разC:int MPI_Init(int *argc, char ***argv)http://www.mcs.anl.gov/research/projects/mpi/www/www3/MPI_Init.htmlВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаОбработка ошибок MPI-функцийОпределяется константой MPI_SUCCESSIint error;……error = MPI_Init(&argc, &argv));If (error != MPI_SUCCESS){fprintf (stderr, “ MPI_Init error \n”);return 1;}ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаMPI_Comm_sizeКоличество процессов в коммуникатореРазмер коммуникатораint MPI_Comm_size(MPI_Comm comm, int*size)Результат – число процессовhttp://www-unix.mcs.anl.gov/mpi/www/www3/MPI_Comm_size.htmlВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаMPI_Comm_rankномер процесса (process rank)Process ID в коммуникаторе Начинается с 0 до (n-1), где n – числопроцессовИспользуется для определения номера процессаотправителя и получателяint MPI_Comm_rank(MPI_Comm comm, int*rank)Результат – номер процессаВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаЗавершение MPI-процессовНикаких вызовов MPI функций послеint MPI_Finalize()int MPI_Abort (MPI_Comm_size(MPI_Comm comm, int*errorcode)ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаHello, MPI world!#include <stdio.h>#include "mpi.h"int main(int argc, char **argv){int rank, size;MPI_Init(&argc, &argv);MPI_Comm_rank(MPI_COMM_WORLD, &rank);MPI_Comm_size(MPI_COMM_WORLD, &size);printf("Hello, MPI world! I am %d of %d\n“,rank,size);MPI_Finalize();return 0; }ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаТрансляция MPI-программТрансляцияmpicc –o <имя_программы> <имя>.c <опции>Например:mpicc –o hw helloworld.cЗапуск в интерактивном режимеmpirun –np 128 hwВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаВзаимодействие «точка-точка»Самая простая форма обменасообщениемОдин процесс посылает сообщениядругомуНесколько вариантов реализации того,как пересылка и выполнение программысовмещаютсяВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаВарианты передачи «точка-точка»Синхронные пересылкиАсинронные передачиБлокирующие передачиНеблокирующие передачиВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаФункции MPI передачи«точка-точка»ВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаБлокирующие и неблокирующие передачиОпределяют, при каких условиях операциипередачи завершаются:- Блокирующие: возврат из функций передачисообщений только по завершению передачи- Неблокирующие : немедленный возврат изфункций, пользователь долженконтролировать завершение передачВМК МГУ, "Суперкомпьютерноемоделирование и технологии", лекторН.Н.ПоповаОснова 2-точечных обменовint MPI_Send(void *buf,int count, MPI_Datatype datatype,int dest, int tag,MPI_Comm comm)int MPI_Recv(void *buf,int count, MPI_Datatype datatype,int source, int tag,MPI_Comm comm, MPI_Status *status )Параллельное программирование для ВВС.Магистр.

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