1
1

fixing the fortran interface for MPI_Get_address. Since the address

argument is defined to be 

integer (KIND=MPI_ADDRESS_KIND)

we have to map that to an MPI_Aint in the f->c interface, else the
typecast back from the C to the Fortran interface will be wrong as well.
The same holds (at least) for all other new MPI-2 datatype functions
which take a byte-displacement or an address as an argument.

This commit was SVN r8243.
Этот коммит содержится в:
Edgar Gabriel 2005-11-23 03:22:50 +00:00
родитель b6ddb73f38
Коммит a1b00e0a49
3 изменённых файлов: 14 добавлений и 14 удалений

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

@ -31,7 +31,7 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_GET_ADDRESS,
pmpi_get_address_,
pmpi_get_address__,
pmpi_get_address_f,
(char *location, MPI_Fint *address, MPI_Fint *ierr),
(char *location, MPI_Aint *address, MPI_Fint *ierr),
(location, address, ierr) )
#endif
@ -48,7 +48,7 @@ OMPI_GENERATE_F77_BINDINGS (MPI_GET_ADDRESS,
mpi_get_address_,
mpi_get_address__,
mpi_get_address_f,
(char *location, MPI_Fint *address, MPI_Fint *ierr),
(char *location, MPI_Aint *address, MPI_Fint *ierr),
(location, address, ierr) )
#endif
@ -57,12 +57,12 @@ OMPI_GENERATE_F77_BINDINGS (MPI_GET_ADDRESS,
#include "mpi/f77/profile/defines.h"
#endif
void mpi_get_address_f(char *location, MPI_Fint *address, MPI_Fint *ierr)
void mpi_get_address_f(char *location, MPI_Aint *address, MPI_Fint *ierr)
{
MPI_Aint c_address;
*ierr = OMPI_INT_2_FINT(MPI_Get_address(location, &c_address));
if (MPI_SUCCESS == OMPI_FINT_2_INT(*ierr)) {
*address = (MPI_Fint) c_address;
*address = (MPI_Aint) c_address;
}
}

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

@ -178,7 +178,7 @@ void pmpi_finalized_f(MPI_Fint *flag, MPI_Fint *ierr);
void pmpi_free_mem_f(char *base, MPI_Fint *ierr);
void pmpi_gather_f(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcount, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void pmpi_gatherv_f(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *displs, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void pmpi_get_address_f(char *location, MPI_Fint *address, MPI_Fint *ierr);
void pmpi_get_address_f(char *location, MPI_Aint *address, MPI_Fint *ierr);
void pmpi_get_count_f(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void pmpi_get_elements_f(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void pmpi_get_f(char *origin_addr, MPI_Fint *origin_count, MPI_Fint *origin_datatype, MPI_Fint *target_rank, MPI_Fint *target_disp, MPI_Fint *target_count, MPI_Fint *target_datatype, MPI_Fint *win, MPI_Fint *ierr);
@ -465,7 +465,7 @@ void pmpi_finalized(MPI_Fint *flag, MPI_Fint *ierr);
void pmpi_free_mem(char *base, MPI_Fint *ierr);
void pmpi_gather(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcount, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void pmpi_gatherv(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *displs, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void pmpi_get_address(char *location, MPI_Fint *address, MPI_Fint *ierr);
void pmpi_get_address(char *location, MPI_Aint *address, MPI_Fint *ierr);
void pmpi_get_count(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void pmpi_get_elements(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void pmpi_get(char *origin_addr, MPI_Fint *origin_count, MPI_Fint *origin_datatype, MPI_Fint *target_rank, MPI_Fint *target_disp, MPI_Fint *target_count, MPI_Fint *target_datatype, MPI_Fint *win, MPI_Fint *ierr);
@ -752,7 +752,7 @@ void pmpi_finalized_(MPI_Fint *flag, MPI_Fint *ierr);
void pmpi_free_mem_(char *base, MPI_Fint *ierr);
void pmpi_gather_(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcount, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void pmpi_gatherv_(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *displs, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void pmpi_get_address_(char *location, MPI_Fint *address, MPI_Fint *ierr);
void pmpi_get_address_(char *location, MPI_Aint *address, MPI_Fint *ierr);
void pmpi_get_count_(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void pmpi_get_elements_(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void pmpi_get_(char *origin_addr, MPI_Fint *origin_count, MPI_Fint *origin_datatype, MPI_Fint *target_rank, MPI_Fint *target_disp, MPI_Fint *target_count, MPI_Fint *target_datatype, MPI_Fint *win, MPI_Fint *ierr);
@ -1039,7 +1039,7 @@ void pmpi_finalized__(MPI_Fint *flag, MPI_Fint *ierr);
void pmpi_free_mem__(char *base, MPI_Fint *ierr);
void pmpi_gather__(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcount, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void pmpi_gatherv__(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *displs, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void pmpi_get_address__(char *location, MPI_Fint *address, MPI_Fint *ierr);
void pmpi_get_address__(char *location, MPI_Aint *address, MPI_Fint *ierr);
void pmpi_get_count__(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void pmpi_get_elements__(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void pmpi_get__(char *origin_addr, MPI_Fint *origin_count, MPI_Fint *origin_datatype, MPI_Fint *target_rank, MPI_Fint *target_disp, MPI_Fint *target_count, MPI_Fint *target_datatype, MPI_Fint *win, MPI_Fint *ierr);
@ -1326,7 +1326,7 @@ void PMPI_FINALIZED(MPI_Fint *flag, MPI_Fint *ierr);
void PMPI_FREE_MEM(char *base, MPI_Fint *ierr);
void PMPI_GATHER(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcount, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void PMPI_GATHERV(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *displs, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void PMPI_GET_ADDRESS(char *location, MPI_Fint *address, MPI_Fint *ierr);
void PMPI_GET_ADDRESS(char *location, MPI_Aint *address, MPI_Fint *ierr);
void PMPI_GET_COUNT(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void PMPI_GET_ELEMENTS(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void PMPI_GET(char *origin_addr, MPI_Fint *origin_count, MPI_Fint *origin_datatype, MPI_Fint *target_rank, MPI_Fint *target_disp, MPI_Fint *target_count, MPI_Fint *target_datatype, MPI_Fint *win, MPI_Fint *ierr);

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

@ -179,7 +179,7 @@ void mpi_finalized_f(MPI_Fint *flag, MPI_Fint *ierr);
void mpi_free_mem_f(char *base, MPI_Fint *ierr);
void mpi_gather_f(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcount, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_gatherv_f(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *displs, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_get_address_f(char *location, MPI_Fint *address, MPI_Fint *ierr);
void mpi_get_address_f(char *location, MPI_Aint *address, MPI_Fint *ierr);
void mpi_get_count_f(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void mpi_get_elements_f(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void mpi_get_f(char *origin_addr, MPI_Fint *origin_count, MPI_Fint *origin_datatype, MPI_Fint *target_rank, MPI_Fint *target_disp, MPI_Fint *target_count, MPI_Fint *target_datatype, MPI_Fint *win, MPI_Fint *ierr);
@ -483,7 +483,7 @@ void mpi_finalized(MPI_Fint *flag, MPI_Fint *ierr);
void mpi_free_mem(char *base, MPI_Fint *ierr);
void mpi_gather(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcount, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_gatherv(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *displs, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_get_address(char *location, MPI_Fint *address, MPI_Fint *ierr);
void mpi_get_address(char *location, MPI_Aint *address, MPI_Fint *ierr);
void mpi_get_count(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void mpi_get_elements(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void mpi_get(char *origin_addr, MPI_Fint *origin_count, MPI_Fint *origin_datatype, MPI_Fint *target_rank, MPI_Fint *target_disp, MPI_Fint *target_count, MPI_Fint *target_datatype, MPI_Fint *win, MPI_Fint *ierr);
@ -784,7 +784,7 @@ void mpi_finalized_(MPI_Fint *flag, MPI_Fint *ierr);
void mpi_free_mem_(char *base, MPI_Fint *ierr);
void mpi_gather_(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcount, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_gatherv_(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *displs, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_get_address_(char *location, MPI_Fint *address, MPI_Fint *ierr);
void mpi_get_address_(char *location, MPI_Aint *address, MPI_Fint *ierr);
void mpi_get_count_(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void mpi_get_elements_(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void mpi_get_(char *origin_addr, MPI_Fint *origin_count, MPI_Fint *origin_datatype, MPI_Fint *target_rank, MPI_Fint *target_disp, MPI_Fint *target_count, MPI_Fint *target_datatype, MPI_Fint *win, MPI_Fint *ierr);
@ -1085,7 +1085,7 @@ void mpi_finalized__(MPI_Fint *flag, MPI_Fint *ierr);
void mpi_free_mem__(char *base, MPI_Fint *ierr);
void mpi_gather__(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcount, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_gatherv__(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *displs, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void mpi_get_address__(char *location, MPI_Fint *address, MPI_Fint *ierr);
void mpi_get_address__(char *location, MPI_Aint *address, MPI_Fint *ierr);
void mpi_get_count__(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void mpi_get_elements__(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void mpi_get__(char *origin_addr, MPI_Fint *origin_count, MPI_Fint *origin_datatype, MPI_Fint *target_rank, MPI_Fint *target_disp, MPI_Fint *target_count, MPI_Fint *target_datatype, MPI_Fint *win, MPI_Fint *ierr);
@ -1386,7 +1386,7 @@ void MPI_FINALIZED(MPI_Fint *flag, MPI_Fint *ierr);
void MPI_FREE_MEM(char *base, MPI_Fint *ierr);
void MPI_GATHER(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcount, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void MPI_GATHERV(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype, char *recvbuf, MPI_Fint *recvcounts, MPI_Fint *displs, MPI_Fint *recvtype, MPI_Fint *root, MPI_Fint *comm, MPI_Fint *ierr);
void MPI_GET_ADDRESS(char *location, MPI_Fint *address, MPI_Fint *ierr);
void MPI_GET_ADDRESS(char *location, MPI_Aint *address, MPI_Fint *ierr);
void MPI_GET_COUNT(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void MPI_GET_ELEMENTS(MPI_Fint *status, MPI_Fint *datatype, MPI_Fint *count, MPI_Fint *ierr);
void MPI_GET(char *origin_addr, MPI_Fint *origin_count, MPI_Fint *origin_datatype, MPI_Fint *target_rank, MPI_Fint *target_disp, MPI_Fint *target_count, MPI_Fint *target_datatype, MPI_Fint *win, MPI_Fint *ierr);