Типы данных MPI_BYTE и MPI_PACKED не соответствуют типу данных Fortran или C,C++. Значение типа MPI_BYTE состоит из байта (8 двоичных цифр). Байт не интерпретируется и отличается от символа. Разные машины могут иметь разные представления символов или могут использовать более одного байта для представления символов. С другой стороны, байт имеет одинаковое двоичное значение на всех машинах.
13
MPI_PACKED
Blokirovkali xabar jo’natish.
Sinxronizatsiya bilan nuqtadan nuqtaga xabar jo’natish (biri jo'natuvchi, ikkinchisi qabul qiluvchi)
intMPI_Send(void* buf, int count, MPI_Datatype datatype, int dest, int msgtag, MPI_Comm comm)
buf – xabar yuborish buferining bosh manzili;
count - xabardagi uzatiladigan elementlar soni;
datatype - uzatilgan elementlarning turi;
dest - qabul qilish jarayonining raqami;
msgtag - xabar identifikatori;
comm - bu guruh identifikatori.
Xabarning barcha elementlari bufer bufida ketma-ket joylashgan. O'z-o'ziga xabar yuborishga ruxsat beriladi, lekin bu boshi berk ko'chaga olib kelishi mumkin.
Xabarni qabul qilish
int MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int msgtag, MPI_Comm comm, MPI_Status*status)
OUT buf – xabarni qabul qiluvchi bufer manzili;
count - qabul qilingan xabardagi elementlarning maksimal soni;
datatype- qabul qilingan xabar elementlarining turi;
source - jo'natuvchi jarayonning raqami;
msgtag - qabul qilingan xabarning identifikatori;
OUT status – qabul qilingan xabar parametrlari.
Blokirovkalash pastki dastur qaytgandan so'ng xabarning barcha elementlari qabul qilinishini va bufer bufiga joylashtirilishini ta'minlaydi.Agar jarayon boshqa jarayonga ikkita xabar yuborsa va ikkala xabar ham bir xil MPI_Recv chaqiruviga mos kelsa, birinchi yuborilgan xabar avval qabul qilinadi.