1
1

Bunches of fixes for attributes, particularly in terms of language

interoperability

This commit was SVN r2793.
Этот коммит содержится в:
Jeff Squyres 2004-09-21 19:52:19 +00:00
родитель e1406a1d5d
Коммит 208b8410ba
10 изменённых файлов: 186 добавлений и 97 удалений

Просмотреть файл

@ -126,6 +126,8 @@ int ompi_attr_create_predefined(void)
OMPI_SUCCESS != (err = set(MPI_UNIVERSE_SIZE, &attr_universe_size)) ||
#if 0
/* JMS for when we implement windows */
/* JMS BE SURE TO READ ALL OF MPI-2 4.12.7 BEFORE IMPLEMENTING
THESE ADDRESS-VALUED ATTRIBUTES! */
OMPI_SUCCESS != (err = set(MPI_WIN_BASE, &attr_win_base)) ||
OMPI_SUCCESS != (err = set(MPI_WIN_SIZE, &attr_win_size)) ||
OMPI_SUCCESS != (err = set(MPI_WIN_DISP_UNIT, &attr_win_disp_unit)) ||

Просмотреть файл

@ -20,7 +20,7 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_ATTR_GET,
pmpi_attr_get_,
pmpi_attr_get__,
pmpi_attr_get_f,
(MPI_Fint *comm, MPI_Fint *keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fnt *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(comm, keyval, attribute_val, flag, ierr) )
#endif
@ -37,7 +37,7 @@ OMPI_GENERATE_F77_BINDINGS (MPI_ATTR_GET,
mpi_attr_get_,
mpi_attr_get__,
mpi_attr_get_f,
(MPI_Fint *comm, MPI_Fint *keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(comm, keyval, attribute_val, flag, ierr) )
#endif
@ -47,16 +47,38 @@ OMPI_GENERATE_F77_BINDINGS (MPI_ATTR_GET,
#endif
void mpi_attr_get_f(MPI_Fint *comm, MPI_Fint *keyval,
char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr)
MPI_Fint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr)
{
int c_err, c_flag;
MPI_Comm c_comm;
OMPI_SINGLE_NAME_DECL(flag);
int *c_value;
c_comm = MPI_Comm_f2c(*comm);
*ierr = OMPI_INT_2_FINT(MPI_Attr_get(c_comm,
OMPI_FINT_2_INT(*keyval),
attribute_val,
OMPI_SINGLE_NAME_CONVERT(flag)));
OMPI_SINGLE_INT_2_FINT(flag);
/* This stuff is very confusing. Be sure to see MPI-2 4.12.7. */
/* Didn't use all the FINT macros that could have prevented a few
extra variables in this function, but I figured that the
clarity of code, and the fact that this is not expected to be a
high-performance function, was worth it */
/* Note that this function deals with attribute values that are
the size of Fortran INTEGERS; MPI_ATTR_GET deals with attribute
values that are the size of address integers. Hence, it is
possible that you'll lose some precision upon the cast. Per
MPI-2 4.12.7, use MPI_xxx_get/put_attr when you need lossless
conversion. */
c_err = MPI_Attr_get(c_comm, OMPI_FINT_2_INT(*keyval), &c_value, &c_flag);
*ierr = OMPI_INT_2_FINT(c_err);
*flag = OMPI_INT_2_FINT(c_flag);
/* Note that MPI-2 4.12.7 specifically says that Fortran's
ATTR_GET function will take the address returned from C and
"convert it to an integer" (which assumedly means
dereference) */
if (MPI_SUCCESS == c_err && 1 == c_flag) {
*attribute_val = OMPI_INT_2_FINT(*c_value);
}
}

Просмотреть файл

@ -20,7 +20,7 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_ATTR_PUT,
pmpi_attr_put_,
pmpi_attr_put__,
pmpi_attr_put_f,
(MPI_Fint *comm, MPI_Fint *keyval, char *attribute_val, MPI_Fint *ierr),
(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val, MPI_Fint *ierr),
(comm, keyval, attribute_val, ierr) )
#endif
@ -37,7 +37,7 @@ OMPI_GENERATE_F77_BINDINGS (MPI_ATTR_PUT,
mpi_attr_put_,
mpi_attr_put__,
mpi_attr_put_f,
(MPI_Fint *comm, MPI_Fint *keyval, char *attribute_val, MPI_Fint *ierr),
(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val, MPI_Fint *ierr),
(comm, keyval, attribute_val, ierr) )
#endif
@ -46,14 +46,27 @@ OMPI_GENERATE_F77_BINDINGS (MPI_ATTR_PUT,
#include "mpi/f77/profile/defines.h"
#endif
void mpi_attr_put_f(MPI_Fint *comm, MPI_Fint *keyval, char *attribute_val,
void mpi_attr_put_f(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val,
MPI_Fint *ierr)
{
MPI_Comm c_comm;
int *c_value;
c_comm = MPI_Comm_f2c(*comm);
/* This stuff is very confusing. Be sure to see MPI-2 4.12.7. */
/* Note that this function deals with attribute values that are
the size of Fortran INTEGERS; MPI_ATTR_PUT deals with attribute
values that are the size of address integers. Hence, it is
possible that the C value is larger than the Fortran value.
MPI says that we sign-extend in this case. */
c_value = (int *) *attribute_val;
*ierr = OMPI_INT_2_FINT(MPI_Attr_put(c_comm,
OMPI_FINT_2_INT(*keyval),
attribute_val));
if (MPI_SUCCESS == *ierr) {
}
}

Просмотреть файл

@ -20,7 +20,7 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_COMM_GET_ATTR,
pmpi_comm_get_attr_,
pmpi_comm_get_attr__,
pmpi_comm_get_attr_f,
(MPI_Fint *comm, MPI_Fint *comm_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(comm, comm_keyval, attribute_val, flag, ierr) )
#endif
@ -37,7 +37,7 @@ OMPI_GENERATE_F77_BINDINGS (MPI_COMM_GET_ATTR,
mpi_comm_get_attr_,
mpi_comm_get_attr__,
mpi_comm_get_attr_f,
(MPI_Fint *comm, MPI_Fint *comm_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(comm, comm_keyval, attribute_val, flag, ierr) )
#endif
@ -47,17 +47,35 @@ OMPI_GENERATE_F77_BINDINGS (MPI_COMM_GET_ATTR,
#endif
void mpi_comm_get_attr_f(MPI_Fint *comm, MPI_Fint *comm_keyval,
char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr)
MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr)
{
int c_err, c_flag;
MPI_Comm c_comm;
OMPI_SINGLE_NAME_DECL(flag);
int *c_value;
c_comm = MPI_Comm_f2c(*comm);
*ierr = OMPI_INT_2_FINT(MPI_Comm_get_attr(c_comm,
OMPI_FINT_2_INT(*comm_keyval),
attribute_val,
OMPI_SINGLE_NAME_CONVERT(flag)));
/* This stuff is very confusing. Be sure to see MPI-2 4.12.7. */
OMPI_SINGLE_INT_2_FINT(flag);
/* Didn't use all the FINT macros that could have prevented a few
extra variables in this function, but I figured that the
clarity of code, and the fact that this is not expected to be a
high-performance function, was worth it */
/* Note that there is no conversion on attribute_val -- MPI-2 says
that it is supposed to be the right size already */
c_err = MPI_Comm_get_attr(c_comm, OMPI_FINT_2_INT(*comm_keyval),
&c_value, &c_flag);
*ierr = OMPI_INT_2_FINT(c_err);
*flag = OMPI_INT_2_FINT(c_flag);
/* Note that MPI-2 4.12.7 specifically says that Fortran's
xxx_GET_ATTR functions will take the address returned from C
and "convert it to an integer" (which assumedly means
dereference) */
if (MPI_SUCCESS == c_err && 1 == c_flag) {
*attribute_val = (MPI_Aint) *c_value;
}
}

Просмотреть файл

@ -20,7 +20,7 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_COMM_SET_ATTR,
pmpi_comm_set_attr_,
pmpi_comm_set_attr__,
pmpi_comm_set_attr_f,
(MPI_Fint *comm, MPI_Fint *comm_keyval, char *attribute_val, MPI_Fint *ierr),
(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr),
(comm, comm_keyval, attribute_val, ierr) )
#endif
@ -37,7 +37,7 @@ OMPI_GENERATE_F77_BINDINGS (MPI_COMM_SET_ATTR,
mpi_comm_set_attr_,
mpi_comm_set_attr__,
mpi_comm_set_attr_f,
(MPI_Fint *comm, MPI_Fint *comm_keyval, char *attribute_val, MPI_Fint *ierr),
(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr),
(comm, comm_keyval, attribute_val, ierr) )
#endif
@ -47,11 +47,9 @@ OMPI_GENERATE_F77_BINDINGS (MPI_COMM_SET_ATTR,
#endif
void mpi_comm_set_attr_f(MPI_Fint *comm, MPI_Fint *comm_keyval,
char *attribute_val, MPI_Fint *ierr)
MPI_Aint *attribute_val, MPI_Fint *ierr)
{
MPI_Comm c_comm;
c_comm = MPI_Comm_f2c(*comm);
MPI_Comm c_comm = MPI_Comm_f2c(*comm);
*ierr = OMPI_INT_2_FINT(MPI_Comm_set_attr(c_comm,
OMPI_FINT_2_INT(*comm_keyval),

Просмотреть файл

@ -35,8 +35,8 @@ void mpi_alltoall_f(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char
void mpi_alltoallv_f(char *sendbuf, MPI_Fint *sendcounts, MPI_Fint *sdispls, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *rdispls, MPI_Fint *recvtype, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_alltoallw_f(char *sendbuf, MPI_Fint *sendcounts, MPI_Fint *sdispls, MPI_Fint *sendtypes, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *rdispls, MPI_Fint *recvtypes, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_attr_delete_f(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *ierr);
void mpi_attr_get_f(MPI_Fint *comm, MPI_Fint *keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_attr_put_f(MPI_Fint *comm, MPI_Fint *keyval, char *attribute_val, MPI_Fint *ierr);
void mpi_attr_get_f(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_attr_put_f(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val, MPI_Fint *ierr);
void mpi_barrier_f(MPI_Fint *comm, MPI_Fint *ierr);
void mpi_bcast_f(char *buffer, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_bsend_f(char *buf, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *dest, MPI_Fint *tag, MPI_Fint *comm, MPI_Fint *ierr);
@ -65,7 +65,7 @@ void mpi_comm_disconnect_f(MPI_Fint *comm, MPI_Fint *ierr);
void mpi_comm_dup_f(MPI_Fint *comm, MPI_Fint *newcomm, MPI_Fint *ierr);
void mpi_comm_free_keyval_f(MPI_Fint *comm_keyval, MPI_Fint *ierr);
void mpi_comm_free_f(MPI_Fint *comm, MPI_Fint *ierr);
void mpi_comm_get_attr_f(MPI_Fint *comm, MPI_Fint *comm_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_comm_get_attr_f(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_comm_get_errhandler_f(MPI_Fint *comm, MPI_Fint *erhandler, MPI_Fint *ierr);
void mpi_comm_get_name_f(MPI_Fint *comm, char *comm_name, MPI_Fint *resultlen,
MPI_Fint *ierr, int name_len);
@ -75,7 +75,7 @@ void mpi_comm_join_f(MPI_Fint *fd, MPI_Fint *intercomm, MPI_Fint *ierr);
void mpi_comm_rank_f(MPI_Fint *comm, MPI_Fint *rank, MPI_Fint *ierr);
void mpi_comm_remote_group_f(MPI_Fint *comm, MPI_Fint *group, MPI_Fint *ierr);
void mpi_comm_remote_size_f(MPI_Fint *comm, MPI_Fint *size, MPI_Fint *ierr);
void mpi_comm_set_attr_f(MPI_Fint *comm, MPI_Fint *comm_keyval, char *attribute_val, MPI_Fint *ierr);
void mpi_comm_set_attr_f(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr);
void mpi_comm_set_errhandler_f(MPI_Fint *comm, MPI_Fint *errhandler, MPI_Fint *ierr);
void mpi_comm_set_name_f(MPI_Fint *comm, char *comm_name, MPI_Fint *ierr,
int name_len);
@ -263,7 +263,7 @@ void mpi_type_dup_f(MPI_Fint *type, MPI_Fint *newtype, MPI_Fint *ierr);
void mpi_type_extent_f(MPI_Fint *type, MPI_Fint *extent, MPI_Fint *ierr);
void mpi_type_free_f(MPI_Fint *type, MPI_Fint *ierr);
void mpi_type_free_keyval_f(MPI_Fint *type_keyval, MPI_Fint *ierr);
void mpi_type_get_attr_f(MPI_Fint *type, MPI_Fint *type_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_type_get_attr_f(MPI_Fint *type, MPI_Fint *type_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_type_get_contents_f(MPI_Fint *mtype, MPI_Fint *max_integers, MPI_Fint *max_addresses, MPI_Fint *max_datatypes, MPI_Fint *array_of_integers, MPI_Fint *array_of_addresses, MPI_Fint *array_of_datatypes, MPI_Fint *ierr);
void mpi_type_get_envelope_f(MPI_Fint *type, MPI_Fint *num_integers, MPI_Fint *num_addresses, MPI_Fint *num_datatypes, MPI_Fint *combiner, MPI_Fint *ierr);
void mpi_type_get_extent_f(MPI_Fint *type, MPI_Fint *lb, MPI_Fint *extent, MPI_Fint *ierr);
@ -274,7 +274,7 @@ void mpi_type_hvector_f(MPI_Fint *count, MPI_Fint *blocklength, MPI_Fint *stride
void mpi_type_indexed_f(MPI_Fint *count, MPI_Fint *array_of_blocklengths, MPI_Fint *array_of_displacements, MPI_Fint *oldtype, MPI_Fint *newtype, MPI_Fint *ierr);
void mpi_type_lb_f(MPI_Fint *type, MPI_Fint *lb, MPI_Fint *ierr);
void mpi_type_match_size_f(MPI_Fint *typeclass, MPI_Fint *size, MPI_Fint *type, MPI_Fint *ierr);
void mpi_type_set_attr_f(MPI_Fint *type, MPI_Fint *type_keyval, char *attr_val, MPI_Fint *ierr);
void mpi_type_set_attr_f(MPI_Fint *type, MPI_Fint *type_keyval, MPI_Aint *attr_val, MPI_Fint *ierr);
void mpi_type_set_name_f(MPI_Fint *type, char *type_name, MPI_Fint *ierr,
int name_len);
void mpi_type_size_f(MPI_Fint *type, MPI_Fint *size, MPI_Fint *ierr);
@ -297,13 +297,13 @@ void mpi_win_delete_attr_f(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Fint *ierr);
void mpi_win_fence_f(MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_free_f(MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_free_keyval_f(MPI_Fint *win_keyval, MPI_Fint *ierr);
void mpi_win_get_attr_f(MPI_Fint *win, MPI_Fint *win_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_win_get_attr_f(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_win_get_errhandler_f(MPI_Fint *win, MPI_Fint *errhandler, MPI_Fint *ierr);
void mpi_win_get_group_f(MPI_Fint *win, MPI_Fint *group, MPI_Fint *ierr);
void mpi_win_get_name_f(MPI_Fint *win, char *win_name, MPI_Fint *resultlen, MPI_Fint *ierr);
void mpi_win_lock_f(MPI_Fint *lock_type, MPI_Fint *rank, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_post_f(MPI_Fint *group, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_set_attr_f(MPI_Fint *win, MPI_Fint *win_keyval, char *attribute_val, MPI_Fint *ierr);
void mpi_win_set_attr_f(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr);
void mpi_win_set_errhandler_f(MPI_Fint *win, MPI_Fint *errhandler, MPI_Fint *ierr);
void mpi_win_set_name_f(MPI_Fint *win, char *win_name, MPI_Fint *ierr, int name_len);
void mpi_win_start_f(MPI_Fint *group, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
@ -344,8 +344,8 @@ void mpi_alltoall(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *
void mpi_alltoallv(char *sendbuf, MPI_Fint *sendcounts, MPI_Fint *sdispls, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *rdispls, MPI_Fint *recvtype, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_alltoallw(char *sendbuf, MPI_Fint *sendcounts, MPI_Fint *sdispls, MPI_Fint *sendtypes, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *rdispls, MPI_Fint *recvtypes, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_attr_delete(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *ierr);
void mpi_attr_get(MPI_Fint *comm, MPI_Fint *keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_attr_put(MPI_Fint *comm, MPI_Fint *keyval, char *attribute_val, MPI_Fint *ierr);
void mpi_attr_get(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_attr_put(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val, MPI_Fint *ierr);
void mpi_barrier(MPI_Fint *comm, MPI_Fint *ierr);
void mpi_bcast(char *buffer, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_bsend(char *buf, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *dest, MPI_Fint *tag, MPI_Fint *comm, MPI_Fint *ierr);
@ -374,7 +374,7 @@ void mpi_comm_disconnect(MPI_Fint *comm, MPI_Fint *ierr);
void mpi_comm_dup(MPI_Fint *comm, MPI_Fint *newcomm, MPI_Fint *ierr);
void mpi_comm_free_keyval(MPI_Fint *comm_keyval, MPI_Fint *ierr);
void mpi_comm_free(MPI_Fint *comm, MPI_Fint *ierr);
void mpi_comm_get_attr(MPI_Fint *comm, MPI_Fint *comm_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_comm_get_attr(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_comm_get_errhandler(MPI_Fint *comm, MPI_Fint *erhandler, MPI_Fint *ierr);
void mpi_comm_get_name(MPI_Fint *comm, char *comm_name, MPI_Fint *resultlen, MPI_Fint *ierr, int name_len);
void mpi_comm_get_parent(MPI_Fint *parent, MPI_Fint *ierr);
@ -383,7 +383,7 @@ void mpi_comm_join(MPI_Fint *fd, MPI_Fint *intercomm, MPI_Fint *ierr);
void mpi_comm_rank(MPI_Fint *comm, MPI_Fint *rank, MPI_Fint *ierr);
void mpi_comm_remote_group(MPI_Fint *comm, MPI_Fint *group, MPI_Fint *ierr);
void mpi_comm_remote_size(MPI_Fint *comm, MPI_Fint *size, MPI_Fint *ierr);
void mpi_comm_set_attr(MPI_Fint *comm, MPI_Fint *comm_keyval, char *attribute_val, MPI_Fint *ierr);
void mpi_comm_set_attr(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr);
void mpi_comm_set_errhandler(MPI_Fint *comm, MPI_Fint *errhandler, MPI_Fint *ierr);
void mpi_comm_set_name(MPI_Fint *comm, char *comm_name, MPI_Fint *ierr, int name_len);
void mpi_comm_size(MPI_Fint *comm, MPI_Fint *size, MPI_Fint *ierr);
@ -567,7 +567,7 @@ void mpi_type_dup(MPI_Fint *type, MPI_Fint *newtype, MPI_Fint *ierr);
void mpi_type_extent(MPI_Fint *type, MPI_Fint *extent, MPI_Fint *ierr);
void mpi_type_free(MPI_Fint *type, MPI_Fint *ierr);
void mpi_type_free_keyval(MPI_Fint *type_keyval, MPI_Fint *ierr);
void mpi_type_get_attr(MPI_Fint *type, MPI_Fint *type_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_type_get_attr(MPI_Fint *type, MPI_Fint *type_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_type_get_contents(MPI_Fint *mtype, MPI_Fint *max_integers, MPI_Fint *max_addresses, MPI_Fint *max_datatypes, MPI_Fint *array_of_integers, MPI_Fint *array_of_addresses, MPI_Fint *array_of_datatypes, MPI_Fint *ierr);
void mpi_type_get_envelope(MPI_Fint *type, MPI_Fint *num_integers, MPI_Fint *num_addresses, MPI_Fint *num_datatypes, MPI_Fint *combiner, MPI_Fint *ierr);
void mpi_type_get_extent(MPI_Fint *type, MPI_Fint *lb, MPI_Fint *extent, MPI_Fint *ierr);
@ -578,7 +578,7 @@ void mpi_type_hvector(MPI_Fint *count, MPI_Fint *blocklength, MPI_Fint *stride,
void mpi_type_indexed(MPI_Fint *count, MPI_Fint *array_of_blocklengths, MPI_Fint *array_of_displacements, MPI_Fint *oldtype, MPI_Fint *newtype, MPI_Fint *ierr);
void mpi_type_lb(MPI_Fint *type, MPI_Fint *lb, MPI_Fint *ierr);
void mpi_type_match_size(MPI_Fint *typeclass, MPI_Fint *size, MPI_Fint *type, MPI_Fint *ierr);
void mpi_type_set_attr(MPI_Fint *type, MPI_Fint *type_keyval, char *attr_val, MPI_Fint *ierr);
void mpi_type_set_attr(MPI_Fint *type, MPI_Fint *type_keyval, MPI_Aint *attr_val, MPI_Fint *ierr);
void mpi_type_set_name(MPI_Fint *type, char *type_name, MPI_Fint *ierr, int name_len);
void mpi_type_size(MPI_Fint *type, MPI_Fint *size, MPI_Fint *ierr);
void mpi_type_struct(MPI_Fint *count, MPI_Fint *array_of_blocklengths, MPI_Fint *array_of_displacements, MPI_Fint *array_of_types, MPI_Fint *newtype, MPI_Fint *ierr);
@ -600,13 +600,13 @@ void mpi_win_delete_attr(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Fint *ierr);
void mpi_win_fence(MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_free(MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_free_keyval(MPI_Fint *win_keyval, MPI_Fint *ierr);
void mpi_win_get_attr(MPI_Fint *win, MPI_Fint *win_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_win_get_attr(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_win_get_errhandler(MPI_Fint *win, MPI_Fint *errhandler, MPI_Fint *ierr);
void mpi_win_get_group(MPI_Fint *win, MPI_Fint *group, MPI_Fint *ierr);
void mpi_win_get_name(MPI_Fint *win, char *win_name, MPI_Fint *resultlen, MPI_Fint *ierr);
void mpi_win_lock(MPI_Fint *lock_type, MPI_Fint *rank, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_post(MPI_Fint *group, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_set_attr(MPI_Fint *win, MPI_Fint *win_keyval, char *attribute_val, MPI_Fint *ierr);
void mpi_win_set_attr(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr);
void mpi_win_set_errhandler(MPI_Fint *win, MPI_Fint *errhandler, MPI_Fint *ierr);
void mpi_win_set_name(MPI_Fint *win, char *win_name, MPI_Fint *ierr, int name_len);
void mpi_win_start(MPI_Fint *group, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
@ -645,8 +645,8 @@ void mpi_alltoall_(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char
void mpi_alltoallv_(char *sendbuf, MPI_Fint *sendcounts, MPI_Fint *sdispls, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *rdispls, MPI_Fint *recvtype, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_alltoallw_(char *sendbuf, MPI_Fint *sendcounts, MPI_Fint *sdispls, MPI_Fint *sendtypes, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *rdispls, MPI_Fint *recvtypes, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_attr_delete_(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *ierr);
void mpi_attr_get_(MPI_Fint *comm, MPI_Fint *keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_attr_put_(MPI_Fint *comm, MPI_Fint *keyval, char *attribute_val, MPI_Fint *ierr);
void mpi_attr_get_(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_attr_put_(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val, MPI_Fint *ierr);
void mpi_barrier_(MPI_Fint *comm, MPI_Fint *ierr);
void mpi_bcast_(char *buffer, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_bsend_(char *buf, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *dest, MPI_Fint *tag, MPI_Fint *comm, MPI_Fint *ierr);
@ -675,7 +675,7 @@ void mpi_comm_disconnect_(MPI_Fint *comm, MPI_Fint *ierr);
void mpi_comm_dup_(MPI_Fint *comm, MPI_Fint *newcomm, MPI_Fint *ierr);
void mpi_comm_free_keyval_(MPI_Fint *comm_keyval, MPI_Fint *ierr);
void mpi_comm_free_(MPI_Fint *comm, MPI_Fint *ierr);
void mpi_comm_get_attr_(MPI_Fint *comm, MPI_Fint *comm_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_comm_get_attr_(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_comm_get_errhandler_(MPI_Fint *comm, MPI_Fint *erhandler, MPI_Fint *ierr);
void mpi_comm_get_name_(MPI_Fint *comm, char *comm_name, MPI_Fint *resultlen, MPI_Fint *ierr, int name_len);
void mpi_comm_get_parent_(MPI_Fint *parent, MPI_Fint *ierr);
@ -684,7 +684,7 @@ void mpi_comm_join_(MPI_Fint *fd, MPI_Fint *intercomm, MPI_Fint *ierr);
void mpi_comm_rank_(MPI_Fint *comm, MPI_Fint *rank, MPI_Fint *ierr);
void mpi_comm_remote_group_(MPI_Fint *comm, MPI_Fint *group, MPI_Fint *ierr);
void mpi_comm_remote_size_(MPI_Fint *comm, MPI_Fint *size, MPI_Fint *ierr);
void mpi_comm_set_attr_(MPI_Fint *comm, MPI_Fint *comm_keyval, char *attribute_val, MPI_Fint *ierr);
void mpi_comm_set_attr_(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr);
void mpi_comm_set_errhandler_(MPI_Fint *comm, MPI_Fint *errhandler, MPI_Fint *ierr);
void mpi_comm_set_name_(MPI_Fint *comm, char *comm_name, MPI_Fint *ierr, int name_len);
void mpi_comm_size_(MPI_Fint *comm, MPI_Fint *size, MPI_Fint *ierr);
@ -868,7 +868,7 @@ void mpi_type_dup_(MPI_Fint *type, MPI_Fint *newtype, MPI_Fint *ierr);
void mpi_type_extent_(MPI_Fint *type, MPI_Fint *extent, MPI_Fint *ierr);
void mpi_type_free_(MPI_Fint *type, MPI_Fint *ierr);
void mpi_type_free_keyval_(MPI_Fint *type_keyval, MPI_Fint *ierr);
void mpi_type_get_attr_(MPI_Fint *type, MPI_Fint *type_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_type_get_attr_(MPI_Fint *type, MPI_Fint *type_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_type_get_contents_(MPI_Fint *mtype, MPI_Fint *max_integers, MPI_Fint *max_addresses, MPI_Fint *max_datatypes, MPI_Fint *array_of_integers, MPI_Fint *array_of_addresses, MPI_Fint *array_of_datatypes, MPI_Fint *ierr);
void mpi_type_get_envelope_(MPI_Fint *type, MPI_Fint *num_integers, MPI_Fint *num_addresses, MPI_Fint *num_datatypes, MPI_Fint *combiner, MPI_Fint *ierr);
void mpi_type_get_extent_(MPI_Fint *type, MPI_Fint *lb, MPI_Fint *extent, MPI_Fint *ierr);
@ -879,7 +879,7 @@ void mpi_type_hvector_(MPI_Fint *count, MPI_Fint *blocklength, MPI_Fint *stride,
void mpi_type_indexed_(MPI_Fint *count, MPI_Fint *array_of_blocklengths, MPI_Fint *array_of_displacements, MPI_Fint *oldtype, MPI_Fint *newtype, MPI_Fint *ierr);
void mpi_type_lb_(MPI_Fint *type, MPI_Fint *lb, MPI_Fint *ierr);
void mpi_type_match_size_(MPI_Fint *typeclass, MPI_Fint *size, MPI_Fint *type, MPI_Fint *ierr);
void mpi_type_set_attr_(MPI_Fint *type, MPI_Fint *type_keyval, char *attr_val, MPI_Fint *ierr);
void mpi_type_set_attr_(MPI_Fint *type, MPI_Fint *type_keyval, MPI_Aint *attr_val, MPI_Fint *ierr);
void mpi_type_set_name_(MPI_Fint *type, char *type_name, MPI_Fint *ierr, int name_len);
void mpi_type_size_(MPI_Fint *type, MPI_Fint *size, MPI_Fint *ierr);
void mpi_type_struct_(MPI_Fint *count, MPI_Fint *array_of_blocklengths, MPI_Fint *array_of_displacements, MPI_Fint *array_of_types, MPI_Fint *newtype, MPI_Fint *ierr);
@ -901,13 +901,13 @@ void mpi_win_delete_attr_(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Fint *ierr);
void mpi_win_fence_(MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_free_(MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_free_keyval_(MPI_Fint *win_keyval, MPI_Fint *ierr);
void mpi_win_get_attr_(MPI_Fint *win, MPI_Fint *win_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_win_get_attr_(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_win_get_errhandler_(MPI_Fint *win, MPI_Fint *errhandler, MPI_Fint *ierr);
void mpi_win_get_group_(MPI_Fint *win, MPI_Fint *group, MPI_Fint *ierr);
void mpi_win_get_name_(MPI_Fint *win, char *win_name, MPI_Fint *resultlen, MPI_Fint *ierr);
void mpi_win_lock_(MPI_Fint *lock_type, MPI_Fint *rank, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_post_(MPI_Fint *group, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_set_attr_(MPI_Fint *win, MPI_Fint *win_keyval, char *attribute_val, MPI_Fint *ierr);
void mpi_win_set_attr_(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr);
void mpi_win_set_errhandler_(MPI_Fint *win, MPI_Fint *errhandler, MPI_Fint *ierr);
void mpi_win_set_name_(MPI_Fint *win, char *win_name, MPI_Fint *ierr, int name_len);
void mpi_win_start_(MPI_Fint *group, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
@ -946,8 +946,8 @@ void mpi_alltoall__(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char
void mpi_alltoallv__(char *sendbuf, MPI_Fint *sendcounts, MPI_Fint *sdispls, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *rdispls, MPI_Fint *recvtype, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_alltoallw__(char *sendbuf, MPI_Fint *sendcounts, MPI_Fint *sdispls, MPI_Fint *sendtypes, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *rdispls, MPI_Fint *recvtypes, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_attr_delete__(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *ierr);
void mpi_attr_get__(MPI_Fint *comm, MPI_Fint *keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_attr_put__(MPI_Fint *comm, MPI_Fint *keyval, char *attribute_val, MPI_Fint *ierr);
void mpi_attr_get__(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_attr_put__(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val, MPI_Fint *ierr);
void mpi_barrier__(MPI_Fint *comm, MPI_Fint *ierr);
void mpi_bcast__(char *buffer, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_bsend__(char *buf, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *dest, MPI_Fint *tag, MPI_Fint *comm, MPI_Fint *ierr);
@ -976,7 +976,7 @@ void mpi_comm_disconnect__(MPI_Fint *comm, MPI_Fint *ierr);
void mpi_comm_dup__(MPI_Fint *comm, MPI_Fint *newcomm, MPI_Fint *ierr);
void mpi_comm_free_keyval__(MPI_Fint *comm_keyval, MPI_Fint *ierr);
void mpi_comm_free__(MPI_Fint *comm, MPI_Fint *ierr);
void mpi_comm_get_attr__(MPI_Fint *comm, MPI_Fint *comm_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_comm_get_attr__(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_comm_get_errhandler__(MPI_Fint *comm, MPI_Fint *erhandler, MPI_Fint *ierr);
void mpi_comm_get_name__(MPI_Fint *comm, char *comm_name, MPI_Fint *resultlen, MPI_Fint *ierr, int name_len);
void mpi_comm_get_parent__(MPI_Fint *parent, MPI_Fint *ierr);
@ -985,7 +985,7 @@ void mpi_comm_join__(MPI_Fint *fd, MPI_Fint *intercomm, MPI_Fint *ierr);
void mpi_comm_rank__(MPI_Fint *comm, MPI_Fint *rank, MPI_Fint *ierr);
void mpi_comm_remote_group__(MPI_Fint *comm, MPI_Fint *group, MPI_Fint *ierr);
void mpi_comm_remote_size__(MPI_Fint *comm, MPI_Fint *size, MPI_Fint *ierr);
void mpi_comm_set_attr__(MPI_Fint *comm, MPI_Fint *comm_keyval, char *attribute_val, MPI_Fint *ierr);
void mpi_comm_set_attr__(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr);
void mpi_comm_set_errhandler__(MPI_Fint *comm, MPI_Fint *errhandler, MPI_Fint *ierr);
void mpi_comm_set_name__(MPI_Fint *comm, char *comm_name, MPI_Fint *ierr, int name_len);
void mpi_comm_size__(MPI_Fint *comm, MPI_Fint *size, MPI_Fint *ierr);
@ -1169,7 +1169,7 @@ void mpi_type_dup__(MPI_Fint *type, MPI_Fint *newtype, MPI_Fint *ierr);
void mpi_type_extent__(MPI_Fint *type, MPI_Fint *extent, MPI_Fint *ierr);
void mpi_type_free__(MPI_Fint *type, MPI_Fint *ierr);
void mpi_type_free_keyval__(MPI_Fint *type_keyval, MPI_Fint *ierr);
void mpi_type_get_attr__(MPI_Fint *type, MPI_Fint *type_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_type_get_attr__(MPI_Fint *type, MPI_Fint *type_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_type_get_contents__(MPI_Fint *mtype, MPI_Fint *max_integers, MPI_Fint *max_addresses, MPI_Fint *max_datatypes, MPI_Fint *array_of_integers, MPI_Fint *array_of_addresses, MPI_Fint *array_of_datatypes, MPI_Fint *ierr);
void mpi_type_get_envelope__(MPI_Fint *type, MPI_Fint *num_integers, MPI_Fint *num_addresses, MPI_Fint *num_datatypes, MPI_Fint *combiner, MPI_Fint *ierr);
void mpi_type_get_extent__(MPI_Fint *type, MPI_Fint *lb, MPI_Fint *extent, MPI_Fint *ierr);
@ -1180,7 +1180,7 @@ void mpi_type_hvector__(MPI_Fint *count, MPI_Fint *blocklength, MPI_Fint *stride
void mpi_type_indexed__(MPI_Fint *count, MPI_Fint *array_of_blocklengths, MPI_Fint *array_of_displacements, MPI_Fint *oldtype, MPI_Fint *newtype, MPI_Fint *ierr);
void mpi_type_lb__(MPI_Fint *type, MPI_Fint *lb, MPI_Fint *ierr);
void mpi_type_match_size__(MPI_Fint *typeclass, MPI_Fint *size, MPI_Fint *type, MPI_Fint *ierr);
void mpi_type_set_attr__(MPI_Fint *type, MPI_Fint *type_keyval, char *attr_val, MPI_Fint *ierr);
void mpi_type_set_attr__(MPI_Fint *type, MPI_Fint *type_keyval, MPI_Aint *attr_val, MPI_Fint *ierr);
void mpi_type_set_name__(MPI_Fint *type, char *type_name, MPI_Fint *ierr, int name_len);
void mpi_type_size__(MPI_Fint *type, MPI_Fint *size, MPI_Fint *ierr);
void mpi_type_struct__(MPI_Fint *count, MPI_Fint *array_of_blocklengths, MPI_Fint *array_of_displacements, MPI_Fint *array_of_types, MPI_Fint *newtype, MPI_Fint *ierr);
@ -1202,13 +1202,13 @@ void mpi_win_delete_attr__(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Fint *ierr);
void mpi_win_fence__(MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_free__(MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_free_keyval__(MPI_Fint *win_keyval, MPI_Fint *ierr);
void mpi_win_get_attr__(MPI_Fint *win, MPI_Fint *win_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_win_get_attr__(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void mpi_win_get_errhandler__(MPI_Fint *win, MPI_Fint *errhandler, MPI_Fint *ierr);
void mpi_win_get_group__(MPI_Fint *win, MPI_Fint *group, MPI_Fint *ierr);
void mpi_win_get_name__(MPI_Fint *win, char *win_name, MPI_Fint *resultlen, MPI_Fint *ierr);
void mpi_win_lock__(MPI_Fint *lock_type, MPI_Fint *rank, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_post__(MPI_Fint *group, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
void mpi_win_set_attr__(MPI_Fint *win, MPI_Fint *win_keyval, char *attribute_val, MPI_Fint *ierr);
void mpi_win_set_attr__(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr);
void mpi_win_set_errhandler__(MPI_Fint *win, MPI_Fint *errhandler, MPI_Fint *ierr);
void mpi_win_set_name__(MPI_Fint *win, char *win_name, MPI_Fint *ierr, int name_len);
void mpi_win_start__(MPI_Fint *group, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
@ -1247,8 +1247,8 @@ void MPI_ALLTOALL(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *
void MPI_ALLTOALLV(char *sendbuf, MPI_Fint *sendcounts, MPI_Fint *sdispls, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *rdispls, MPI_Fint *recvtype, MPI_Fint *comm, MPI_Fint *ierr);
void MPI_ALLTOALLW(char *sendbuf, MPI_Fint *sendcounts, MPI_Fint *sdispls, MPI_Fint *sendtypes, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *rdispls, MPI_Fint *recvtypes, MPI_Fint *comm, MPI_Fint *ierr);
void MPI_ATTR_DELETE(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *ierr);
void MPI_ATTR_GET(MPI_Fint *comm, MPI_Fint *keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void MPI_ATTR_PUT(MPI_Fint *comm, MPI_Fint *keyval, char *attribute_val, MPI_Fint *ierr);
void MPI_ATTR_GET(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void MPI_ATTR_PUT(MPI_Fint *comm, MPI_Fint *keyval, MPI_Fint *attribute_val, MPI_Fint *ierr);
void MPI_BARRIER(MPI_Fint *comm, MPI_Fint *ierr);
void MPI_BCAST(char *buffer, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void MPI_BSEND(char *buf, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *dest, MPI_Fint *tag, MPI_Fint *comm, MPI_Fint *ierr);
@ -1277,7 +1277,7 @@ void MPI_COMM_DISCONNECT(MPI_Fint *comm, MPI_Fint *ierr);
void MPI_COMM_DUP(MPI_Fint *comm, MPI_Fint *newcomm, MPI_Fint *ierr);
void MPI_COMM_FREE_KEYVAL(MPI_Fint *comm_keyval, MPI_Fint *ierr);
void MPI_COMM_FREE(MPI_Fint *comm, MPI_Fint *ierr);
void MPI_COMM_GET_ATTR(MPI_Fint *comm, MPI_Fint *comm_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void MPI_COMM_GET_ATTR(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void MPI_COMM_GET_ERRHANDLER(MPI_Fint *comm, MPI_Fint *erhandler, MPI_Fint *ierr);
void MPI_COMM_GET_NAME(MPI_Fint *comm, char *comm_name, MPI_Fint *resultlen, MPI_Fint *ierr, int name_len);
void MPI_COMM_GET_PARENT(MPI_Fint *parent, MPI_Fint *ierr);
@ -1286,7 +1286,7 @@ void MPI_COMM_JOIN(MPI_Fint *fd, MPI_Fint *intercomm, MPI_Fint *ierr);
void MPI_COMM_RANK(MPI_Fint *comm, MPI_Fint *rank, MPI_Fint *ierr);
void MPI_COMM_REMOTE_GROUP(MPI_Fint *comm, MPI_Fint *group, MPI_Fint *ierr);
void MPI_COMM_REMOTE_SIZE(MPI_Fint *comm, MPI_Fint *size, MPI_Fint *ierr);
void MPI_COMM_SET_ATTR(MPI_Fint *comm, MPI_Fint *comm_keyval, char *attribute_val, MPI_Fint *ierr);
void MPI_COMM_SET_ATTR(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr);
void MPI_COMM_SET_ERRHANDLER(MPI_Fint *comm, MPI_Fint *errhandler, MPI_Fint *ierr);
void MPI_COMM_SET_NAME(MPI_Fint *comm, char *comm_name, MPI_Fint *ierr, int name_len);
void MPI_COMM_SIZE(MPI_Fint *comm, MPI_Fint *size, MPI_Fint *ierr);
@ -1470,7 +1470,7 @@ void MPI_TYPE_DUP(MPI_Fint *type, MPI_Fint *newtype, MPI_Fint *ierr);
void MPI_TYPE_EXTENT(MPI_Fint *type, MPI_Fint *extent, MPI_Fint *ierr);
void MPI_TYPE_FREE(MPI_Fint *type, MPI_Fint *ierr);
void MPI_TYPE_FREE_KEYVAL(MPI_Fint *type_keyval, MPI_Fint *ierr);
void MPI_TYPE_GET_ATTR(MPI_Fint *type, MPI_Fint *type_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void MPI_TYPE_GET_ATTR(MPI_Fint *type, MPI_Fint *type_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void MPI_TYPE_GET_CONTENTS(MPI_Fint *mtype, MPI_Fint *max_integers, MPI_Fint *max_addresses, MPI_Fint *max_datatypes, MPI_Fint *array_of_integers, MPI_Fint *array_of_addresses, MPI_Fint *array_of_datatypes, MPI_Fint *ierr);
void MPI_TYPE_GET_ENVELOPE(MPI_Fint *type, MPI_Fint *num_integers, MPI_Fint *num_addresses, MPI_Fint *num_datatypes, MPI_Fint *combiner, MPI_Fint *ierr);
void MPI_TYPE_GET_EXTENT(MPI_Fint *type, MPI_Fint *lb, MPI_Fint *extent, MPI_Fint *ierr);
@ -1481,7 +1481,7 @@ void MPI_TYPE_HVECTOR(MPI_Fint *count, MPI_Fint *blocklength, MPI_Fint *stride,
void MPI_TYPE_INDEXED(MPI_Fint *count, MPI_Fint *array_of_blocklengths, MPI_Fint *array_of_displacements, MPI_Fint *oldtype, MPI_Fint *newtype, MPI_Fint *ierr);
void MPI_TYPE_LB(MPI_Fint *type, MPI_Fint *lb, MPI_Fint *ierr);
void MPI_TYPE_MATCH_SIZE(MPI_Fint *typeclass, MPI_Fint *size, MPI_Fint *type, MPI_Fint *ierr);
void MPI_TYPE_SET_ATTR(MPI_Fint *type, MPI_Fint *type_keyval, char *attr_val, MPI_Fint *ierr);
void MPI_TYPE_SET_ATTR(MPI_Fint *type, MPI_Fint *type_keyval, MPI_Aint *attr_val, MPI_Fint *ierr);
void MPI_TYPE_SET_NAME(MPI_Fint *type, char *type_name, MPI_Fint *ierr, int name_len);
void MPI_TYPE_SIZE(MPI_Fint *type, MPI_Fint *size, MPI_Fint *ierr);
void MPI_TYPE_STRUCT(MPI_Fint *count, MPI_Fint *array_of_blocklengths, MPI_Fint *array_of_displacements, MPI_Fint *array_of_types, MPI_Fint *newtype, MPI_Fint *ierr);
@ -1503,13 +1503,13 @@ void MPI_WIN_DELETE_ATTR(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Fint *ierr);
void MPI_WIN_FENCE(MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
void MPI_WIN_FREE(MPI_Fint *win, MPI_Fint *ierr);
void MPI_WIN_FREE_KEYVAL(MPI_Fint *win_keyval, MPI_Fint *ierr);
void MPI_WIN_GET_ATTR(MPI_Fint *win, MPI_Fint *win_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void MPI_WIN_GET_ATTR(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr);
void MPI_WIN_GET_ERRHANDLER(MPI_Fint *win, MPI_Fint *errhandler, MPI_Fint *ierr);
void MPI_WIN_GET_GROUP(MPI_Fint *win, MPI_Fint *group, MPI_Fint *ierr);
void MPI_WIN_GET_NAME(MPI_Fint *win, char *win_name, MPI_Fint *resultlen, MPI_Fint *ierr);
void MPI_WIN_LOCK(MPI_Fint *lock_type, MPI_Fint *rank, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
void MPI_WIN_POST(MPI_Fint *group, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);
void MPI_WIN_SET_ATTR(MPI_Fint *win, MPI_Fint *win_keyval, char *attribute_val, MPI_Fint *ierr);
void MPI_WIN_SET_ATTR(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr);
void MPI_WIN_SET_ERRHANDLER(MPI_Fint *win, MPI_Fint *errhandler, MPI_Fint *ierr);
void MPI_WIN_SET_NAME(MPI_Fint *win, char *win_name, MPI_Fint *ierr, int name_len);
void MPI_WIN_START(MPI_Fint *group, MPI_Fint *assert, MPI_Fint *win, MPI_Fint *ierr);

Просмотреть файл

@ -20,7 +20,7 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_TYPE_GET_ATTR,
pmpi_type_get_attr_,
pmpi_type_get_attr__,
pmpi_type_get_attr_f,
(MPI_Fint *type, MPI_Fint *type_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(MPI_Fint *type, MPI_Fint *type_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(type, type_keyval, attribute_val, flag, ierr) )
#endif
@ -37,7 +37,7 @@ OMPI_GENERATE_F77_BINDINGS (MPI_TYPE_GET_ATTR,
mpi_type_get_attr_,
mpi_type_get_attr__,
mpi_type_get_attr_f,
(MPI_Fint *type, MPI_Fint *type_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(MPI_Fint *type, MPI_Fint *type_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(type, type_keyval, attribute_val, flag, ierr) )
#endif
@ -47,15 +47,35 @@ OMPI_GENERATE_F77_BINDINGS (MPI_TYPE_GET_ATTR,
#endif
void mpi_type_get_attr_f(MPI_Fint *type, MPI_Fint *type_keyval,
char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr)
MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr)
{
MPI_Datatype c_type = MPI_Type_f2c( *type );
OMPI_SINGLE_NAME_DECL(flag);
int c_err, c_flag;
MPI_Datatype c_type;
int *c_value;
*ierr = OMPI_INT_2_FINT(MPI_Type_get_attr(c_type,
OMPI_FINT_2_INT(*type_keyval),
attribute_val,
OMPI_SINGLE_NAME_CONVERT(flag)));
c_type = MPI_Type_f2c(*type);
OMPI_SINGLE_INT_2_FINT(flag);
/* This stuff is very confusing. Be sure to see MPI-2 4.12.7. */
/* Didn't use all the FINT macros that could have prevented a few
extra variables in this function, but I figured that the
clarity of code, and the fact that this is not expected to be a
high-performance function, was worth it */
/* Note that there is no conversion on attribute_val -- MPI-2 says
that it is supposed to be the right size already */
c_err = MPI_Type_get_attr(c_type, OMPI_FINT_2_INT(*type_keyval),
&c_value, &c_flag);
*ierr = OMPI_INT_2_FINT(c_err);
*flag = OMPI_INT_2_FINT(c_flag);
/* Note that MPI-2 4.12.7 specifically says that Fortran's
xxx_GET_ATTR functions will take the address returned from C
and "convert it to an integer" (which assumedly means
dereference) */
if (MPI_SUCCESS == c_err && 1 == c_flag) {
*attribute_val = (MPI_Aint) *c_value;
}
}

Просмотреть файл

@ -20,7 +20,7 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_TYPE_SET_ATTR,
pmpi_type_set_attr_,
pmpi_type_set_attr__,
pmpi_type_set_attr_f,
(MPI_Fint *type, MPI_Fint *type_keyval, char *attr_val, MPI_Fint *ierr),
(MPI_Fint *type, MPI_Fint *type_keyval, MPI_Aint *attr_val, MPI_Fint *ierr),
(type, type_keyval, attr_val, ierr) )
#endif
@ -37,7 +37,7 @@ OMPI_GENERATE_F77_BINDINGS (MPI_TYPE_SET_ATTR,
mpi_type_set_attr_,
mpi_type_set_attr__,
mpi_type_set_attr_f,
(MPI_Fint *type, MPI_Fint *type_keyval, char *attr_val, MPI_Fint *ierr),
(MPI_Fint *type, MPI_Fint *type_keyval, MPI_Aint *attr_val, MPI_Fint *ierr),
(type, type_keyval, attr_val, ierr) )
#endif
@ -46,15 +46,11 @@ OMPI_GENERATE_F77_BINDINGS (MPI_TYPE_SET_ATTR,
#include "mpi/f77/profile/defines.h"
#endif
void mpi_type_set_attr_f(MPI_Fint *type, MPI_Fint *type_keyval, char *attr_val, MPI_Fint *ierr)
void mpi_type_set_attr_f(MPI_Fint *type, MPI_Fint *type_keyval, MPI_Aint *attr_val, MPI_Fint *ierr)
{
MPI_Datatype c_type = MPI_Type_f2c( *type );
*ierr = OMPI_INT_2_FINT(MPI_Type_set_attr( c_type,
OMPI_FINT_2_INT(*type_keyval),
attr_val ));
if (MPI_SUCCESS == *ierr) {
*type = MPI_Type_c2f( c_type );
}
}

Просмотреть файл

@ -20,7 +20,7 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_GET_ATTR,
pmpi_win_get_attr_,
pmpi_win_get_attr__,
pmpi_win_get_attr_f,
(MPI_Fint *win, MPI_Fint *win_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(win, win_keyval, attribute_val, flag, ierr) )
#endif
@ -37,7 +37,7 @@ OMPI_GENERATE_F77_BINDINGS (MPI_WIN_GET_ATTR,
mpi_win_get_attr_,
mpi_win_get_attr__,
mpi_win_get_attr_f,
(MPI_Fint *win, MPI_Fint *win_keyval, char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr),
(win, win_keyval, attribute_val, flag, ierr) )
#endif
@ -47,15 +47,35 @@ OMPI_GENERATE_F77_BINDINGS (MPI_WIN_GET_ATTR,
#endif
void mpi_win_get_attr_f(MPI_Fint *win, MPI_Fint *win_keyval,
char *attribute_val, MPI_Fint *flag, MPI_Fint *ierr)
MPI_Aint *attribute_val, MPI_Fint *flag, MPI_Fint *ierr)
{
MPI_Win c_win = MPI_Win_f2c( *win );
OMPI_SINGLE_NAME_DECL(flag);
int c_err, c_flag;
MPI_Win c_win;
int *c_value;
*ierr = OMPI_INT_2_FINT(MPI_Win_get_attr( c_win,
OMPI_FINT_2_INT(*win_keyval),
attribute_val,
OMPI_SINGLE_NAME_CONVERT(flag) ));
c_win = MPI_Win_f2c(*win);
OMPI_SINGLE_INT_2_FINT(flag);
/* This stuff is very confusing. Be sure to see MPI-2 4.12.7. */
/* Didn't use all the FINT macros that could have prevented a few
extra variables in this function, but I figured that the
clarity of code, and the fact that this is not expected to be a
high-performance function, was worth it */
/* Note that there is no conversion on attribute_val -- MPI-2 says
that it is supposed to be the right size already */
c_err = MPI_Win_get_attr(c_win, OMPI_FINT_2_INT(*win_keyval),
&c_value, &c_flag);
*ierr = OMPI_INT_2_FINT(c_err);
*flag = OMPI_INT_2_FINT(c_flag);
/* Note that MPI-2 4.12.7 specifically says that Fortran's
xxx_GET_ATTR functions will take the address returned from C
and "convert it to an integer" (which assumedly means
dereference) */
if (MPI_SUCCESS == c_err && 1 == c_flag) {
*attribute_val = (MPI_Aint) *c_value;
}
}

Просмотреть файл

@ -20,7 +20,7 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_SET_ATTR,
pmpi_win_set_attr_,
pmpi_win_set_attr__,
pmpi_win_set_attr_f,
(MPI_Fint *win, MPI_Fint *win_keyval, char *attribute_val, MPI_Fint *ierr),
(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr),
(win, win_keyval, attribute_val, ierr) )
#endif
@ -37,7 +37,7 @@ OMPI_GENERATE_F77_BINDINGS (MPI_WIN_SET_ATTR,
mpi_win_set_attr_,
mpi_win_set_attr__,
mpi_win_set_attr_f,
(MPI_Fint *win, MPI_Fint *win_keyval, char *attribute_val, MPI_Fint *ierr),
(MPI_Fint *win, MPI_Fint *win_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr),
(win, win_keyval, attribute_val, ierr) )
#endif
@ -47,7 +47,7 @@ OMPI_GENERATE_F77_BINDINGS (MPI_WIN_SET_ATTR,
#endif
void mpi_win_set_attr_f(MPI_Fint *win, MPI_Fint *win_keyval,
char *attribute_val, MPI_Fint *ierr)
MPI_Aint *attribute_val, MPI_Fint *ierr)
{
MPI_Win c_win = MPI_Win_f2c( *win );