Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 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 buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request request); int MPI_Irecv(void buf, int count, MPI_Datatype datatype, int source, int msgtag, MPI_Comm comm, MPI_Request request); • 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 buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm); | розсилає вмiст буфера з задачi, що має у зазначенiй обастi зв’язку номер root, в усi iншi: П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 sendbuf, int sendcount, MPI_Datatype sendtype, void recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm); int MPI_Scatter(const void sendbuf, int sendcount, MPI_Datatype sendtype, void recvbuf, int recvcount, MPI_Datatype recvtype, int root, Зворотня по своїй д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 sendbuf, void recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, 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; просмотров: 313; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.42.168 (0.009 с.) |