Skip to content
This repository was archived by the owner on Sep 30, 2022. It is now read-only.

Commit e9c8e08

Browse files
committed
Merge pull request #1083 from kawashima-fj/pr/v2.x/fortran-binding-fix
v2.x: fortran: Fix many Fortran binding bugs
2 parents 97f5501 + 670c2ee commit e9c8e08

File tree

7 files changed

+740
-365
lines changed

7 files changed

+740
-365
lines changed

ompi/mpi/fortran/base/attr-fn-int-callback-interfaces.h

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,15 @@ interface
2121

2222
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2323

24+
subroutine MPI_DUP_FN( comm, comm_keyval, extra_state, &
25+
attribute_val_in, attribute_val_out, &
26+
flag, ierr )
27+
implicit none
28+
integer :: comm, comm_keyval, extra_state
29+
integer :: attribute_val_in, attribute_val_out, ierr
30+
logical :: flag
31+
end subroutine MPI_DUP_FN
32+
2433
subroutine MPI_NULL_COPY_FN( comm, comm_keyval, extra_state, &
2534
attribute_val_in, attribute_val_out, &
2635
flag, ierr )
@@ -40,6 +49,17 @@ interface
4049

4150
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4251

52+
subroutine MPI_COMM_DUP_FN(oldcomm, comm_keyval, extra_state, attribute_val_in, &
53+
attribute_val_out, flag, ierr )
54+
implicit none
55+
include 'mpif-config.h'
56+
integer :: oldcomm
57+
integer :: comm_keyval
58+
integer(kind=MPI_ADDRESS_KIND) :: extra_state, attribute_val_in, attribute_val_out
59+
logical :: flag
60+
integer :: ierr
61+
end subroutine MPI_COMM_DUP_FN
62+
4363
subroutine MPI_COMM_NULL_COPY_FN( comm, comm_keyval, extra_state, &
4464
attribute_val_in, attribute_val_out, &
4565
flag, ierr )
@@ -62,17 +82,6 @@ interface
6282
integer :: ierr
6383
end subroutine MPI_COMM_NULL_DELETE_FN
6484

65-
subroutine MPI_COMM_DUP_FN(oldcomm, comm_keyval, extra_state, attribute_val_in, &
66-
attribute_val_out, flag, ierr )
67-
implicit none
68-
include 'mpif-config.h'
69-
integer :: oldcomm
70-
integer :: comm_keyval
71-
integer(kind=MPI_ADDRESS_KIND) :: extra_state, attribute_val_in, attribute_val_out
72-
logical :: flag
73-
integer :: ierr
74-
end subroutine MPI_COMM_DUP_FN
75-
7685
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
7786

