Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
піро2.doc
Скачиваний:
25
Добавлен:
05.03.2016
Размер:
989.7 Кб
Скачать

47Навести і охарактеризувати основні типи даних mpi.

Тип даних, які будуть передаватися - з плаваючою точкою, наприклад. Цей тип даних повинен бути тим же самим для дзвінків надсилання й отримання. Винятком з цього правила є тип даних MPI_PACKED, який є одним із способів обробки повідомлень зі змішаним типом даних (найкращим методом є метод з похідними типами даних). Перевірка типів не потрібна в цьому випадку.

Типи даних вже визначені для вас називаються "основними типами даних" і перераховані нижче

На латиницi

Типы данных MPI Типы данных C

MPI_CHAR signed char

MPI_SHORT signed short int

MPI_INT signed int

MPI_LONG signed long int

MPI_UNSIGNED_CHAR unsigned char

MPI_UNSIGNED_SHORT unsigned short int

MPI_UNSIGNED unsigned int

MPI_UNSIGNED_LONG unsigned long int

MPI_FLOAT float

MPI_DOUBLE double

MPI_LONG_DOUBLE long double

MPI_BYTE

MPI_PACKED

48Охарактеризувати основні методи для обміну повідомленнями між окремими процесами технології mpi.

Всі процедури передачі повідомлень в MPI діляться на дві групи. До однієї групи входять процедури, які призначені для взаємодії лише двох процесів програми. Такі операції називаються індивідуальними або операціями типа крапка-крапка. Процедури іншої групи передбачають, що в операцію мають бути залучені всі процеси деякого коммуникатора. Такі операції називаються колективними.

Почнемо опис процедур обміну повідомленнями з обговорення операцій типа крапка-крапка. У таких взаємодіях беруть участь два процеси, причому один процес є відправником повідомлення, а інший – одержувачем. Процес-відправник повинні викликати одну з передачі даних і явно вказати номер в деякому комунікаторі процесу-одержувача, а процес-одержувач повинні викликати одну з процедур прийому з вказівкою того ж коммуникатора, причому в деяких випадках він може не знати точний номер процесу-відправника в даному комунікаторі. Всі процедури даної групи, у свою чергу, так само діляться на два класи:

процедури з блокуванням (з синхронізацією) і процедури без блокування (асинхронні). Процедури обміну з блокуванням припиняють працю процесу до виконання деякої умови, а повернення з асинхронних процедур відбувається негайно після ініціалізації відповідної комунікаційної операції.

Передача/прийом повідомлень з блокуванням

MPI надає наступні модифікації процедури передачі даних з блокуванням Mpi_send

MPI_BSEND — передача повідомлення з буферизацією. Якщо прийом посиланого повідомлення ще не ініціалізував процессом- одержувачем, то повідомлення буде записано в спеціальний буфер, і станеться негайне повернення з процедури. Виконання даної процедури ніяк не залежить від відповідного виклику процедури прийому повідомлення. Проте, процедура може повернути код помилки, якщо місця під буфер недостатньо.

MPI_SSEND — передача повідомлення з синхронізацією. Вихід з даної процедури станеться лише тоді, коли прийом посиланого повідомлення ініціалізує процесом-одержувачем. Таким чином, завершення передачі з синхронізацією говорить не лише про можливість повторного використання буфера посилки, але і про гарантоване досягнення процесом-одержувачем точки прийому повідомлення в програмі.

MPI_RSEND — передача повідомлення по готовності. Даною процедурою можна користуватися лише в тому випадку, якщо процес-одержувач вже ініціював прийом повідомлення

Передача/прийом повідомлень без блокування

В MPI передбачений набір процедур для здійснення асинхронної передачі даних. На відміну від блокуючих процедур, повернення з процедур даної групи відбувається відразу після виклику без якої-небудь зупинки роботи процесів. На тлі подальшого виконання програми одночасно відбувається і обробка асихронно запущеної операції. додаткові варіанти процедури MPI_ISEND:

MPI_IBSEND — неблокуюча передача повідомлення з буферизацією;

MPI_ISSEND — неблокуюча передача повідомлення з синхронізацією;

MPI_IRSEND — неблокуюча передача повідомлення по готовності.

Відкладені запити на взаємодію

Процедури даної групи дозволяють понизити накладні витрати, що виникають в рамках одного процесора при обробці прийому/передачі і переміщенні необхідної інформації між процесом і мережевим контроллером. Аналогічно трьом модифікаціям процедур

Mpi_send і Mpi_isend, передбачені три додаткові варіанти процедури MPI_SEND_INIT:

MPI_BSEND_INIT — формування відкладеного запиту на передачу повідомлення з буферизацією;

MPI_SSEND_INIT — формування відкладеного запиту на передачу повідомлення з синхронізацією;

MPI_RSEND_INIT — формування відкладеного запиту на передачу повідомлення по готовності.

Тупикові ситуації (deadlock)

Використання блокуючих процедур прийому і посилки пов'язане з можливим виникненням тупикової ситуації.

49-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]