Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Комунікації точка-точка. Неблокуючі (асинхронні) передачі в MPI.Содержание книги
Поиск на нашем сайте
Особливiстю неблокуючої (асинхронної) передачi повiдомлень є те, що виконання про- грами не призупиняється для виконання прийому чи передачi даних. Такий спосiб передачi є бiльш складним для програмування, але при правильному застосуваннi може в значнiй мiрi зменшити втрату ефективностi паралельних обчислень через повiльну (у порiвнян- нi зi швидкiстю процесору) передачу даних. Неблокуюча передача повiдомлень дозволяє сумiщати в часi вiдправку чи прийом повiдомлень та обчислення. MPI забезпечує можли- вiсть неблокуючої передачi даних мiж двома задачами.Назва неблокуючих аналогiв для вiдповiдних блокуючих функцiй створюється з назви вiдповiдної функцiї шляхом додаван- ня префiксу «I» (вiд англ. immediate).Неблокуючi функцiї приймають тi ж самi параметри, що i блокуючi, i ще один додатковий параметр request з типом MPI_Request. У функцiї прийому MPI_Irec v вiдсутнiй параметр status. В параметрi request передається дескри- птор запиту вiдправки або прийому. Цей дескриптор можна передати функцiям MPI_Wait або MPI_Waitall для того, щоб дочекатись завершення передачi. Усi буфери, що вико- ристовуються в неблокуючих передачах стають недоступними користувачу пiсля запуску передачi чи прийому iнформацiї. Буфери стануть знову доступними пiсля виконання фун- кцiй MPI_Wait або MPI_Waitall для цих передач int MPI_Isend(void MPI_Request int MPI_Irecv(void • buf – покажчик буфера вiдправки; розмiр буфера має бути не менший, нiж count елементiв. Пiсля виконання функцiї буфер буде тимчасово недоступний. • count – розмiр буфера, кiлькiсть елементiв, що будуть вiдправленi/прийнятi • datatype – тип комiрки буфера. • dest/source – ранг задачi, з якою здiйснюється обмiн даними. • msgtag – iдентифiкатор повiдомлення. Обране користувачем цiле число вiд 0 до MPI_TAG_UB. 1 • comm – комунiкатор, в рамках якого вiдбувається взаємодiя. • request – покажчик на змiнну типу MPI_Request, в яку буде записано дескриптор передачi.
8. Точки синхронізації. Функція MPI_Bcast. Пiд термiном "колективнi"в MPI маються на увазi три групи функцiй: • функцiї колективного обмiну даними; • точки синхронiзацiї, або бар’єри; • функцiї пiдтримки розподiлених операцiй. Виклик колективної функцiї є коректним, тiльки якщо зроблений зi всiх процесiв-абонентiв вiдповiдної областi зв’язку, i саме з цим комунiкатором як аргумент (хоча для однiєї областi зв’язку може бути декiлька комунiкаторiв, пiдставляти їх замiсть один одного не можна). У цьому i полягає колективнiсть: або функцiя викликається всiм колективом процесiв, або нiким; третього бути не може.
Цим займається лише одна функцiя: int MPI_Barrier(MPI_Comm comm); -зупиняє виконання поточного завдання до тих пiр, поки не буде викликана з усiх iнших процесiв, пiд’єднаних до вказаного коммуникатора. Гарантує, що до виконання наступної за MPI_Barrier iнструкцiї кожна задача почне одночасно з iншими. Це єдина в MPI функцiя, викликами якої гарантовано синхронiзується виконання рi- зних процесiв! Деякi iншi колективнi функцiї залежно вiд реалiзацiї можуть володiти, або нi властивiстю одночасно повертати управлiння всiм процесам; але для них ця вла- стивiсть є побiчною i необов’язковою – якщо Вам потрiбна синхроннiсть, використовуй- те MPI_Barrier.
Основнi особливостi i вiдмiнностi вiд комунiкацiй типу "точка-точка": • на прийом i/або передачу працюють одночасно ВСI завдання-абоненти вказаного ко- мунiкатора; • колективна функцiя виконує одночасно i прийом, i передачу; вона має велику кiлькiсть параметрiв, частина яких потрiбна для прийому, а частина для передачi; в рiзних завданнях та чи iнша частина iгнорується; • як правило, значення ВСIХ параметрiв (за винятком адрес буферiв) повиннi бути iдентичними у всiх завданнях; • MPI призначає iдентифiкатор для повiдомлень автоматично; крiм того, повiдомлен- ня передаються не по комунiкатору, що вказується, а по тимчасовому комунiкатору- дуплiкату; тим самим, потоки даних колективних функцiй надiйно iзолюються один вiд одного та вiд потокiв, створених функцiями "точка-точка". int MPI_Bcast(void Пiсля виходу з функцiї MPI_Bcast вмiст буфера buffer, процесу root буде скопiйова- ний в локальний бефер кожного процесу комунiкатора comm. Значення параметрiв count, datatype, root та comm повиннi бути однаковi для всiх процесiв. 9. Колективні функції MPI_Gather, MPI_Scatter Основнi особливостi i вiдмiнностi вiд комунiкацiй типу "точка-точка": • на прийом i/або передачу працюють одночасно ВСI завдання-абоненти вказаного ко- мунiкатора; • колективна функцiя виконує одночасно i прийом, i передачу; вона має велику кiлькiсть параметрiв, частина яких потрiбна для прийому, а частина для передачi; в рiзних завданнях та чи iнша частина iгнорується; • як правило, значення ВСIХ параметрiв (за винятком адрес буферiв) повиннi бути iдентичними у всiх завданнях; • MPI призначає iдентифiкатор для повiдомлень автоматично; крiм того, повiдомлен- ня передаються не по комунiкатору, що вказується, а по тимчасовому комунiкатору- дуплiкату; тим самим, потоки даних колективних функцiй надiйно iзолюються один вiд одного та вiд потокiв, створених функцiями "точка-точка". int MPI_Gather(const void int MPI_Scatter(const void Зворотня по своїй дiї до MPI_Gather, вона здiйснює розсилку з ма- сиву sendbuf процесу root до всiх iнших прпоцесiв комунукатора, включаючии процес root. Можна сказати, що масив sendbuf дiлиться на рiвнi частини, за кiлькiстю процесiв, кожна з яких складається з sendcount елементiв типу sendtype, пiсля чого i частина вiдсилається i процесу. Результат, розмiру recvcount, в кожному процесi росташований в recvbuf.
10. Операцiя згортки. Функція MPI_Reduce.
int MPI_Reduce(void MPI_Comm comm); Операцiя згортки. Задача з номером root отримує данi вiд усiх задач i виконує над даними операцiю op. • sendbuf – покажчик буфера вiдправки. • count – кiлькiсть елементiв в буферi. • datatype – тип елементiв в буферi. • op – операцiя згортки даних. • root – ранг задачi, яка отримає результат згортки. • comm – комунiкатор, в рамках якого вiдбувається взаємодiя. • recvbuf – покажчик буферу прийому (вказує тiльки задача з рангом root, для iнших допустимо NULL). В MPI є декiлька вбудованих операцiй для згортки. MPI також дозволяє програмiсту визначати власнi операцiї згортки
|
||||
|
Последнее изменение этой страницы: 2017-01-20; просмотров: 389; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.119 (0.007 с.) |