Exemple #1
0
void ompi_win_set_name_f(MPI_Fint *win, char *win_name, MPI_Fint *ierr,
			int name_len)
{
    int ret, c_ierr;
    char *c_name;
    MPI_Win c_win;

    c_win = PMPI_Win_f2c(*win);

    /* Convert the fortran string */

    if (OMPI_SUCCESS != (ret = ompi_fortran_string_f2c(win_name, name_len,
                                                       &c_name))) {
        c_ierr = OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, ret,
                                        "MPI_WIN_SET_NAME");
        if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);
        return;
    }

    /* Call the C function */

    c_ierr = PMPI_Win_set_name(c_win, c_name);
    if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);

    /* Free the C name */

    free(c_name);
}
Exemple #2
0
void ompi_rput_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 *request,
                 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);
    MPI_Request c_req;

    c_ierr = PMPI_Rput(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, &c_req);
    if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);

    if (MPI_SUCCESS != c_ierr) {
        *request = PMPI_Request_c2f(c_req);
    }
}
Exemple #3
0
void ompi_win_flush_f(MPI_Fint *rank, MPI_Fint *win, MPI_Fint *ierr)
{
    int c_ierr;
    MPI_Win c_win = PMPI_Win_f2c(*win);

    c_ierr = PMPI_Win_flush(OMPI_FINT_2_INT(*rank), c_win);
    if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);
}
void ompi_win_flush_local_all_f(MPI_Fint *win, MPI_Fint *ierr)
{
    int c_ierr;
    MPI_Win c_win = PMPI_Win_f2c(*win);

    c_ierr = PMPI_Win_flush_local_all(c_win);
    if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);
}
Exemple #5
0
void ompi_win_detach_f(MPI_Fint *win, char *base,
		      MPI_Fint *ierr)
{
    int c_ierr;
    MPI_Win c_win;

    c_win = PMPI_Win_f2c(*win);
    c_ierr = PMPI_Win_detach(c_win, base);
    if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);
}
Exemple #6
0
void ompi_win_post_f(MPI_Fint *group, MPI_Fint *assert,
                     MPI_Fint *win, MPI_Fint *ierr)
{
    int c_ierr;
    MPI_Win c_win = PMPI_Win_f2c(*win);
    MPI_Group c_grp = PMPI_Group_f2c(*group);

    c_ierr = PMPI_Win_post(c_grp,
                           OMPI_FINT_2_INT(*assert),
                           c_win);
    if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);
}
Exemple #7
0
void ompi_win_get_group_f(MPI_Fint *win, MPI_Fint *group, MPI_Fint *ierr)
{
    int c_ierr;
    MPI_Group c_grp;
    MPI_Win c_win = PMPI_Win_f2c(*win);

    c_ierr = PMPI_Win_get_group(c_win, &c_grp);
    if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);

    if (MPI_SUCCESS == c_ierr) {
        *group = PMPI_Group_c2f(c_grp);
    }
}
Exemple #8
0
void ompi_win_get_errhandler_f(MPI_Fint *win, MPI_Fint *errhandler,
			      MPI_Fint *ierr)
{
    int c_ierr;
    MPI_Errhandler c_err;
    MPI_Win c_win = PMPI_Win_f2c(*win);

    c_ierr = PMPI_Win_get_errhandler(c_win, &c_err);
    if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);

    if (MPI_SUCCESS == c_ierr) {
        *errhandler = PMPI_Errhandler_c2f(c_err);
    }
}
Exemple #9
0
void ompi_compare_and_swap_f(char *origin_addr, char *compare_addr, char *result_addr,
                             MPI_Fint *datatype, MPI_Fint *target_rank, MPI_Aint *target_disp,
                             MPI_Fint *win, MPI_Fint *ierr)
{
    int c_ierr;
    MPI_Datatype c_datatype = PMPI_Type_f2c(*datatype);
    MPI_Win c_win = PMPI_Win_f2c(*win);

    c_ierr = PMPI_Compare_and_swap(OMPI_F2C_BOTTOM(origin_addr),
                                  OMPI_F2C_BOTTOM(compare_addr),
                                  OMPI_F2C_BOTTOM(result_addr),
                                  c_datatype,
                                  OMPI_FINT_2_INT(*target_rank),
                                  *target_disp, c_win);
    if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);
}
Exemple #10
0
void ompi_win_get_attr_f(MPI_Fint *win, MPI_Fint *win_keyval,
                        MPI_Aint *attribute_val, ompi_fortran_logical_t *flag, MPI_Fint *ierr)
{
    int c_ierr;
    MPI_Win c_win = PMPI_Win_f2c(*win);
    OMPI_LOGICAL_NAME_DECL(flag);

    /* This stuff is very confusing.  Be sure to see the comment at
       the top of src/attributes/attributes.c. */

    c_ierr = ompi_attr_get_fortran_mpi2(c_win->w_keyhash,
                                        OMPI_FINT_2_INT(*win_keyval),
                                        attribute_val,
                                        OMPI_LOGICAL_SINGLE_NAME_CONVERT(flag));
    if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);
    OMPI_SINGLE_INT_2_LOGICAL(flag);
}
Exemple #11
0
void ompi_win_shared_query_f(MPI_Fint *win, MPI_Fint *rank, MPI_Aint *size,
                             MPI_Fint *disp_unit, char *baseptr,
                             MPI_Fint *ierr)
{
    int c_ierr;
    MPI_Win c_win;
    OMPI_SINGLE_NAME_DECL(disp_unit);

    c_win = PMPI_Win_f2c(*win);

    c_ierr = PMPI_Win_shared_query(c_win, OMPI_FINT_2_INT(*rank), size,
                                   OMPI_SINGLE_NAME_CONVERT(disp_unit), baseptr);
    if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);

    if (MPI_SUCCESS == c_ierr) {
        OMPI_SINGLE_INT_2_FINT(disp_unit);
    }
}
Exemple #12
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);
}
Exemple #13
0
void ompi_accumulate_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 *op, MPI_Fint *win,
		      MPI_Fint *ierr)
{
    int ierr_c;

    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);
    MPI_Op c_op = PMPI_Op_f2c(*op);

    ierr_c = PMPI_Accumulate(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_op, c_win);

    if (NULL != ierr) *ierr = OMPI_INT_2_FINT(ierr_c);
}
Exemple #14
0
MPI_Win MPI_Win_f2c(MPI_Fint win){
  return PMPI_Win_f2c(win);
}