1 / 18

Параллельные вычисления

Параллельные вычисления.

scott-chen
Download Presentation

Параллельные вычисления

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Параллельные вычисления Лекция № 7Множественное распараллеливание на Linux кластере с помощью библиотеки MPI 1. Компиляция и запуск программы на кластере. 2. SPMD модель параллельного программирования. 3. Группа процессов в коммуникаторе. 4. Передача/прием сообщений между отдельными процессами

  2. MPI MPI_ISEND(BUF, COUNT, DATATYPE, DEST, MSGTAG, COMM, REQUEST, IERR) <type> BUF(*) INTEGER COUNT, DATATYPE, DEST, MSGTAG, COMM, REQUEST, IERR Неблокирующая посылка сообщения. Возврат из функциипроисходит сразу после инициализации передачи.Переменная REQUEST идентифицирует пересылку.

  3. MPI Модификации функции MPI_ISEND: MPI_IBSEND —передача сообщения с буферизацией. MPI_ISSEND —передача сообщения с синхронизацией. MPI_IRSEND —передача сообщения по готовности.

  4. MPI MPI_IRECV(BUF, COUNT, DATATYPE, SOURCE, MSGTAG, COMM, REQUEST, IERR) <type> BUF(*) INTEGER COUNT, DATATYPE, SOURCE, MSGTAG, COMM, REQUEST, IERR Неблокирующий прием сообщения. Возврат из функциипроисходит сразу после инициализации передачи.Переменная REQUEST идентифицирует пересылку.

  5. MPI Сообщение, отправленное любой из функций MPI_SEND, MPI_ISEND и любой из трех их модификаций, может быть принято любой из процедур MPI_RECV и MPI_IRECV. До завершения неблокирующей операции неследует записывать в используемый массив данных!

  6. MPI MPI_IPROBE(SOURCE, MSGTAG, COMM, FLAG, STATUS, IERR) LOGICAL FLAG INTEGER SOURCE, MSGTAG, COMM, IERR, STATUS(MPI_STATUS_SIZE) Получение информации о структуре ожидаемого сообщения без блокировки.FLAG возвращает значение.TRUE., если сообщение с подходящими атрибутами уже может быть принято.

  7. MPI MPI_WAIT(REQUEST, STATUS, IERR) INTEGER REQUEST, IERR, STATUS(MPI_STATUS_SIZE) Ожидание завершения асинхронной операции, ассоциированной с идентификатором REQUEST. Для неблокирующего приема определяется параметр STATUS.REQUESTустанавливается в значение MPI_REQUEST_NULL.

  8. MPI MPI_WAITALL(COUNT, REQUESTS, STATUSES, IERR) INTEGER COUNT, REQUESTS(*), STATUSES(MPI_STATUS_SIZE,*), IERR Ожидание завершенияCOUNT асинхронных операций, ассоциированных с идентификаторамиREQUESTS. Для неблокирующих приемов определяются параметры в массиве STATUSES.

  9. MPI prev = rank - 1 next = rank + 1 if (rank .eq. 0) prev = numtasks - 1 if (rank .eq. numtasks - 1)next = 0 call MPI_IRECV(buf(1), 1, MPI_INTEGER, & prev, tag1, MPI_COMM_WORLD, reqs(1), & ierr) call MPI_IRECV(buf(2), 1, MPI_INTEGER, & next, tag2, MPI_COMM_WORLD, reqs(2), & ierr)

  10. MPI call MPI_ISEND(rank, 1, MPI_INTEGER, & prev, tag2, MPI_COMM_WORLD, reqs(3), & ierr) call MPI_ISEND(rank, 1, MPI_INTEGER, & next, tag1, MPI_COMM_WORLD, reqs(4), & ierr) call MPI_WAITALL(4, reqs, stats, ierr);

  11. MPI MPI_WAITANY(COUNT, REQUESTS, INDEX, STATUS, IERR) INTEGER COUNT, REQUESTS(*), INDEX, STATUS(MPI_STATUS_SIZE), IERR Ожидание завершенияодной из COUNT асинхронных операций, ассоциированных с идентификаторамиREQUESTS. Для неблокирующего приема определяется параметр STATUS.

  12. MPI Если к моменту вызова завершились несколько из ожидаемых операций, то случайным образом будет выбрана одна из них. Параметр INDEXсодержит номер элемента в массиве REQUESTS, содержащего идентификатор завершенной операции.

  13. MPI MPI_WAITSOME(INCOUNT, REQUESTS, OUTCOUNT, INDEXES, STATUSES, IERR) INTEGER INCOUNT, REQUESTS(*), OUTCOUNT, INDEXES(*), IERR, STATUSES(MPI_STATUS_SIZE,*) Ожидание завершенияхотя бы одной из INCOUNT асинхронных операций, ассоциированных с идентификаторамиREQUESTS.

  14. MPI Параметр OUTCOUNTсодержит число завершенных операций, а первые OUTCOUNTэлементов массива INDEXES содержат номера элементов массива REQUESTSс их идентификаторами. Первые OUTCOUNT элементов массива STATUSES содержат параметры завершенных операций (для неблокирующих приемов).

  15. MPI MPI_TEST(REQUEST, FLAG, STATUS, IERR) LOGICAL FLAG INTEGER REQUEST, IERR, STATUS(MPI_STATUS_SIZE) Проверка завершенности асинхронной операции, ассоциированной с идентификатором REQUEST. В параметре FLAG возвращается значение .TRUE.,если операция завершена.

  16. MPI MPI_TESTALL(COUNT, REQUESTS, FLAG, STATUSES, IERR) LOGICAL FLAG INTEGER COUNT, REQUESTS(*), STATUSES(MPI_STATUS_SIZE,*), IERR Проверка завершенностиCOUNT асинхронных операций, ассоциированных с идентификаторамиREQUESTS.

  17. MPI MPI_TESTANY(COUNT, REQUESTS, INDEX, FLAG, STATUS, IERR) LOGICAL FLAG INTEGER COUNT, REQUESTS(*), INDEX, STATUS(MPI_STATUS_SIZE), IERR В параметре FLAG возвращается значение .TRUE.,еслихотя бы одна из операций асинхронного обмена завершена.

  18. MPI MPI_TESTSOME(INCOUNT, REQUESTS, OUTCOUNT, INDEXES, STATUSES, IERR) INTEGER INCOUNT, REQUESTS(*), OUTCOUNT, INDEXES(*), IERR, STATUSES(MPI_STATUS_SIZE,*) АналогMPI_WAITSOME,но возврат происходит немедленно. Если ни одна из операций не завершилась, то значение OUTCOUNT будет равно нулю.

More Related