Exemplo n.º 1
0
int MPI_Put(const void* origin_addr, int origin_count, MPI_Datatype origin_datatype,
            int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win)
{
    int ret;
    client_t* myclient = window_get_client(win);
    cqueue_t* mycqueue = client_get_cqueue(myclient);

    if (myclient == NULL)
        ret = PMPI_Put(origin_addr, origin_count, origin_datatype,
                       target_rank, target_disp, target_count, target_datatype, win);
    else
        ret = cqueue_put(mycqueue, origin_addr, origin_count, origin_datatype,
                         target_rank, target_disp, target_count, target_datatype, win);

    return ret;
}
Exemplo n.º 2
0
void ompi_put_f(char *origin_addr, MPI_Fint *origin_count,
	       MPI_Fint *origin_datatype, MPI_Fint *target_rank,
	       MPI_Aint *target_disp, MPI_Fint *target_count,
	       MPI_Fint *target_datatype, MPI_Fint *win, MPI_Fint *ierr)
{
   int c_ierr;
   MPI_Datatype c_origin_datatype = PMPI_Type_f2c(*origin_datatype);
   MPI_Datatype c_target_datatype = PMPI_Type_f2c(*target_datatype);
   MPI_Win c_win = PMPI_Win_f2c(*win);

   c_ierr = PMPI_Put(OMPI_F2C_BOTTOM(origin_addr),
                    OMPI_FINT_2_INT(*origin_count),
                    c_origin_datatype,
                    OMPI_FINT_2_INT(*target_rank),
                    *target_disp,
                    OMPI_FINT_2_INT(*target_count),
                    c_target_datatype, c_win);
   if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);
}
int MPI_Put_C_Wrapper (void *origin_addr, int origin_count, MPI_Datatype origin_datatype,
  int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype,
	MPI_Win win)
{
	int ierror;

	int origin_datatype_size, target_datatype_size;

	ierror = PMPI_Type_size(origin_datatype, &origin_datatype_size);
	MPI_CHECK(ierror, PMPI_Type_size);
	
	ierror = PMPI_Type_size(target_datatype, &target_datatype_size);
	MPI_CHECK(ierror, PMPI_Type_size);

	TRACE_MPIEVENT(LAST_READ_TIME, MPI_PUT_EV, EVT_BEGIN, target_rank, target_datatype_size * target_count, EMPTY, target_disp * target_datatype_size, origin_addr);
	ierror = PMPI_Put (origin_addr, origin_count, origin_datatype, target_rank,
		target_disp, target_count, target_datatype, win);
	TRACE_MPIEVENT(TIME, MPI_PUT_EV, EVT_END, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY);

	updateStats_OTHER(global_mpi_stats);

	return ierror;
}
Exemplo n.º 4
0
int MPI_Put( void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank,
    MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win){
  return PMPI_Put( origin_addr,origin_count, origin_datatype,target_rank,
      target_disp, target_count,target_datatype, win);
}