#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
/* Run with two processes */
void main(int argc, char *argv[]) {
int rank, i, count;
float data[100],value[200];
MPI_Status status;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
if(rank==1) {
for(i=0;i<100;++i) data[i]=i;
MPI_Send(data,100,MPI_FLOAT,0,55,MPI_COMM_WORLD); }
else
{
MPI_Recv(value,200,MPI_FLOAT,MPI_ANY_SOURCE,55,MPI_COMM_WORLD,&status);
printf("P:%d Got data from processor %d \n",rank
, status.MPI_SOURCE);
MPI_Get_count(&status,MPI_FLOAT,&count);
printf("P:%d Got %d elements \n",rank
,count
); printf("P:%d value[5]=%f \n",rank
,value
[5]); }
MPI_Finalize();
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1waS5oPgovKiBSdW4gd2l0aCB0d28gcHJvY2Vzc2VzICovCnZvaWQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CmludCByYW5rLCBpLCBjb3VudDsKZmxvYXQgZGF0YVsxMDBdLHZhbHVlWzIwMF07Ck1QSV9TdGF0dXMgc3RhdHVzOwpNUElfSW5pdCgmYXJnYywmYXJndik7Ck1QSV9Db21tX3JhbmsoTVBJX0NPTU1fV09STEQsJnJhbmspOwppZihyYW5rPT0xKSB7CmZvcihpPTA7aTwxMDA7KytpKSBkYXRhW2ldPWk7Ck1QSV9TZW5kKGRhdGEsMTAwLE1QSV9GTE9BVCwwLDU1LE1QSV9DT01NX1dPUkxEKTsgfQplbHNlCnsKTVBJX1JlY3YodmFsdWUsMjAwLE1QSV9GTE9BVCxNUElfQU5ZX1NPVVJDRSw1NSxNUElfQ09NTV9XT1JMRCwmc3RhdHVzKTsKcHJpbnRmKCJQOiVkIEdvdCBkYXRhIGZyb20gcHJvY2Vzc29yICVkIFxuIixyYW5rLApzdGF0dXMuTVBJX1NPVVJDRSk7Ck1QSV9HZXRfY291bnQoJnN0YXR1cyxNUElfRkxPQVQsJmNvdW50KTsKcHJpbnRmKCJQOiVkIEdvdCAlZCBlbGVtZW50cyBcbiIscmFuayxjb3VudCk7CnByaW50ZigiUDolZCB2YWx1ZVs1XT0lZiBcbiIscmFuayx2YWx1ZVs1XSk7Cn0KTVBJX0ZpbmFsaXplKCk7Cn0=