7887
subroutine MPI_TYPE_DUP_FN( oldtype, type_keyval, extra_state, &

ompi/mpi/fortran/mpif-h/alloc_mem_f.c

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,16 @@
3030
#pragma weak pmpi_alloc_mem_ = ompi_alloc_mem_f
3131
#pragma weak pmpi_alloc_mem__ = ompi_alloc_mem_f
3232

33-
/* Extra pragmas for the _cptr variant from MPI-3.1 */
33+
#pragma weak PMPI_Alloc_mem_f = ompi_alloc_mem_f
34+
#pragma weak PMPI_Alloc_mem_f08 = ompi_alloc_mem_f
35+
3436
#pragma weak PMPI_ALLOC_MEM_CPTR = ompi_alloc_mem_f
3537
#pragma weak pmpi_alloc_mem_cptr = ompi_alloc_mem_f
3638
#pragma weak pmpi_alloc_mem_cptr_ = ompi_alloc_mem_f
3739
#pragma weak pmpi_alloc_mem_cptr__ = ompi_alloc_mem_f
3840

39-
#pragma weak PMPI_Alloc_mem_f = ompi_alloc_mem_f
40-
#pragma weak PMPI_Alloc_mem_f08 = ompi_alloc_mem_f
41+
#pragma weak PMPI_Alloc_mem_cptr_f = ompi_alloc_mem_f
42+
#pragma weak PMPI_Alloc_mem_cptr_f08 = ompi_alloc_mem_f
4143
#else
4244
OMPI_GENERATE_F77_BINDINGS (PMPI_ALLOC_MEM,
4345
pmpi_alloc_mem,
@@ -51,7 +53,7 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_ALLOC_MEM_CPTR,
5153
pmpi_alloc_mem_cptr,
5254
pmpi_alloc_mem_cptr_,
5355
pmpi_alloc_mem_cptr__,
54-
pompi_alloc_mem_f,
56+
pompi_alloc_mem_cptr_f,
5557
(MPI_Aint *size, MPI_Fint *info, char *baseptr, MPI_Fint *ierr),
5658
(size, info, baseptr, ierr) )
5759
#endif
@@ -63,14 +65,16 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_ALLOC_MEM_CPTR,
6365
#pragma weak mpi_alloc_mem_ = ompi_alloc_mem_f
6466
#pragma weak mpi_alloc_mem__ = ompi_alloc_mem_f
6567

66-
/* Extra pragmas for the _cptr variant from MPI-3.1 */
68+
#pragma weak MPI_Alloc_mem_f = ompi_alloc_mem_f
69+
#pragma weak MPI_Alloc_mem_f08 = ompi_alloc_mem_f
70+
6771
#pragma weak MPI_ALLOC_MEM_CPTR = ompi_alloc_mem_f
6872
#pragma weak mpi_alloc_mem_cptr = ompi_alloc_mem_f
6973
#pragma weak mpi_alloc_mem_cptr_ = ompi_alloc_mem_f
7074
#pragma weak mpi_alloc_mem_cptr__ = ompi_alloc_mem_f
7175

72-
#pragma weak MPI_Alloc_mem_f = ompi_alloc_mem_f
73-
#pragma weak MPI_Alloc_mem_f08 = ompi_alloc_mem_f
76+
#pragma weak MPI_Alloc_mem_cptr_f = ompi_alloc_mem_f
77+
#pragma weak MPI_Alloc_mem_cptr_f08 = ompi_alloc_mem_f
7478
#else
7579
#if ! OMPI_BUILD_MPI_PROFILING
7680
OMPI_GENERATE_F77_BINDINGS (MPI_ALLOC_MEM,
@@ -85,11 +89,12 @@ OMPI_GENERATE_F77_BINDINGS (MPI_ALLOC_MEM_CPTR,
8589
mpi_alloc_mem_cptr,
8690
mpi_alloc_mem_cptr_,
8791
mpi_alloc_mem_cptr__,
88-
ompi_alloc_mem_f,
92+
ompi_alloc_mem_cptr_f,
8993
(MPI_Aint *size, MPI_Fint *info, char *baseptr, MPI_Fint *ierr),
9094
(size, info, baseptr, ierr) )
9195
#else
9296
#define ompi_alloc_mem_f pompi_alloc_mem_f
97+
#define ompi_alloc_mem_cptr_f pompi_alloc_mem_cptr_f
9398
#endif
9499
#endif
95100

@@ -102,3 +107,12 @@ void ompi_alloc_mem_f(MPI_Aint *size, MPI_Fint *info, char *baseptr, MPI_Fint *i
102107
ierr_c = PMPI_Alloc_mem(*size, c_info, baseptr);
103108
if (NULL != ierr) *ierr = OMPI_INT_2_FINT(ierr_c);
104109
}
110+
111+
/*
112+
* Note that MPI-3 mandates a second form of the
113+
* MPI_Alloc_mem interface -- one that has a "_cptr" suffix.
114+
*/
115+
void ompi_alloc_mem_cptr_f(MPI_Aint *size, MPI_Fint *info, char *baseptr, MPI_Fint *ierr)
116+
{
117+
ompi_alloc_mem_f(size, info, baseptr, ierr);
118+
}

ompi/mpi/fortran/mpif-h/win_attach_f.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
#pragma weak pmpi_win_attach_ = ompi_win_attach_f
2020
#pragma weak pmpi_win_attach__ = ompi_win_attach_f
2121

22-
#pragma weak PMPI_Win_create_f = ompi_win_attach_f
23-
#pragma weak PMPI_Win_create_f08 = ompi_win_attach_f
22+
#pragma weak PMPI_Win_attach_f = ompi_win_attach_f
23+
#pragma weak PMPI_Win_attach_f08 = ompi_win_attach_f
2424
#else
2525
OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_ATTACH,
2626
pmpi_win_attach,
@@ -38,8 +38,8 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_ATTACH,
3838
#pragma weak mpi_win_attach_ = ompi_win_attach_f
3939
#pragma weak mpi_win_attach__ = ompi_win_attach_f
4040

41-
#pragma weak MPI_Win_create_f = ompi_win_attach_f
42-
#pragma weak MPI_Win_create_f08 = ompi_win_attach_f
41+
#pragma weak MPI_Win_attach_f = ompi_win_attach_f
42+
#pragma weak MPI_Win_attach_f08 = ompi_win_attach_f
4343
#else
4444
#if ! OMPI_BUILD_MPI_PROFILING
4545
OMPI_GENERATE_F77_BINDINGS (MPI_WIN_ATTACH,

ompi/mpi/fortran/mpif-h/win_detach_f.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
#pragma weak pmpi_win_detach_ = ompi_win_detach_f
2020
#pragma weak pmpi_win_detach__ = ompi_win_detach_f
2121

22-
#pragma weak PMPI_Win_create_f = ompi_win_detach_f
23-
#pragma weak PMPI_Win_create_f08 = ompi_win_detach_f
22+
#pragma weak PMPI_Win_detach_f = ompi_win_detach_f
23+
#pragma weak PMPI_Win_detach_f08 = ompi_win_detach_f
2424
#else
2525
OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_DETACH,
2626
pmpi_win_detach,
@@ -38,8 +38,8 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_DETACH,
3838
#pragma weak mpi_win_detach_ = ompi_win_detach_f
3939
#pragma weak mpi_win_detach__ = ompi_win_detach_f
4040

41-
#pragma weak MPI_Win_create_f = ompi_win_detach_f
42-
#pragma weak MPI_Win_create_f08 = ompi_win_detach_f
41+
#pragma weak MPI_Win_detach_f = ompi_win_detach_f
42+
#pragma weak MPI_Win_detach_f08 = ompi_win_detach_f
4343
#else
4444
#if ! OMPI_BUILD_MPI_PROFILING
4545
OMPI_GENERATE_F77_BINDINGS (MPI_WIN_DETACH,

ompi/mpi/fortran/mpif-h/win_get_info_f.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
#pragma weak pmpi_win_get_info_ = ompi_win_get_info_f
2020
#pragma weak pmpi_win_get_info__ = ompi_win_get_info_f
2121

22-
#pragma weak PMPI_Win_create_f = ompi_win_get_info_f
23-
#pragma weak PMPI_Win_create_f08 = ompi_win_get_info_f
22+
#pragma weak PMPI_Win_get_info_f = ompi_win_get_info_f
23+
#pragma weak PMPI_Win_get_info_f08 = ompi_win_get_info_f
2424
#else
2525
OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_GET_INFO,
2626
pmpi_win_get_info,
@@ -38,8 +38,8 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_GET_INFO,
3838
#pragma weak mpi_win_get_info_ = ompi_win_get_info_f
3939
#pragma weak mpi_win_get_info__ = ompi_win_get_info_f
4040

41-
#pragma weak MPI_Win_create_f = ompi_win_get_info_f
42-
#pragma weak MPI_Win_create_f08 = ompi_win_get_info_f
41+
#pragma weak MPI_Win_get_info_f = ompi_win_get_info_f
42+
#pragma weak MPI_Win_get_info_f08 = ompi_win_get_info_f
4343
#else
4444
#if ! OMPI_BUILD_MPI_PROFILING
4545
OMPI_GENERATE_F77_BINDINGS (MPI_WIN_GET_INFO,

ompi/mpi/fortran/mpif-h/win_set_info_f.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
#pragma weak pmpi_win_set_info_ = ompi_win_set_info_f
2020
#pragma weak pmpi_win_set_info__ = ompi_win_set_info_f
2121

22-
#pragma weak PMPI_Win_create_f = ompi_win_set_info_f
23-
#pragma weak PMPI_Win_create_f08 = ompi_win_set_info_f
22+
#pragma weak PMPI_Win_set_info_f = ompi_win_set_info_f
23+
#pragma weak PMPI_Win_set_info_f08 = ompi_win_set_info_f
2424
#else
2525
OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_SET_INFO,
2626
pmpi_win_set_info,
@@ -38,8 +38,8 @@ OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_SET_INFO,
3838
#pragma weak mpi_win_set_info_ = ompi_win_set_info_f
3939
#pragma weak mpi_win_set_info__ = ompi_win_set_info_f
4040

41-
#pragma weak MPI_Win_create_f = ompi_win_set_info_f
42-
#pragma weak MPI_Win_create_f08 = ompi_win_set_info_f
41+
#pragma weak MPI_Win_set_info_f = ompi_win_set_info_f
42+
#pragma weak MPI_Win_set_info_f08 = ompi_win_set_info_f
4343
#else
4444
#if ! OMPI_BUILD_MPI_PROFILING
4545
OMPI_GENERATE_F77_BINDINGS (MPI_WIN_SET_INFO,

0 commit comments

Comments
 (0)