Beispiel #1
0
void ompi_sendrecv_replace_f(char *buf, MPI_Fint *count, MPI_Fint *datatype,
			    MPI_Fint *dest, MPI_Fint *sendtag,
			    MPI_Fint *source, MPI_Fint *recvtag,
			    MPI_Fint *comm, MPI_Fint *status, MPI_Fint *ierr)
{
   int c_ierr;
   MPI_Datatype c_type = PMPI_Type_f2c(*datatype);
   MPI_Comm c_comm;
   MPI_Status c_status;

   c_comm = PMPI_Comm_f2c (*comm);

   c_ierr = PMPI_Sendrecv_replace(OMPI_F2C_BOTTOM(buf),
                                 OMPI_FINT_2_INT(*count),
                                 c_type,
                                 OMPI_FINT_2_INT(*dest),
                                 OMPI_FINT_2_INT(*sendtag),
                                 OMPI_FINT_2_INT(*source),
                                 OMPI_FINT_2_INT(*recvtag),
                                 c_comm, &c_status);
   if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);

   if (MPI_SUCCESS == c_ierr &&
        !OMPI_IS_FORTRAN_STATUS_IGNORE(status)) {
      PMPI_Status_c2f(&c_status, status);
   }
}
Beispiel #2
0
int MPI_Sendrecv_replace(void *buf, int count, MPI_Datatype datatype,
                         int dst, int sendtag, int src, int recvtag,
                         MPI_Comm comm, MPI_Status * status)
{
  return PMPI_Sendrecv_replace(buf, count, datatype, dst, sendtag, src,
                               recvtag, comm, status);
}
Beispiel #3
0
int MPI_Sendrecv_replace(void *buf, int count, MPI_Datatype datatype, int dest, int sendtag, int source, int recvtag,
                         MPI_Comm comm, MPI_Status *status)
{
    int err;
    ALLOCATE_STATUS(newstatus,1)
    err=PMPI_Sendrecv_replace(buf,count,datatype,dest,sendtag,source,recvtag,comm,newstatus);
    COPY_STATUS(status,newstatus,1)
    return err;
}
Beispiel #4
0
int  MPI_Sendrecv_replace(void *buf, int count, MPI_Datatype datatype, int dest,
			  int sendtag, int source, int recvtag,
			  MPI_Comm comm, MPI_Status *status)
{
  int  returnVal;
  int size1;
  int typesize2;

  
  
  returnVal = PMPI_Sendrecv_replace( buf, count, datatype, dest, sendtag, source, recvtag, comm, status );

  if (dest != MPI_PROC_NULL && returnVal == MPI_SUCCESS) {
    MPI_Type_size( datatype, &typesize2 );
    prof_send( procid_1, dest, sendtag,
	       typesize2*count, "MPI_Sendrecv_replace" );
    MPI_Get_count( status, MPI_BYTE, &size1 );
    prof_recv( dest, procid_1, recvtag, size1,
	       "MPI_Sendrecv_replace" );
  }

  return returnVal;
}