Skip to content

Commit 996c0dc

Browse files
committed
ulfm: add fortran interfaces to ack/get_failed
Signed-off-by: Aurelien Bouteiller <bouteill@icl.utk.edu>
1 parent 8fe26b4 commit 996c0dc

11 files changed

+330
-5
lines changed

ompi/mpiext/ftmpi/mpif-h/Makefile.am

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#
22
# Copyright (c) 2010-2012 Oak Ridge National Labs. All rights reserved.
3-
# Copyright (c) 2016-2020 The University of Tennessee and The University
3+
# Copyright (c) 2016-2022 The University of Tennessee and The University
44
# of Tennessee Research Foundation. All rights
55
# reserved.
66
# $COPYRIGHT$
@@ -24,6 +24,8 @@ f77_sources = \
2424
comm_revoke_f.c \
2525
comm_is_revoked_f.c \
2626
comm_shrink_f.c \
27+
comm_get_failed_f.c \
28+
comm_ack_failed_f.c \
2729
comm_failure_ack_f.c \
2830
comm_failure_get_acked_f.c \
2931
comm_agree_f.c \
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* Copyright (c) 2022 The University of Tennessee and the University
3+
* of Tennessee Research Foundation. All rights
4+
* reserved.
5+
* $COPYRIGHT$
6+
*
7+
* Additional copyrights may follow
8+
*
9+
* $HEADER$
10+
*/
11+
#include "ompi_config.h"
12+
13+
#include "ompi/mpi/fortran/mpif-h/bindings.h"
14+
#include "ompi/mpi/fortran/base/constants.h"
15+
#include "ompi/mpiext/ftmpi/c/mpiext_ftmpi_c.h"
16+
#include "ompi/mpiext/ftmpi/mpif-h/prototypes_mpi.h"
17+
18+
#if OPAL_HAVE_WEAK_SYMBOLS
19+
#pragma weak PMPIX_COMM_ACK_FAILED = ompix_comm_ack_failed_f
20+
#pragma weak pmpix_comm_ack_failed = ompix_comm_ack_failed_f
21+
#pragma weak pmpix_comm_ack_failed_ = ompix_comm_ack_failed_f
22+
#pragma weak pmpix_comm_ack_failed__ = ompix_comm_ack_failed_f
23+
#pragma weak PMPIX_Comm_ack_failed_f = ompix_comm_ack_failed_f
24+
#pragma weak PMPIX_Comm_ack_failed_f08 = ompix_comm_ack_failed_f
25+
26+
#pragma weak MPIX_COMM_ACK_FAILED = ompix_comm_ack_failed_f
27+
#pragma weak mpix_comm_ack_failed = ompix_comm_ack_failed_f
28+
#pragma weak mpix_comm_ack_failed_ = ompix_comm_ack_failed_f
29+
#pragma weak mpix_comm_ack_failed__ = ompix_comm_ack_failed_f
30+
#pragma weak MPIX_Comm_ack_failed_f = ompix_comm_ack_failed_f
31+
#pragma weak MPIX_Comm_ack_failed_f08 = ompix_comm_ack_failed_f
32+
33+
#else /* No weak symbols */
34+
OMPI_GENERATE_F77_BINDINGS(PMPIX_COMM_ACK_FAILED,
35+
pmpix_comm_ack_failed,
36+
pmpix_comm_ack_failed_,
37+
pmpix_comm_ack_failed__,
38+
ompix_comm_ack_failed_f,
39+
(MPI_Fint *comm, MPI_Fint *num_to_ack, MPI_Fint *num_acked, MPI_Fint *ierr),
40+
(comm, num_to_ack, num_acked, ierr))
41+
42+
OMPI_GENERATE_F77_BINDINGS(MPIX_COMM_ACK_FAILED,
43+
mpix_comm_ack_failed,
44+
mpix_comm_ack_failed_,
45+
mpix_comm_ack_failed__,
46+
ompix_comm_ack_failed_f,
47+
(MPI_Fint *comm, MPI_Fint *num_to_ack, MPI_Fint *num_acked, MPI_Fint *ierr),
48+
(comm, num_to_ack, num_acked, ierr))
49+
#endif
50+
51+
void ompix_comm_ack_failed_f(MPI_Fint *comm, MPI_Fint *num_to_ack, MPI_Fint *num_acked, MPI_Fint *ierr)
52+
{
53+
MPI_Comm c_comm = PMPI_Comm_f2c(*comm);
54+
55+
*ierr = OMPI_INT_2_FINT(PMPIX_Comm_ack_failed(c_comm, OMPI_FINT_2_INT(*num_to_ack), OMPI_PFINT_2_PINT(num_acked)));
56+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/*
2+
* Copyright (c) 2022 The University of Tennessee and the University
3+
* of Tennessee Research Foundation. All rights
4+
* reserved.
5+
* $COPYRIGHT$
6+
*
7+
* Additional copyrights may follow
8+
*
9+
* $HEADER$
10+
*/
11+
#include "ompi_config.h"
12+
13+
#include "ompi/mpi/fortran/mpif-h/bindings.h"
14+
#include "ompi/mpi/fortran/base/constants.h"
15+
#include "ompi/mpiext/ftmpi/c/mpiext_ftmpi_c.h"
16+
#include "ompi/mpiext/ftmpi/mpif-h/prototypes_mpi.h"
17+
18+
#if OPAL_HAVE_WEAK_SYMBOLS
19+
#pragma weak PMPIX_COMM_GET_FAILED = ompix_comm_get_failed_f
20+
#pragma weak pmpix_comm_get_failed = ompix_comm_get_failed_f
21+
#pragma weak pmpix_comm_get_failed_ = ompix_comm_get_failed_f
22+
#pragma weak pmpix_comm_get_failed__ = ompix_comm_get_failed_f
23+
#pragma weak PMPIX_Comm_get_failed_f = ompix_comm_get_failed_f
24+
#pragma weak PMPIX_Comm_get_failed_f08 = ompix_comm_get_failed_f
25+
26+
#pragma weak MPIX_COMM_GET_FAILED = ompix_comm_get_failed_f
27+
#pragma weak mpix_comm_get_failed = ompix_comm_get_failed_f
28+
#pragma weak mpix_comm_get_failed_ = ompix_comm_get_failed_f
29+
#pragma weak mpix_comm_get_failed__ = ompix_comm_get_failed_f
30+
#pragma weak MPIX_Comm_get_failed_f = ompix_comm_get_failed_f
31+
#pragma weak MPIX_Comm_get_failed_f08 = ompix_comm_get_failed_f
32+
33+
#else /* No weak symbols */
34+
OMPI_GENERATE_F77_BINDINGS(PMPIX_COMM_GET_FAILED,
35+
pmpix_comm_get_failed,
36+
pmpix_comm_get_failed_,
37+
pmpix_comm_get_failed__,
38+
ompix_comm_get_failed_f,
39+
(MPI_Fint *comm, MPI_Fint *group, MPI_Fint *ierr),
40+
(comm, group, ierr))
41+
42+
OMPI_GENERATE_F77_BINDINGS(MPIX_COMM_GET_FAILED,
43+
mpix_comm_get_failed,
44+
mpix_comm_get_failed_,
45+
mpix_comm_get_failed__,
46+
ompix_comm_get_failed_f,
47+
(MPI_Fint *comm, MPI_Fint *group, MPI_Fint *ierr),
48+
(comm, group, ierr))
49+
#endif
50+
51+
void ompix_comm_get_failed_f(MPI_Fint *comm, MPI_Fint *group, MPI_Fint *ierr)
52+
{
53+
MPI_Group c_group;
54+
MPI_Comm c_comm = PMPI_Comm_f2c(*comm);
55+
56+
*ierr = OMPI_INT_2_FINT(PMPIX_Comm_get_failed(c_comm,
57+
&c_group));
58+
if (MPI_SUCCESS == OMPI_FINT_2_INT(*ierr)) {
59+
*group = PMPI_Group_c2f (c_group);
60+
}
61+
}

ompi/mpiext/ftmpi/mpif-h/prototypes_mpi.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2019 The University of Tennessee and The University
2+
* Copyright (c) 2019-2022 The University of Tennessee and The University
33
* of Tennessee Research Foundation. All rights
44
* reserved.
55
* $COPYRIGHT$
@@ -46,6 +46,9 @@ PN2(void, MPIX_Comm_iagree, mpix_comm_iagree, MPIX_COMM_IAGREE, (MPI_Fint *comm,
4646
PN2(void, MPIX_Comm_is_revoked, mpix_comm_is_revoked, MPIX_COMM_IS_REVOKED, (MPI_Fint *comm, ompi_fortran_logical_t *flag, MPI_Fint *ierr));
4747
PN2(void, MPIX_Comm_revoke, mpix_comm_revoke, MPIX_COMM_REVOKE, (MPI_Fint *comm, MPI_Fint *ierr));
4848
PN2(void, MPIX_Comm_shrink, mpix_comm_shrink, MPIX_COMM_SHRINK, (MPI_Fint *comm, MPI_Fint *newcomm, MPI_Fint *ierr));
49+
PN2(void, MPIX_Comm_get_failed, mpix_comm_get_failed, MPIX_COMM_GET_FAILED, (MPI_Fint *comm, MPI_Fint *group, MPI_Fint *ierr));
50+
PN2(void, MPIX_Comm_ack_failed, mpix_comm_ack_failed, MPI_COMM_ACK_FAILED, (MPI_Fint *comm, MPI_Fint *num_to_ack, MPI_Fint *num_acked, MPI_Fint *ierr));
51+
4952

5053
END_C_DECLS
5154

ompi/mpiext/ftmpi/use-mpi-f08/Makefile.am

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# Copyright (c) 2017-2018 Research Organization for Information Science
44
# and Technology (RIST). All rights reserved.
55
# Copyright (c) 2018 FUJITSU LIMITED. All rights reserved.
6-
# Copyright (c) 2018 The University of Tennessee and The University
6+
# Copyright (c) 2018-2022 The University of Tennessee and The University
77
# of Tennessee Research Foundation. All rights
88
# reserved.
99
# Copyright (c) 2022 IBM Corporation. All rights reserved.
@@ -58,6 +58,8 @@ mpi_api_files = \
5858
comm_is_revoked_f08.F90 \
5959
comm_failure_ack_f08.F90 \
6060
comm_failure_get_acked_f08.F90 \
61+
comm_get_failed_f08.F90 \
62+
comm_ack_failed_f08.F90 \
6163
comm_agree_f08.F90 \
6264
comm_iagree_f08.F90 \
6365
comm_shrink_f08.F90
@@ -67,6 +69,8 @@ pmpi_api_files = \
6769
profile/pcomm_is_revoked_f08.F90 \
6870
profile/pcomm_failure_ack_f08.F90 \
6971
profile/pcomm_failure_get_acked_f08.F90 \
72+
profile/pcomm_get_failed_f08.F90 \
73+
profile/pcomm_ack_failed_f08.F90 \
7074
profile/pcomm_agree_f08.F90 \
7175
profile/pcomm_iagree_f08.F90 \
7276
profile/pcomm_shrink_f08.F90
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
! -*- f90 -*-
2+
!
3+
! Copyright (c) 2022 The University of Tennessee and the University
4+
! of Tennessee Research Foundation. All rights
5+
! reserved.
6+
! $COPYRIGHT$
7+
!
8+
! Additional copyrights may follow
9+
!
10+
! $HEADER$
11+
!
12+
13+
subroutine MPIX_Comm_ack_failed_f08(comm, num_to_ack, num_acked, ierror)
14+
use :: mpi_f08_types, only : MPI_Comm
15+
implicit none
16+
interface
17+
subroutine ompix_comm_ack_failed_f(comm, num_to_ack, num_acked, ierror) &
18+
BIND(C, name="ompix_comm_ack_failed_f")
19+
implicit none
20+
INTEGER, INTENT(IN) :: comm, num_to_ack
21+
INTEGER, INTENT(OUT) :: num_acked, ierror
22+
end subroutine ompix_comm_ack_failed_f
23+
end interface
24+
TYPE(MPI_Comm), INTENT(IN) :: comm
25+
INTEGER, INTENT(IN) :: num_to_ack
26+
INTEGER, INTENT(OUT) :: num_acked
27+
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
28+
integer :: c_ierror
29+
30+
call ompix_comm_ack_failed_f(comm%MPI_VAL, num_to_ack, num_acked, c_ierror)
31+
if (present(ierror)) ierror = c_ierror
32+
33+
end subroutine MPIX_Comm_ack_failed_f08
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
! -*- f90 -*-
2+
!
3+
! Copyright (c) 2022 The University of Tennessee and the University
4+
! of Tennessee Research Foundation. All rights
5+
! reserved.
6+
! $COPYRIGHT$
7+
!
8+
! Additional copyrights may follow
9+
!
10+
! $HEADER$
11+
!
12+
13+
subroutine MPIX_Comm_get_failed_f08(comm, failedgrp, ierror)
14+
use :: mpi_f08_types, only : MPI_Comm, MPI_Group
15+
implicit none
16+
interface
17+
subroutine ompix_comm_get_failed_f(comm, failedgrp, ierror) &
18+
BIND(C, name="ompix_comm_get_failed_f")
19+
implicit none
20+
INTEGER, INTENT(IN) :: comm
21+
INTEGER, INTENT(OUT) :: failedgrp, ierror
22+
end subroutine ompix_comm_get_failed_f
23+
end interface
24+
TYPE(MPI_Comm), INTENT(IN) :: comm
25+
TYPE(MPI_Group), INTENT(OUT) :: failedgrp
26+
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
27+
integer :: c_ierror
28+
29+
call ompix_comm_get_failed_f(comm%MPI_VAL, failedgrp%MPI_VAL, c_ierror)
30+
if (present(ierror)) ierror = c_ierror
31+
32+
end subroutine MPIX_Comm_get_failed_f08

ompi/mpiext/ftmpi/use-mpi-f08/mpiext_ftmpi_usempif08.h

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
! -*- f90 -*-
22
!
3-
! Copyright (c) 2018-2020 The University of Tennessee and the University
3+
! Copyright (c) 2018-2022 The University of Tennessee and the University
44
! of Tennessee Research Foundation. All rights
55
! reserved.
66
! $COPYRIGHT$
@@ -88,6 +88,25 @@ subroutine pmpix_comm_failure_get_acked_f08(comm,failedgrp,ierror)
8888
end subroutine pmpix_comm_failure_get_acked_f08
8989
end interface pmpix_comm_failure_get_acked
9090

91+
interface mpix_comm_get_failed
92+
subroutine mpix_comm_get_failed_f08(comm,failedgrp,ierror)
93+
use :: mpi_f08_types, only : MPI_Comm, MPI_Group
94+
implicit none
95+
TYPE(MPI_Comm), INTENT(IN) :: comm
96+
TYPE(MPI_Group), INTENT(OUT) :: failedgrp
97+
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
98+
end subroutine mpix_comm_get_failed_f08
99+
end interface mpix_comm_get_failed
100+
101+
interface pmpix_comm_get_failed
102+
subroutine pmpix_comm_get_failed_f08(comm,failedgrp,ierror)
103+
use :: mpi_f08_types, only : MPI_Comm, MPI_Group
104+
implicit none
105+
TYPE(MPI_Comm), INTENT(IN) :: comm
106+
TYPE(MPI_Group), INTENT(OUT) :: failedgrp
107+
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
108+
end subroutine pmpix_comm_get_failed_f08
109+
end interface pmpix_comm_get_failed
91110
interface mpix_comm_agree
92111
subroutine mpix_comm_agree_f08(comm,flag,ierror)
93112
use :: mpi_f08_types, only : MPI_Comm
@@ -98,6 +117,28 @@ subroutine mpix_comm_agree_f08(comm,flag,ierror)
98117
end subroutine mpix_comm_agree_f08
99118
end interface mpix_comm_agree
100119

120+
interface mpix_comm_ack_failed
121+
subroutine mpix_comm_ack_failed_f08(comm,num_to_ack,num_acked,ierror)
122+
use :: mpi_f08_types, only : MPI_Comm
123+
implicit none
124+
TYPE(MPI_Comm), INTENT(IN) :: comm
125+
INTEGER, INTENT(IN) :: num_to_ack
126+
INTEGER, INTENT(OUT) :: num_acked
127+
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
128+
end subroutine mpix_comm_ack_failed_f08
129+
end interface mpix_comm_ack_failed
130+
131+
interface pmpix_comm_ack_failed
132+
subroutine pmpix_comm_ack_failed_f08(comm,num_to_ack,num_acked,ierror)
133+
use :: mpi_f08_types, only : MPI_Comm, MPI_Group
134+
implicit none
135+
TYPE(MPI_Comm), INTENT(IN) :: comm
136+
INTEGER, INTENT(IN) :: num_to_ack
137+
INTEGER, INTENT(OUT) :: num_acked
138+
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
139+
end subroutine pmpix_comm_ack_failed_f08
140+
end interface pmpix_comm_ack_failed
141+
101142
interface pmpix_comm_agree
102143
subroutine pmpix_comm_agree_f08(comm,flag,ierror)
103144
use :: mpi_f08_types, only : MPI_Comm
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
! -*- f90 -*-
2+
!
3+
! Copyright (c) 2022 The University of Tennessee and the University
4+
! of Tennessee Research Foundation. All rights
5+
! reserved.
6+
! $COPYRIGHT$
7+
!
8+
! Additional copyrights may follow
9+
!
10+
! $HEADER$
11+
!
12+
13+
subroutine PMPIX_Comm_ack_failed_f08(comm, num_to_ack, num_acked, ierror)
14+
use :: mpi_f08_types, only : MPI_Comm
15+
implicit none
16+
interface
17+
subroutine ompix_comm_ack_failed_f(comm, num_to_ack, num_acked, ierror) &
18+
BIND(C, name="ompix_comm_ack_failed_f")
19+
implicit none
20+
INTEGER, INTENT(IN) :: comm, num_to_ack
21+
INTEGER, INTENT(OUT) :: num_acked, ierror
22+
end subroutine ompix_comm_ack_failed_f
23+
end interface
24+
TYPE(MPI_Comm), INTENT(IN) :: comm
25+
INTEGER, INTENT(IN) :: num_to_ack
26+
INTEGER, INTENT(OUT) :: num_acked
27+
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
28+
integer :: c_ierror
29+
30+
call ompix_comm_ack_failed_f(comm%MPI_VAL, num_to_ack, num_acked, c_ierror)
31+
if (present(ierror)) ierror = c_ierror
32+
33+
end subroutine PMPIX_Comm_ack_failed_f08
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
! -*- f90 -*-
2+
!
3+
! Copyright (c) 2022 The University of Tennessee and the University
4+
! of Tennessee Research Foundation. All rights
5+
! reserved.
6+
! $COPYRIGHT$
7+
!
8+
! Additional copyrights may follow
9+
!
10+
! $HEADER$
11+
!
12+
13+
subroutine PMPIX_Comm_get_failed_f08(comm, failedgrp, ierror)
14+
use :: mpi_f08_types, only : MPI_Comm, MPI_Group
15+
implicit none
16+
interface
17+
subroutine ompix_comm_get_failed_f(comm, failedgrp, ierror) &
18+
BIND(C, name="ompix_comm_get_failed_f")
19+
implicit none
20+
INTEGER, INTENT(IN) :: comm
21+
INTEGER, INTENT(OUT) :: failedgrp, ierror
22+
end subroutine ompix_comm_get_failed_f
23+
end interface
24+
TYPE(MPI_Comm), INTENT(IN) :: comm
25+
TYPE(MPI_Group), INTENT(OUT) :: failedgrp
26+
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
27+
integer :: c_ierror
28+
29+
call ompix_comm_get_failed_f(comm%MPI_VAL, failedgrp%MPI_VAL, c_ierror)
30+
if (present(ierror)) ierror = c_ierror
31+
32+
end subroutine PMPIX_Comm_get_failed_f08

0 commit comments

Comments
 (0)