MPI (по Бахтину) (Лекции)

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

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

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

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

Текст из PDF

Стандарт MPIОсновные понятияБлокирующие двухточечные обменыДвухточечные обмены с буферизацией,другие типы двухточечных обменовMPIMPIMPIMPI1.12.02.13.0Standard разрабатывался 92-94- 95-97- 2008 сентябрь 2008 г.- сентябрь 2012 г.Стандартыhttp://www.mcs.anl.gov/mpihttp://www.mpi-forum.org/docs/docs.htmlhttps://computing.llnl.gov/tutorials/mpi/Описание функцийhttp://www-unix.mcs.anl.gov/mpi/www/Основная цель:• Обеспечение переносимости исходных кодов• Эффективная реализацияКроме того:◦ Большая функциональность◦ Поддержка неоднородных параллельныхархитектурMPICH LAM/MPI Mvapich OpenMPI Коммерческие реализации Intel, IBM идр.Параллельная программа состоит изпроцессов, процессы могут бытьмногопоточными.MPI реализует передачу сообщений междупроцессами.Межпроцессное взаимодействие предполагает:◦ синхронизацию◦ перемещение данных из адресного пространстваодного процесса в адресное пространство другогопроцесса.Процессы объединяются в группы.Каждое сообщение посылается в рамкахнекоторого контекста и должно бытьполучено в том же контексте.Группа и контекст вместе определяюткоммуникатор.Процесс идентифицируется своим номеромв группе, ассоциированной скоммуникатором.Коммуникатор, содержащий все начальныепроцессы, называется MPI_COMM_WORLD.Управляющий объект, представляющий группупроцессов, которые могут взаимодействовать другс другомВсе обращения к MPI функциям содержаткоммуникатор, как параметрНаиболее часто используемый коммуникаторMPI_COMM_WORLDОпределяется при вызове MPI_InitСодержит ВСЕ процессы программыДанные в сообщении описываются тройкой:(address, count, datatype), где datatypeопределяется рекурсивно как:◦ Предопределенный базовый тип, соответствующий типуданных в базовом языке (например, MPI_INT,MPI_DOUBLE_PRECISION)◦ Непрерывный массив MPI типов◦ Векторный тип◦ Индексированыый тип◦ Произвольные структурыMPI включает функции для построенияпользовательских типов данных, например, типаданных, описывающих пары (int, float).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Сообщение сопровождается определяемымпользователем признаком дляидентификации принимаемого сообщенияТеги сообщений у отправителя иполучателя должны быть согласованы.Можно указать в качестве значения тэгаконстанту MPI_ANY_TAG.Некоторые не-MPI системы передачисообщений называют тэг типом сообщения.MPI вводит понятие тэга, чтобы не путатьэто понятие с типом данных MPI.error = MPI_Xxxxx(parameter,...);MPI_Xxxxx(parameter,...);Возвращаемое значение – код ошибки.

Определяетсяконстантой MPI_SUCCESSint error;......error = MPI_Init(&argc, &argv));if (error != MPI_SUCCESS){fprintf (stderr, “ MPI_Init error \n”);return 1;}При запуске указываем число требуемыхпроцессоров np и название программыmpirun –np 3 progНа выделенных для расчета узлах запускается npкопий указанной программыКаждая копия программы получает два значения:◦ np◦ rank из диапазона [0 ... np-1]Любые две копии программы могутнепосредственно обмениваться данными спомощью функций передачи сообщений#include <mpi.h>main(int argc, char **argv){int numtasks, rank;MPI_Init(&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &numtasks);MPI_Comm_rank(MPI_COMM_WORLD, &rank);printf("Hello World from process %d of %d\n“,rank, numtasks);MPI_Finalize();}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)завершает работу программыСодержит: Source: status.MPI_SOURCE Tag: status.MPI_TAG Count: MPI_Get_countВ двухточечном обмене участвуют толькодва процесса, процесс-отправитель ипроцесс-получатель (источник сообщенияи адресат).Двухточечные обмены используются дляорганизации локальных инеструктурированных коммуникаций.Двухточечный обмен возможен только междупроцессами, принадлежащими одной областивзаимодействия (одному коммуникатору).Отправитель должен указать правильныйrank получателяПолучатель должен указать верный rankотправителяОдинаковый коммуникаторТэги должны соответствовать друг другуБуфер у процесса-получателя должен бытьдостаточного объемаблокирующие прием/передача, которыеприостанавливают выполнение процесса на времяприема или передачи сообщения;неблокирующие прием/передача, при которыхвыполнение процесса продолжается в фоновомрежиме, а программа в нужный момент можетзапросить подтверждение завершения приемасообщения;синхронный обмен, который сопровождаетсяуведомлением об окончании приема сообщения;асинхронный обмен, который таким уведомлениемне сопровождается.Правильно организованный двухточечныйобмен сообщениями должен исключатьвозможность блокировки или некорректнойработы параллельной MPI-программы.Примеры ошибок в организации двухточечныхобменов: выполняется передача сообщения, но не выполняется егоприем; процесс-источник и процесс-получатель одновременнопытаютсявыполнить блокирующие передачу или приемсообщения.В MPI приняты следующие соглашения об именах подпрограммдвухточечного обмена:MPI_[I][R, S, B]Sendздесь префикс [I] (Immediate) обозначает неблокирующий режим.Один из префиксов [R, S, B] обозначает режим обмена: по готовности,синхронный и буферизованный.Отсутствие префикса обозначает подпрограмму стандартного обмена.Имеется 8 разновидностей операции передачи сообщений.Для подпрограмм приема:MPI_[I]Recvто есть всего 2 разновидности приема.Подпрограмма MPI_Irsend, например, выполняет передачу «поготовности» в неблокирующем режиме, MPI_Bsend буферизованнуюпередачу с блокировкой, а MPI_Recv выполняет блокирующий приемсообщений.Подпрограмма приема любого типа может принять сообщения от любойподпрограммы передачи.int MPI_Send(void *buf, int count, MPI_Datatype datatype,intdest, int tag, MPI_Comm comm)MPI_Send(buf, count, datatype, dest, tag, comm, ierr) buf - адрес первого элемента в буфере передачи; count - количество элементов в буфере передачи(допускается count = 0); datatype - тип MPI каждого пересылаемого элемента; dest - ранг процесса-получателя сообщения ( целоечисло от 0 до n - 1, где n число процессов в областивзаимодействия); tag - тег сообщения; comm - коммуникатор; ierr - код завершения.При стандартной блокирующей передаче послезавершения вызова (после возврата изфункции/процедуры передачи) можноиспользовать любые переменные,использовавшиеся в списке параметров.

