2004-04-16 06:33:49 +04:00
|
|
|
/*
|
2004-11-22 04:38:40 +03:00
|
|
|
* Copyright (c) 2004-2005 The Trustees of Indiana University.
|
|
|
|
* All rights reserved.
|
|
|
|
* Copyright (c) 2004-2005 The Trustees of the University of Tennessee.
|
|
|
|
* All rights reserved.
|
2004-11-28 23:09:25 +03:00
|
|
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
|
|
* University of Stuttgart. All rights reserved.
|
2005-03-24 15:43:37 +03:00
|
|
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
|
|
|
* All rights reserved.
|
2004-11-22 04:38:40 +03:00
|
|
|
* $COPYRIGHT$
|
|
|
|
*
|
|
|
|
* Additional copyrights may follow
|
|
|
|
*
|
2004-04-16 06:33:49 +04:00
|
|
|
* $HEADER$
|
|
|
|
*/
|
|
|
|
|
2004-06-07 19:33:53 +04:00
|
|
|
#include "ompi_config.h"
|
2004-04-16 06:33:49 +04:00
|
|
|
|
|
|
|
#include "mpi/f77/bindings.h"
|
|
|
|
|
2004-06-07 19:33:53 +04:00
|
|
|
#if OMPI_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER
|
2004-04-16 06:33:49 +04:00
|
|
|
#pragma weak PMPI_COMM_SET_ATTR = mpi_comm_set_attr_f
|
|
|
|
#pragma weak pmpi_comm_set_attr = mpi_comm_set_attr_f
|
|
|
|
#pragma weak pmpi_comm_set_attr_ = mpi_comm_set_attr_f
|
|
|
|
#pragma weak pmpi_comm_set_attr__ = mpi_comm_set_attr_f
|
2004-06-07 19:33:53 +04:00
|
|
|
#elif OMPI_PROFILE_LAYER
|
|
|
|
OMPI_GENERATE_F77_BINDINGS (PMPI_COMM_SET_ATTR,
|
2004-04-16 06:33:49 +04:00
|
|
|
pmpi_comm_set_attr,
|
|
|
|
pmpi_comm_set_attr_,
|
|
|
|
pmpi_comm_set_attr__,
|
|
|
|
pmpi_comm_set_attr_f,
|
2004-09-21 23:52:19 +04:00
|
|
|
(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr),
|
2004-04-16 06:33:49 +04:00
|
|
|
(comm, comm_keyval, attribute_val, ierr) )
|
|
|
|
#endif
|
|
|
|
|
2004-06-07 19:33:53 +04:00
|
|
|
#if OMPI_HAVE_WEAK_SYMBOLS
|
2004-04-16 06:33:49 +04:00
|
|
|
#pragma weak MPI_COMM_SET_ATTR = mpi_comm_set_attr_f
|
|
|
|
#pragma weak mpi_comm_set_attr = mpi_comm_set_attr_f
|
|
|
|
#pragma weak mpi_comm_set_attr_ = mpi_comm_set_attr_f
|
|
|
|
#pragma weak mpi_comm_set_attr__ = mpi_comm_set_attr_f
|
|
|
|
#endif
|
|
|
|
|
2004-06-07 19:33:53 +04:00
|
|
|
#if ! OMPI_HAVE_WEAK_SYMBOLS && ! OMPI_PROFILE_LAYER
|
|
|
|
OMPI_GENERATE_F77_BINDINGS (MPI_COMM_SET_ATTR,
|
2004-04-16 06:33:49 +04:00
|
|
|
mpi_comm_set_attr,
|
|
|
|
mpi_comm_set_attr_,
|
|
|
|
mpi_comm_set_attr__,
|
|
|
|
mpi_comm_set_attr_f,
|
2004-09-21 23:52:19 +04:00
|
|
|
(MPI_Fint *comm, MPI_Fint *comm_keyval, MPI_Aint *attribute_val, MPI_Fint *ierr),
|
2004-04-16 06:33:49 +04:00
|
|
|
(comm, comm_keyval, attribute_val, ierr) )
|
|
|
|
#endif
|
|
|
|
|
2004-04-20 22:50:43 +04:00
|
|
|
|
2004-06-07 19:33:53 +04:00
|
|
|
#if OMPI_PROFILE_LAYER && ! OMPI_HAVE_WEAK_SYMBOLS
|
2004-07-18 00:10:03 +04:00
|
|
|
#include "mpi/f77/profile/defines.h"
|
2004-04-20 22:50:43 +04:00
|
|
|
#endif
|
|
|
|
|
2004-09-02 05:17:31 +04:00
|
|
|
void mpi_comm_set_attr_f(MPI_Fint *comm, MPI_Fint *comm_keyval,
|
2004-09-21 23:52:19 +04:00
|
|
|
MPI_Aint *attribute_val, MPI_Fint *ierr)
|
2004-04-16 06:33:49 +04:00
|
|
|
{
|
2004-09-21 23:52:19 +04:00
|
|
|
MPI_Comm c_comm = MPI_Comm_f2c(*comm);
|
2004-09-02 05:17:31 +04:00
|
|
|
|
Many fixes to MPI attributes. This mainly affected the following
areas:
- The MPI attribute functions in f77 (the MPI-2 set, get,
keyval_create functions for each of the 3 types [comm, datatype,
win], and the MPI-1 put/get functions)
- the src/attribute/* back-end implementation
- MPI_TYPE_DUP implementation
- back-end ddt implementation
Here are the foxes:
- F77 attributes were previously being saved by reference (!)
- Until a few days ago, I didn't realize that the Fortran callback
functions between MPI-1 and MPI-2 had different signatures. These
changes update to handle all 3 kinds of callback functions: C, MPI-1
Fortran, and MPI-2 fortran.
- Also clean up a few related bugs with respect to MPI_TYPE_DUP (i.e.,
ensure that all attribute callbacks are properly invoked) and
ompi_ddt_duplicate (ensure that flags, f2c index, and keyhash are
all set properly).
This commit was SVN r6099.
2005-06-20 20:41:28 +04:00
|
|
|
/* We save fortran attributes by value, so dereference
|
|
|
|
attribute_val. MPI-2 guarantees that xxx_SET_ATTR will be
|
|
|
|
called in fortran with an address-sized integer parameter for
|
|
|
|
the attribute, so there's no need to do any size conversions
|
|
|
|
before calling the back-end C function. */
|
|
|
|
|
2004-09-02 05:17:31 +04:00
|
|
|
*ierr = OMPI_INT_2_FINT(MPI_Comm_set_attr(c_comm,
|
|
|
|
OMPI_FINT_2_INT(*comm_keyval),
|
Many fixes to MPI attributes. This mainly affected the following
areas:
- The MPI attribute functions in f77 (the MPI-2 set, get,
keyval_create functions for each of the 3 types [comm, datatype,
win], and the MPI-1 put/get functions)
- the src/attribute/* back-end implementation
- MPI_TYPE_DUP implementation
- back-end ddt implementation
Here are the foxes:
- F77 attributes were previously being saved by reference (!)
- Until a few days ago, I didn't realize that the Fortran callback
functions between MPI-1 and MPI-2 had different signatures. These
changes update to handle all 3 kinds of callback functions: C, MPI-1
Fortran, and MPI-2 fortran.
- Also clean up a few related bugs with respect to MPI_TYPE_DUP (i.e.,
ensure that all attribute callbacks are properly invoked) and
ompi_ddt_duplicate (ensure that flags, f2c index, and keyhash are
all set properly).
This commit was SVN r6099.
2005-06-20 20:41:28 +04:00
|
|
|
(void*) *attribute_val));
|
2004-04-16 06:33:49 +04:00
|
|
|
}
|