Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Duisembiev-Parallel-esep.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.86 Mб
Скачать

Integer count, datatype, dest, msgtag, comm, request, ierr

buf буферінен бұғаттамайтын хабарлама. buf буферіндегі барлық хабарламаның өңделуін күтпей ақ, процедурадан қайтарылым бірден жіберу процесін инициалдаудан кейін орындалады. Бұл дегеніміз берілген посылканың аяқталуын бекітетін қосымша ақпаратты алмай тұрып, буферді басқа мақсаттарға қайталап пайдалануға болмайтынын білдіреді. Жіберілетін хабарламаны бүлдірмей buf буферін қайта пайдалануға болатын уақыт мезетін анықтауды, қайтарылған request параметрі және mpi_wait, mpi_test процедураларының көмегімен орындауға болады. request параметрінің Фортран тіліндегі типі integer (Си тілінде - mpi_request). Бұл параметр нақты бұғаттамайтын операцияны идентификациялау үшін пайдаланылады.

Си тіліндегі нұсқасы.

Int mpi_Isend(void *buf, int count, mpi_Datatype datatype, int dest, int msgtag, mpi_Comm comm, mpi_Request *request)

  • buf — жіберілетін хабарламамен буфердің басталу адресі;

  • count — хабарламадағы жіберілетін элементтер саны;

  • datatype — жіберілетін элементтер типтері;

  • dest — процесс-қабылдаушының нөмірі;

  • msgtag — хабарлама идентификаторы;

  • comm — коммуникатор идентификаторы;

  • out request — асинхронды операция идентификаторы.

mpi_send функциясының үш модификациясына ұқсас, mpi_isend процедурасының қосымша үш нұсқасы қарастырылған:

  • mpi_ibsend — буферлеуімен хабарламаны бұғаттамайтын жіберу;

  • mpi_issend — синхрондалуымен хабарламаны бұғаттамайтын жіберу;

  • mpi_irsend — дайындығымен хабарламаны бұғаттамайтын жіберу.

Бұл процедуралардың жоғарыда мазмұндалған жұмыс семантикасына бұғатталудың жоқтығы қосылады.

Int mpi_Irecv(void *buf, int count, mpi_Datatype datatype, int source, int msgtag, mpi_Comm comm, mpi_Request *request)

  • out buf — хабарламаны қабылдайтын буфердің басталу адресі;

  • count — қабылданатын хабарламадағы элементтердің максималды саны;

  • datatype — қабылданатын хабарламадағы элементтер типі;

  • source — процесс-жіберуші нөмірі;

  • msgtag — қабылданатын хабарлама идентификаторы;

  • comm —коммуникатор идентификаторы;

  • out request – хабарламаны асинхронды қабылдау операциясының идентификаторы

Фортран тіліндегі нұсқасы:

MPI_IRECV(BUF, COUNT, DATATYPE, SOURCE, MSGTAG, COMM, REQUEST, IERR)

<type> BUF(*)

Integer count, datatype, source, msgtag, comm, request, ierr

Бұғаттайтын тәсілден айырмашылығы, мұнда барлық хабарламаның қабылдануын және оның BUF буферіне жазылуын күтпей-ақ, процедурадан қайтарылым бірден қабылдау процесін инициалдаудан кейін орындалады. Қабылдау процесінің аяқталғанын request параметрі және mpi_wait, mpi_test процедураларының көмегімен анықтауға болады.

Кезкелген MPI_SEND, MPI_ISEND процедураларымен жіберілген хабарлама кезкелген MPI_RECV және MPI_IRECV процедураларымен қабылдана алады.

Төменде сақина топологиясына сәйкес, барлық процестері жақын көршілерімен хабарлама алмасатын бағдарлама мысалы келтірілген.

#include "mpi.h"

#include <stdio.h>

Int main(argc,argv)

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