Такоеиспользование не повлияет на корректностьобмена.Дальнейшая «судьба» сообщения зависит отреализации MPI. Сообщение может быть сразупередано процессу-получателю или может бытьскопировано в буфер передачи.Завершение вызова не гарантирует доставкисообщения по назначению. Такая гарантияпредоставляется при использовании другихразновидностей двухточечного обмена.int MPI_Recv(void *buf, int count, MPI_Datatype datatype, intsource, int tag, MPI_Comm comm, MPI_Status *status)MPI_Recv(buf, count, datatype, dest, tag, comm, status, ierr)buf - адрес первого элемента в буфере приёма;count - количество элементов в буфере приёма;datatype - тип MPI каждого пересылаемого элемента;source - ранг процесса-отправителя сообщения ( целоечисло от 0 до n - 1, где n число процессов в областивзаимодействия);tag - тег сообщения;comm - коммуникатор;status - статус обмена;ierr - код завершения.Значение параметра count может оказаться больше, чемколичество элементов в принятом сообщении.

В этомслучае после выполнения приёма в буфере изменитсязначение только тех элементов, которые соответствуютэлементам фактически принятого сообщения.Для функции MPI_Recv гарантируется, что послезавершения вызова сообщение принято и размещено вбуфере приема.MPI_ERR_COMM - неправильно указан коммуникатор.Часто возникает при использовании «пустого»коммуникатора;MPI_ERR_COUNT - неправильное значение аргументаcount(количество пересылаемых значений);MPI_ERR_TYPE - неправильное значение аргумента,задающего тип данных;MPI_ERR_TAG - неправильно указан тег сообщения;MPI_ERR_RANK - неправильно указан ранг источникаили адресата сообщения;MPI_ERR_ARG - неправильный аргумент, ошибочноезадание которого не попадает ни в один классошибок;MPI_ERR_REQUEST - неправильный запрос навыполнение операции.В качестве ранга источника сообщения и вкачестве тега сообщения можно использовать«джокеры» :◦ MPI_ANY_SOURCE - любой источник;◦ MPI_ANY_TAG - любой тег.При использовании «джокеров» есть опасностьприема сообщения, не предназначенногоданному процессуПодпрограмма MPI_Recv может приниматьсообщения, отправленные в любом режиме.Прием может выполняться от произвольногопроцесса, а в операции передачи должен бытьуказан вполне определенный адрес.Приемник может использовать «джокеры» дляисточника и для тега.

Процесс может отправитьсообщение и самому себе, но следует учитывать,что использование в этом случае блокирующихопераций может привести к «тупику».Размерполученногосообщения(count)определить с помощью вызова подпрограммыintMPI_Get_count(MPI_Statusdatatype, int *count)*status,можноMPI_DatatypeMPI_Get_count(status, datatype, count, ierr) count - количество элементов в буфере передачи; datatype - тип MPI каждого пересылаемого элемента; status - статус обмена; ierr - код завершения.Аргумент datatype должен соответствовать типу данных,указанному в операции обменаПередача сообщения в буферизованномрежиме может быть начата независимо от того,зарегистрирован ли соответствующий прием.Источник копирует сообщение в буфер, а затемпередает его в неблокирующем режиме, так жекак в стандартном режиме.Эта операция локальна, поскольку еевыполнение не зависит от наличиясоответствующего приема.Если объем буфера недостаточен, возникаетошибка.

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