Мұндағы: buf - буфер адресінің басы;
count – міндетті түрде жіберілетін элементтер саны;
dataType –
әрбір элементтің типі, мысалы: MPI_INT,
MPI_DOUBLE, MPI_CHAR, және т.с.с.;
dest - адресат рангісі (процесс идентификаторы);
tag – хабарлама тэгі;
comm - коммуникатор.
int MPI_Recv (void* buf, int count,
MPI_Datatype dataType, int source, int tag,
MPI_Comm comm, MPI_Status* status)
Мұндағы: status – кері қайту жағдайын қайтарады,
source – MPI_Send процедурасындағыдай берілу идентификаторы.
MPI программасында белгілі бір ережелерді қатаң сақтау керек, онсыз
жұмыс жүруі мүмкін емес. Алдымен, программының басталуында, оның
тақырыбынан кейін сәйкес тақырыптық файлды іске қосу керек.
С тіліндегі
программада бұл -
mpi.h. Программада MPI кітапханалық процедурасының
алғашқы шақырылымы MPI_Init инициализациясының ішкі программасын
шақыру болып табылады.
С тілінде инициализация функциясының
параметрі негізгі программа қосылған жағдайда оның аргументінің адресін
алады: MPI_Init(&argc, &argv);
_
2. MPI кітапханасының көмегімен екі процесс арасындағы мәндермен алмасу
программасын қарастырайық:
#include
#include
Main(int argc, char *argv[])
{int myid, otherid, size;
Int length=1, tag=1;
Int myvalue, othervalue;
MPI_Status status;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
if (myid==0) (otherid=1; myvalue=14;}
else
{otherid=0; myvalue=25;}
MPI_Send(&myvalue, length, MPI_INT, otherid,
tag, MPI COMM_WORLD, &status);
MPI_Recv(&othervalue, length, MPI_INT, MPI_ANY_SOURCE,
tag, MPI COMM_WORLD, &status);
printf("npoцecc номер %d алынды %d\n", myid, othervalue);
Достарыңызбен бөлісу: