1
1
openmpi/ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-callbacks.F90
Gilles Gouaillardet 2c71c27882 fortran2008: fix mpiext example
in order to solve an egg and the chicken problem,  in which mpiext need mpi-f08-types.mod
and/but use-mpi-f08[-desc] needs mpiext, add an extra step
- build fortran 2008 modules only
- build fortran 2008 mpi extensions
- and then build fortran 2008 bindings

Fixes open-mpi/ompi#3605

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2017-08-09 13:19:22 +09:00

143 строки
4.1 KiB
Fortran

! -*- f90 -*-
! Copyright (c) 2016 Research Organization for Information Science
! and Technology (RIST). All rights reserved.
! $COPYRIGHT$
#include "ompi/mpi/fortran/configure-fortran-output.h"
module mpi_f08_callbacks
! MPI3.1, p270, 5-19
contains
subroutine MPI_COMM_DUP_FN(oldcomm,comm_keyval,extra_state, &
attribute_val_in,attribute_val_out,flag,ierror)
use mpi_f08_types
implicit none
type(MPI_Comm) :: oldcomm
integer :: comm_keyval, ierror
integer(kind=MPI_ADDRESS_KIND) :: extra_state, attribute_val_in, attribute_val_out
logical :: flag
flag = .true.
attribute_val_out = attribute_val_in
ierror = MPI_SUCCESS
end subroutine
subroutine MPI_COMM_NULL_COPY_FN(oldcomm,comm_keyval,extra_state, &
attribute_val_in,attribute_val_out,flag,ierror)
use mpi_f08_types
implicit none
type(MPI_Comm) :: oldcomm
integer :: comm_keyval, ierror
integer(kind=MPI_ADDRESS_KIND) :: extra_state, attribute_val_in, attribute_val_out
logical :: flag
flag = .false.
ierror = MPI_SUCCESS
end subroutine
subroutine MPI_COMM_NULL_DELETE_FN(comm,comm_keyval, &
attribute_val, extra_state, ierror)
use mpi_f08_types
implicit none
type(MPI_Comm) :: comm
integer :: comm_keyval, ierror
integer(kind=MPI_ADDRESS_KIND) :: attribute_val, extra_state
ierror = MPI_SUCCESS
end subroutine
subroutine MPI_TYPE_DUP_FN(oldtype,type_keyval,extra_state, &
attribute_val_in,attribute_val_out,flag,ierror)
use mpi_f08_types
implicit none
type(MPI_Datatype) :: oldtype
integer :: type_keyval, ierror
integer(kind=MPI_ADDRESS_KIND) :: extra_state, attribute_val_in, attribute_val_out
logical :: flag
flag = .true.
attribute_val_out = attribute_val_in
ierror = MPI_SUCCESS
end subroutine
subroutine MPI_TYPE_NULL_COPY_FN(oldtype,type_keyval,extra_state, &
attribute_val_in,attribute_val_out,flag,ierror)
use mpi_f08_types
implicit none
type(MPI_Datatype) :: oldtype
integer :: type_keyval, ierror
integer(kind=MPI_ADDRESS_KIND) :: extra_state, attribute_val_in, attribute_val_out
logical :: flag
flag = .false.
ierror = MPI_SUCCESS
end subroutine
subroutine MPI_TYPE_NULL_DELETE_FN(datatype,type_keyval, &
attribute_val, extra_state, ierror)
use mpi_f08_types
implicit none
type(MPI_Datatype) :: datatype
integer :: type_keyval, ierror
integer(kind=MPI_ADDRESS_KIND) :: attribute_val, extra_state
ierror = MPI_SUCCESS
end subroutine
subroutine MPI_WIN_DUP_FN(oldwin,win_keyval,extra_state, &
attribute_val_in,attribute_val_out,flag,ierror)
use mpi_f08_types
implicit none
type(MPI_Win) :: oldwin
integer :: win_keyval, ierror
integer(kind=MPI_ADDRESS_KIND) :: extra_state, attribute_val_in, attribute_val_out
logical :: flag
flag = .true.
attribute_val_out = attribute_val_in
ierror = MPI_SUCCESS
end subroutine
subroutine MPI_WIN_NULL_COPY_FN(oldwin,win_keyval,extra_state, &
attribute_val_in,attribute_val_out,flag,ierror)
use mpi_f08_types
implicit none
type(MPI_Win) :: oldwin
integer :: win_keyval, ierror
integer(kind=MPI_ADDRESS_KIND) :: extra_state, attribute_val_in, attribute_val_out
logical :: flag
flag = .false.
ierror = MPI_SUCCESS
end subroutine
subroutine MPI_WIN_NULL_DELETE_FN(win,win_keyval, &
attribute_val, extra_state, ierror)
use mpi_f08_types
implicit none
type(MPI_Win) :: win
integer :: win_keyval, ierror
integer(kind=MPI_ADDRESS_KIND) :: attribute_val, extra_state
ierror = MPI_SUCCESS
end subroutine
subroutine MPI_CONVERSION_FN_NULL(userbuf, datatype, count, &
filebuf, position, extra_state, ierror)
use, intrinsic :: iso_c_binding, only : c_ptr
use mpi_f08_types
implicit none
type(c_ptr), value :: userbuf, filebuf
type(MPI_Datatype) :: datatype
integer :: count, ierror
integer(kind=MPI_OFFSET_KIND) :: position
integer(kind=MPI_ADDRESS_KIND) :: extra_state
! Do nothing
end subroutine
end module mpi_f08_callbacks