inline void MyMPI_Recv ( Array <T, BASE> & s, int src, int tag) { MPI_Status status; int len; MPI_Probe (src, tag, MPI_COMM_WORLD, &status); MPI_Get_count (&status, MyGetMPIType<T>(), &len); s.SetSize (len); MPI_Recv( &s.First(), len, MyGetMPIType<T>(), src, tag, MPI_COMM_WORLD, &status); }
inline int MyMPI_Recv ( Array <T, BASE> & s, int tag) { MPI_Status status; int len; MPI_Probe (MPI_ANY_SOURCE, tag, MPI_COMM_WORLD, &status); int src = status.MPI_SOURCE; MPI_Get_count (&status, MyGetMPIType<T>(), &len); s.SetSize (len); MPI_Recv( &s.First(), len, MyGetMPIType<T>(), src, tag, MPI_COMM_WORLD, &status); return src; }