[mpich] MPICH primary repository branch, master, updated. v3.1.1-82-g5adfb9e
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "MPICH primary repository". The branch, master has been updated via 5adfb9e7ca027ce84ae3d84f42129ad823c6b656 (commit) from 2e7707fbbc4b883cb5562b7c9ddca3248c6ef63d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://git.mpich.org/mpich.git/commitdiff/5adfb9e7ca027ce84ae3d84f42129ad823... commit 5adfb9e7ca027ce84ae3d84f42129ad823c6b656 Author: Junchao Zhang <[email protected]> Date: Fri Jul 11 15:51:02 2014 -0500 Revised the handle conversion functions in Fortran. The f2c/c2f handle conversion functions are only defined in C in the standard. We provide non-standard extensions in Fortran. All functions, except MPI_File_f2c/c2f, are trival to implement. For MPI_File_f2c/c2f, we bind the Fortran functions to C. We do not provide PMPI version for them since it is not required by the standard. No review since F08 binding is experimental now. diff --git a/src/binding/fortran/use_mpi_f08/mpi_f08_types.F90 b/src/binding/fortran/use_mpi_f08/mpi_f08_types.F90 index 231a1ee..f87e1d4 100644 --- a/src/binding/fortran/use_mpi_f08/mpi_f08_types.F90 +++ b/src/binding/fortran/use_mpi_f08/mpi_f08_types.F90 @@ -1,10 +1,10 @@ -! MPI 3 Data types for Fortran. +! MPI 3 data types for Fortran. ! From A.1.2, pp 676-677 ! Note added MPI_Message type not in the spec by mistake ! !-------------------------------------------------------------- -module mpi_f08_types +module MPI_f08_types use, intrinsic :: iso_c_binding, only: c_int use :: mpi_c_interface_types, only: c_Count, c_Status @@ -55,7 +55,22 @@ type, bind(C) :: MPI_Message integer :: MPI_VAL end type MPI_Message -! Fortran 2008 struct for status. Must be consistent with mpi.h, mpif.h +! MPI_File_f2c/c2f are implemented in C, so we do direct binding. +interface + function MPI_File_f2c(file) bind(C, name="MPI_File_f2c") result (res) + use mpi_c_interface_types, only: c_File + integer, value :: file + integer(c_File) :: res + end function MPI_File_f2c + + function MPI_File_c2f(file) bind(C, name="MPI_File_c2f") result (res) + use mpi_c_interface_types, only: c_File + integer(c_File), value :: file + integer :: res + end function MPI_File_c2f +end interface + +! Fortran 2008 struct for status. Must be consistent with MPI.h, MPIf.h type, bind(C) :: MPI_Status integer :: count_lo; integer :: count_hi_and_cancelled; @@ -72,150 +87,149 @@ integer,parameter :: MPI_ERROR = 5 integer,parameter :: MPI_STATUS_SIZE = 5 interface assignment(=) - module procedure mpi_status_f08_assgn_c - module procedure mpi_status_c_assgn_f08 + module procedure MPI_Status_f08_assgn_c + module procedure MPI_Status_c_assgn_f08 end interface -private :: mpi_status_f08_assgn_c -private :: mpi_status_c_assgn_f08 -private :: mpi_status_f_assgn_c -private :: mpi_status_c_assgn_f +private :: MPI_Status_f08_assgn_c +private :: MPI_Status_c_assgn_f08 +private :: MPI_Status_f_assgn_c +private :: MPI_Status_c_assgn_f ! Required operator overloads for == and /= for opaque handles ! 2.5.1 pp 12-13 interface operator(==) - module procedure mpi_comm_eq - module procedure mpi_datatype_eq - module procedure mpi_errhandler_eq - module procedure mpi_file_eq - module procedure mpi_group_eq - module procedure mpi_info_eq - module procedure mpi_op_eq - module procedure mpi_request_eq - module procedure mpi_win_eq - module procedure mpi_message_eq - - module procedure mpi_comm_f08_eq_f - module procedure mpi_comm_f_eq_f08 - module procedure mpi_datatype_f08_eq_f - module procedure mpi_datatype_f_eq_f08 - module procedure mpi_errhandler_f08_eq_f - module procedure mpi_errhandler_f_eq_f08 - module procedure mpi_file_f08_eq_f - module procedure mpi_file_f_eq_f08 - module procedure mpi_group_f08_eq_f - module procedure mpi_group_f_eq_f08 - module procedure mpi_info_f08_eq_f - module procedure mpi_info_f_eq_f08 - module procedure mpi_op_f08_eq_f - module procedure mpi_op_f_eq_f08 - module procedure mpi_request_f08_eq_f - module procedure mpi_request_f_eq_f08 - module procedure mpi_win_f08_eq_f - module procedure mpi_win_f_eq_f08 - module procedure mpi_message_f08_eq_f - module procedure mpi_message_f_eq_f08 + module procedure MPI_Comm_eq + module procedure MPI_Datatype_eq + module procedure MPI_Errhandler_eq + module procedure MPI_File_eq + module procedure MPI_Group_eq + module procedure MPI_Info_eq + module procedure MPI_Op_eq + module procedure MPI_Request_eq + module procedure MPI_Win_eq + module procedure MPI_Message_eq + + module procedure MPI_Comm_f08_eq_f + module procedure MPI_Comm_f_eq_f08 + module procedure MPI_Datatype_f08_eq_f + module procedure MPI_Datatype_f_eq_f08 + module procedure MPI_Errhandler_f08_eq_f + module procedure MPI_Errhandler_f_eq_f08 + module procedure MPI_File_f08_eq_f + module procedure MPI_File_f_eq_f08 + module procedure MPI_Group_f08_eq_f + module procedure MPI_Group_f_eq_f08 + module procedure MPI_Info_f08_eq_f + module procedure MPI_Info_f_eq_f08 + module procedure MPI_Op_f08_eq_f + module procedure MPI_Op_f_eq_f08 + module procedure MPI_Request_f08_eq_f + module procedure MPI_Request_f_eq_f08 + module procedure MPI_Win_f08_eq_f + module procedure MPI_Win_f_eq_f08 + module procedure MPI_Message_f08_eq_f + module procedure MPI_Message_f_eq_f08 end interface -private :: mpi_comm_eq -private :: mpi_datatype_eq -private :: mpi_errhandler_eq -private :: mpi_file_eq -private :: mpi_group_eq -private :: mpi_info_eq -private :: mpi_op_eq -private :: mpi_request_eq -private :: mpi_win_eq -private :: mpi_message_eq - -private :: mpi_comm_f08_eq_f -private :: mpi_comm_f_eq_f08 -private :: mpi_datatype_f08_eq_f -private :: mpi_datatype_f_eq_f08 -private :: mpi_errhandler_f08_eq_f -private :: mpi_errhandler_f_eq_f08 -private :: mpi_file_f08_eq_f -private :: mpi_file_f_eq_f08 -private :: mpi_group_f08_eq_f -private :: mpi_group_f_eq_f08 -private :: mpi_info_f08_eq_f -private :: mpi_info_f_eq_f08 -private :: mpi_op_f08_eq_f -private :: mpi_op_f_eq_f08 -private :: mpi_request_f08_eq_f -private :: mpi_request_f_eq_f08 -private :: mpi_win_f08_eq_f -private :: mpi_win_f_eq_f08 -private :: mpi_message_f08_eq_f -private :: mpi_message_f_eq_f08 +private :: MPI_Comm_eq +private :: MPI_Datatype_eq +private :: MPI_Errhandler_eq +private :: MPI_File_eq +private :: MPI_Group_eq +private :: MPI_Info_eq +private :: MPI_Op_eq +private :: MPI_Request_eq +private :: MPI_Win_eq +private :: MPI_Message_eq + +private :: MPI_Comm_f08_eq_f +private :: MPI_Comm_f_eq_f08 +private :: MPI_Datatype_f08_eq_f +private :: MPI_Datatype_f_eq_f08 +private :: MPI_Errhandler_f08_eq_f +private :: MPI_Errhandler_f_eq_f08 +private :: MPI_File_f08_eq_f +private :: MPI_File_f_eq_f08 +private :: MPI_Group_f08_eq_f +private :: MPI_Group_f_eq_f08 +private :: MPI_Info_f08_eq_f +private :: MPI_Info_f_eq_f08 +private :: MPI_Op_f08_eq_f +private :: MPI_Op_f_eq_f08 +private :: MPI_Request_f08_eq_f +private :: MPI_Request_f_eq_f08 +private :: MPI_Win_f08_eq_f +private :: MPI_Win_f_eq_f08 +private :: MPI_Message_f08_eq_f +private :: MPI_Message_f_eq_f08 interface operator(/=) - module procedure mpi_comm_neq - module procedure mpi_datatype_neq - module procedure mpi_errhandler_neq - module procedure mpi_file_neq - module procedure mpi_group_neq - module procedure mpi_info_neq - module procedure mpi_op_neq - module procedure mpi_request_neq - module procedure mpi_win_neq - module procedure mpi_message_neq - - module procedure mpi_comm_f08_ne_f - module procedure mpi_comm_f_ne_f08 - module procedure mpi_datatype_f08_ne_f - module procedure mpi_datatype_f_ne_f08 - module procedure mpi_errhandler_f08_ne_f - module procedure mpi_errhandler_f_ne_f08 - module procedure mpi_file_f08_ne_f - module procedure mpi_file_f_ne_f08 - module procedure mpi_group_f08_ne_f - module procedure mpi_group_f_ne_f08 - module procedure mpi_info_f08_ne_f - module procedure mpi_info_f_ne_f08 - module procedure mpi_op_f08_ne_f - module procedure mpi_op_f_ne_f08 - module procedure mpi_request_f08_ne_f - module procedure mpi_request_f_ne_f08 - module procedure mpi_win_f08_ne_f - module procedure mpi_win_f_ne_f08 - module procedure mpi_message_f08_ne_f - module procedure mpi_message_f_ne_f08 + module procedure MPI_Comm_neq + module procedure MPI_Datatype_neq + module procedure MPI_Errhandler_neq + module procedure MPI_File_neq + module procedure MPI_Group_neq + module procedure MPI_Info_neq + module procedure MPI_Op_neq + module procedure MPI_Request_neq + module procedure MPI_Win_neq + module procedure MPI_Message_neq + + module procedure MPI_Comm_f08_ne_f + module procedure MPI_Comm_f_ne_f08 + module procedure MPI_Datatype_f08_ne_f + module procedure MPI_Datatype_f_ne_f08 + module procedure MPI_Errhandler_f08_ne_f + module procedure MPI_Errhandler_f_ne_f08 + module procedure MPI_File_f08_ne_f + module procedure MPI_File_f_ne_f08 + module procedure MPI_Group_f08_ne_f + module procedure MPI_Group_f_ne_f08 + module procedure MPI_Info_f08_ne_f + module procedure MPI_Info_f_ne_f08 + module procedure MPI_Op_f08_ne_f + module procedure MPI_Op_f_ne_f08 + module procedure MPI_Request_f08_ne_f + module procedure MPI_Request_f_ne_f08 + module procedure MPI_Win_f08_ne_f + module procedure MPI_Win_f_ne_f08 + module procedure MPI_Message_f08_ne_f + module procedure MPI_Message_f_ne_f08 end interface -private :: mpi_comm_neq -private :: mpi_datatype_neq -private :: mpi_errhandler_neq -private :: mpi_file_neq -private :: mpi_group_neq -private :: mpi_info_neq -private :: mpi_op_neq -private :: mpi_request_neq -private :: mpi_win_neq -private :: mpi_message_neq - -private :: mpi_comm_f08_ne_f -private :: mpi_comm_f_ne_f08 -private :: mpi_datatype_f08_ne_f -private :: mpi_datatype_f_ne_f08 -private :: mpi_errhandler_f08_ne_f -private :: mpi_errhandler_f_ne_f08 -private :: mpi_file_f08_ne_f -private :: mpi_file_f_ne_f08 -private :: mpi_group_f08_ne_f -private :: mpi_group_f_ne_f08 -private :: mpi_info_f08_ne_f -private :: mpi_info_f_ne_f08 -private :: mpi_op_f08_ne_f -private :: mpi_op_f_ne_f08 -private :: mpi_request_f08_ne_f -private :: mpi_request_f_ne_f08 -private :: mpi_win_f08_ne_f -private :: mpi_win_f_ne_f08 -private :: mpi_message_f08_ne_f -private :: mpi_message_f_ne_f08 - +private :: MPI_Comm_neq +private :: MPI_Datatype_neq +private :: MPI_Errhandler_neq +private :: MPI_File_neq +private :: MPI_Group_neq +private :: MPI_Info_neq +private :: MPI_Op_neq +private :: MPI_Request_neq +private :: MPI_Win_neq +private :: MPI_Message_neq + +private :: MPI_Comm_f08_ne_f +private :: MPI_Comm_f_ne_f08 +private :: MPI_Datatype_f08_ne_f +private :: MPI_Datatype_f_ne_f08 +private :: MPI_Errhandler_f08_ne_f +private :: MPI_Errhandler_f_ne_f08 +private :: MPI_File_f08_ne_f +private :: MPI_File_f_ne_f08 +private :: MPI_Group_f08_ne_f +private :: MPI_Group_f_ne_f08 +private :: MPI_Info_f08_ne_f +private :: MPI_Info_f_ne_f08 +private :: MPI_Op_f08_ne_f +private :: MPI_Op_f_ne_f08 +private :: MPI_Request_f08_ne_f +private :: MPI_Request_f_ne_f08 +private :: MPI_Win_f08_ne_f +private :: MPI_Win_f_ne_f08 +private :: MPI_Message_f08_ne_f +private :: MPI_Message_f_ne_f08 ! MPI_Sizeof in 17.1.9 @@ -371,31 +385,31 @@ subroutine MPI_Sizeof_xcomplex128 (x, size, ierror) ierror = 0 end subroutine MPI_Sizeof_xcomplex128 -elemental subroutine mpi_status_f08_assgn_c (status_f08, status_c) +elemental subroutine MPI_Status_f08_assgn_c (status_f08, status_c) ! Defined status_f08 = status_c type(MPI_Status),intent(out) :: status_f08 type(c_Status),intent(in) :: status_c status_f08%count_lo = status_c%count_lo status_f08%count_hi_and_cancelled = status_c%count_hi_and_cancelled - status_f08%mpi_source = status_c%mpi_source - status_f08%mpi_tag = status_c%mpi_tag - status_f08%mpi_error = status_c%mpi_error -end subroutine mpi_status_f08_assgn_c + status_f08%MPI_source = status_c%MPI_source + status_f08%MPI_tag = status_c%MPI_tag + status_f08%MPI_error = status_c%MPI_error +end subroutine MPI_Status_f08_assgn_c -elemental subroutine mpi_status_c_assgn_f08 (status_c, status_f08) +elemental subroutine MPI_Status_c_assgn_f08 (status_c, status_f08) ! Defined status_c = status_f08 type(c_Status),intent(out) :: status_c type(MPI_Status),intent(in) :: status_f08 status_c%count_lo = status_f08%count_lo status_c%count_hi_and_cancelled = status_f08%count_hi_and_cancelled - status_c%mpi_source = status_f08%mpi_source - status_c%mpi_tag = status_f08%mpi_tag - status_c%mpi_error = status_f08%mpi_error -end subroutine mpi_status_c_assgn_f08 + status_c%MPI_source = status_f08%MPI_source + status_c%MPI_tag = status_f08%MPI_tag + status_c%MPI_error = status_f08%MPI_error +end subroutine MPI_Status_c_assgn_f08 -subroutine mpi_status_f_assgn_c (status_f, status_c) +subroutine MPI_Status_f_assgn_c (status_f, status_c) ! Defined status_f = status_c use,intrinsic :: iso_fortran_env, only: int32 integer,intent(out) :: status_f(MPI_STATUS_SIZE) @@ -403,12 +417,12 @@ subroutine mpi_status_f_assgn_c (status_f, status_c) status_f(1) = status_c%count_lo status_f(2) = status_c%count_hi_and_cancelled - status_f(MPI_SOURCE) = status_c%mpi_source - status_f(MPI_TAG) = status_c%mpi_tag - status_f(MPI_ERROR) = status_c%mpi_error -end subroutine mpi_status_f_assgn_c + status_f(MPI_SOURCE) = status_c%MPI_source + status_f(MPI_TAG) = status_c%MPI_tag + status_f(MPI_ERROR) = status_c%MPI_error +end subroutine MPI_Status_f_assgn_c -subroutine mpi_status_c_assgn_f (status_c, status_f) +subroutine MPI_Status_c_assgn_f (status_c, status_f) ! Defined status_c = status_f use,intrinsic :: iso_fortran_env, only: int32 integer,intent(in) :: status_f(MPI_STATUS_SIZE) @@ -417,10 +431,10 @@ subroutine mpi_status_c_assgn_f (status_c, status_f) status_c%count_lo = status_f(1); status_c%count_hi_and_cancelled = status_f(2); - status_c%mpi_source = status_f(MPI_SOURCE) - status_c%mpi_tag = status_f(MPI_TAG) - status_c%mpi_error = status_f(MPI_ERROR) -end subroutine mpi_status_c_assgn_f + status_c%MPI_source = status_f(MPI_SOURCE) + status_c%MPI_tag = status_f(MPI_TAG) + status_c%MPI_error = status_f(MPI_ERROR) +end subroutine MPI_Status_c_assgn_f ! int MPI_Status_f082c(const MPI_F08_status *status_f08, MPI_Status *status_c) @@ -447,7 +461,6 @@ function PMPI_Status_f082c (status_f08, status_c) & end function PMPI_Status_f082c ! int MPI_Status_c2f08(const MPI_Status *status_c, MPI_F08_status *status_f08) - function MPI_Status_c2f08 (status_c, status_f08) & bind(C, name="MPI_Status_c2f08") result (res) use,intrinsic :: iso_c_binding, only: c_int @@ -470,225 +483,225 @@ function PMPI_Status_c2f08 (status_c, status_f08) & res = 0 end function PMPI_Status_c2f08 -function mpi_comm_eq (x, y) result(res) +function MPI_Comm_eq (x, y) result(res) type(MPI_Comm), intent(in) :: x, y logical :: res res = (x%MPI_VAL == y%MPI_VAL) -end function mpi_comm_eq +end function MPI_Comm_eq -function mpi_datatype_eq (x, y) result(res) +function MPI_Datatype_eq (x, y) result(res) type(MPI_Datatype), intent(in) :: x, y logical :: res res = (x%MPI_VAL == y%MPI_VAL) -end function mpi_datatype_eq +end function MPI_Datatype_eq -function mpi_errhandler_eq (x, y) result(res) +function MPI_Errhandler_eq (x, y) result(res) type(MPI_Errhandler), intent(in) :: x, y logical :: res res = (x%MPI_VAL == y%MPI_VAL) -end function mpi_errhandler_eq +end function MPI_Errhandler_eq -function mpi_file_eq (x, y) result(res) +function MPI_File_eq (x, y) result(res) type(MPI_File), intent(in) :: x, y logical :: res res = (x%MPI_VAL == y%MPI_VAL) -end function mpi_File_eq +end function MPI_File_eq -function mpi_group_eq (x, y) result(res) +function MPI_Group_eq (x, y) result(res) type(MPI_Group), intent(in) :: x, y logical :: res res = (x%MPI_VAL == y%MPI_VAL) -end function mpi_group_eq +end function MPI_Group_eq -function mpi_info_eq (x, y) result(res) +function MPI_Info_eq (x, y) result(res) type(MPI_Info), intent(in) :: x, y logical :: res res = (x%MPI_VAL == y%MPI_VAL) -end function mpi_info_eq +end function MPI_Info_eq -function mpi_op_eq (x, y) result(res) +function MPI_Op_eq (x, y) result(res) type(MPI_Op), intent(in) :: x, y logical :: res res = (x%MPI_VAL == y%MPI_VAL) -end function mpi_op_eq +end function MPI_Op_eq -function mpi_request_eq (x, y) result(res) +function MPI_Request_eq (x, y) result(res) type(MPI_Request), intent(in) :: x, y logical :: res res = (x%MPI_VAL == y%MPI_VAL) -end function mpi_request_eq +end function MPI_Request_eq -function mpi_win_eq (x, y) result(res) +function MPI_Win_eq (x, y) result(res) type(MPI_Win), intent(in) :: x, y logical :: res res = (x%MPI_VAL == y%MPI_VAL) -end function mpi_win_eq +end function MPI_Win_eq -function mpi_message_eq (x, y) result(res) +function MPI_Message_eq (x, y) result(res) type(MPI_Message), intent(in) :: x, y logical :: res res = (x%MPI_VAL == y%MPI_VAL) -end function mpi_message_eq +end function MPI_Message_eq -function mpi_comm_f08_eq_f (f08, f) result(res) +function MPI_Comm_f08_eq_f (f08, f) result(res) ! Defined comparison for MPI_Comm and integer handles type(MPI_Comm),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_comm_f08_eq_f +end function MPI_Comm_f08_eq_f -function mpi_comm_f_eq_f08 (f, f08) result(res) +function MPI_Comm_f_eq_f08 (f, f08) result(res) ! Defined comparison for MPI_Comm and integer handles type(MPI_Comm),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_comm_f_eq_f08 +end function MPI_Comm_f_eq_f08 -function mpi_datatype_f08_eq_f (f08, f) result(res) +function MPI_Datatype_f08_eq_f (f08, f) result(res) ! Defined comparison for MPI_Datatype and integer handles type(MPI_Datatype),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_datatype_f08_eq_f +end function MPI_Datatype_f08_eq_f -function mpi_datatype_f_eq_f08 (f, f08) result(res) +function MPI_Datatype_f_eq_f08 (f, f08) result(res) ! Defined comparison for MPI_Datatype and integer handles type(MPI_Datatype),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_datatype_f_eq_f08 +end function MPI_Datatype_f_eq_f08 -function mpi_errhandler_f08_eq_f (f08, f) result(res) +function MPI_Errhandler_f08_eq_f (f08, f) result(res) ! Defined comparison for MPI_Errhandler and integer handles type(MPI_Errhandler),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_errhandler_f08_eq_f +end function MPI_Errhandler_f08_eq_f -function mpi_errhandler_f_eq_f08 (f, f08) result(res) +function MPI_Errhandler_f_eq_f08 (f, f08) result(res) ! Defined comparison for MPI_Errhandler and integer handles type(MPI_Errhandler),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_errhandler_f_eq_f08 +end function MPI_Errhandler_f_eq_f08 -function mpi_file_f_eq_f08 (f, f08) result(res) +function MPI_File_f_eq_f08 (f, f08) result(res) ! Defined comparison for MPI_File and integer handles type(MPI_File),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_file_f_eq_f08 +end function MPI_File_f_eq_f08 -function mpi_file_f08_eq_f (f08, f) result(res) +function MPI_File_f08_eq_f (f08, f) result(res) ! Defined comparison for MPI_File and integer handles type(MPI_File),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_file_f08_eq_f +end function MPI_File_f08_eq_f -function mpi_group_f08_eq_f (f08, f) result(res) +function MPI_Group_f08_eq_f (f08, f) result(res) ! Defined comparison for MPI_Group and integer handles type(MPI_Group),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_group_f08_eq_f +end function MPI_Group_f08_eq_f -function mpi_group_f_eq_f08 (f, f08) result(res) +function MPI_Group_f_eq_f08 (f, f08) result(res) ! Defined comparison for MPI_Group and integer handles type(MPI_Group),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_group_f_eq_f08 +end function MPI_Group_f_eq_f08 -function mpi_info_f08_eq_f (f08, f) result(res) +function MPI_Info_f08_eq_f (f08, f) result(res) ! Defined comparison for MPI_Info and integer handles type(MPI_Info),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_info_f08_eq_f +end function MPI_Info_f08_eq_f -function mpi_info_f_eq_f08 (f, f08) result(res) +function MPI_Info_f_eq_f08 (f, f08) result(res) ! Defined comparison for MPI_Info and integer handles type(MPI_Info),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_info_f_eq_f08 +end function MPI_Info_f_eq_f08 -function mpi_op_f08_eq_f (f08, f) result(res) +function MPI_Op_f08_eq_f (f08, f) result(res) ! Defined comparison for MPI_Op and integer handles type(MPI_Op),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_op_f08_eq_f +end function MPI_Op_f08_eq_f -function mpi_op_f_eq_f08 (f, f08) result(res) +function MPI_Op_f_eq_f08 (f, f08) result(res) ! Defined comparison for MPI_Op and integer handles type(MPI_Op),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_op_f_eq_f08 +end function MPI_Op_f_eq_f08 -function mpi_request_f08_eq_f (f08, f) result(res) +function MPI_Request_f08_eq_f (f08, f) result(res) ! Defined comparison for MPI_Request and integer handles type(MPI_Request),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_request_f08_eq_f +end function MPI_Request_f08_eq_f -function mpi_request_f_eq_f08 (f, f08) result(res) +function MPI_Request_f_eq_f08 (f, f08) result(res) ! Defined comparison for MPI_Request and integer handles type(MPI_Request),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_request_f_eq_f08 +end function MPI_Request_f_eq_f08 -function mpi_win_f08_eq_f (f08, f) result(res) +function MPI_Win_f08_eq_f (f08, f) result(res) ! Defined comparison for MPI_Win and integer handles type(MPI_Win),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_win_f08_eq_f +end function MPI_Win_f08_eq_f -function mpi_win_f_eq_f08 (f, f08) result(res) +function MPI_Win_f_eq_f08 (f, f08) result(res) ! Defined comparison for MPI_Win and integer handles type(MPI_Win),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_win_f_eq_f08 +end function MPI_Win_f_eq_f08 -function mpi_message_f08_eq_f (f08, f) result(res) +function MPI_Message_f08_eq_f (f08, f) result(res) ! Defined comparison for MPI_Message and integer handles type(MPI_Message),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_message_f08_eq_f +end function MPI_Message_f08_eq_f -function mpi_message_f_eq_f08 (f, f08) result(res) +function MPI_Message_f_eq_f08 (f, f08) result(res) ! Defined comparison for MPI_Message and integer handles type(MPI_Message),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL == f -end function mpi_message_f_eq_f08 +end function MPI_Message_f_eq_f08 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! @@ -696,567 +709,362 @@ end function mpi_message_f_eq_f08 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -function mpi_comm_neq (x, y) result(res) +function MPI_Comm_neq (x, y) result(res) type(MPI_Comm), intent(in) :: x, y logical :: res res = (x%MPI_VAL /= y%MPI_VAL) -end function mpi_comm_neq +end function MPI_Comm_neq -function mpi_datatype_neq (x, y) result(res) +function MPI_Datatype_neq (x, y) result(res) type(MPI_Datatype), intent(in) :: x, y logical :: res res = (x%MPI_VAL /= y%MPI_VAL) -end function mpi_datatype_neq +end function MPI_Datatype_neq -function mpi_errhandler_neq (x, y) result(res) +function MPI_Errhandler_neq (x, y) result(res) type(MPI_Errhandler), intent(in) :: x, y logical :: res res = (x%MPI_VAL /= y%MPI_VAL) -end function mpi_errhandler_neq +end function MPI_Errhandler_neq -function mpi_file_neq (x, y) result(res) +function MPI_File_neq (x, y) result(res) type(MPI_File), intent(in) :: x, y logical :: res res = (x%MPI_VAL /= y%MPI_VAL) -end function mpi_File_neq +end function MPI_File_neq -function mpi_group_neq (x, y) result(res) +function MPI_Group_neq (x, y) result(res) type(MPI_Group), intent(in) :: x, y logical :: res res = (x%MPI_VAL /= y%MPI_VAL) -end function mpi_group_neq +end function MPI_Group_neq -function mpi_info_neq (x, y) result(res) +function MPI_Info_neq (x, y) result(res) type(MPI_Info), intent(in) :: x, y logical :: res res = (x%MPI_VAL /= y%MPI_VAL) -end function mpi_info_neq +end function MPI_Info_neq -function mpi_op_neq (x, y) result(res) +function MPI_Op_neq (x, y) result(res) type(MPI_Op), intent(in) :: x, y logical :: res res = (x%MPI_VAL /= y%MPI_VAL) -end function mpi_op_neq +end function MPI_Op_neq -function mpi_request_neq (x, y) result(res) +function MPI_Request_neq (x, y) result(res) type(MPI_Request), intent(in) :: x, y logical :: res res = (x%MPI_VAL /= y%MPI_VAL) -end function mpi_request_neq +end function MPI_Request_neq -function mpi_win_neq (x, y) result(res) +function MPI_Win_neq (x, y) result(res) type(MPI_Win), intent(in) :: x, y logical :: res res = (x%MPI_VAL /= y%MPI_VAL) -end function mpi_win_neq +end function MPI_Win_neq -function mpi_message_neq (x, y) result(res) +function MPI_Message_neq (x, y) result(res) type(MPI_Message), intent(in) :: x, y logical :: res res = (x%MPI_VAL /= y%MPI_VAL) -end function mpi_message_neq +end function MPI_Message_neq -function mpi_comm_f08_ne_f (f08, f) result(res) +function MPI_Comm_f08_ne_f (f08, f) result(res) ! Defined comparison for MPI_Comm and integer handles type(MPI_Comm),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_comm_f08_ne_f +end function MPI_Comm_f08_ne_f -function mpi_comm_f_ne_f08 (f, f08) result(res) +function MPI_Comm_f_ne_f08 (f, f08) result(res) ! Defined comparison for MPI_Comm and integer handles type(MPI_Comm),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_comm_f_ne_f08 +end function MPI_Comm_f_ne_f08 -function mpi_datatype_f08_ne_f (f08, f) result(res) +function MPI_Datatype_f08_ne_f (f08, f) result(res) ! Defined comparison for MPI_Datatype and integer handles type(MPI_Datatype),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_datatype_f08_ne_f +end function MPI_Datatype_f08_ne_f -function mpi_datatype_f_ne_f08 (f, f08) result(res) +function MPI_Datatype_f_ne_f08 (f, f08) result(res) ! Defined comparison for MPI_Datatype and integer handles type(MPI_Datatype),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_datatype_f_ne_f08 +end function MPI_Datatype_f_ne_f08 -function mpi_errhandler_f08_ne_f (f08, f) result(res) +function MPI_Errhandler_f08_ne_f (f08, f) result(res) ! Defined comparison for MPI_Errhandler and integer handles type(MPI_Errhandler),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_errhandler_f08_ne_f +end function MPI_Errhandler_f08_ne_f -function mpi_errhandler_f_ne_f08 (f, f08) result(res) +function MPI_Errhandler_f_ne_f08 (f, f08) result(res) ! Defined comparison for MPI_Errhandler and integer handles type(MPI_Errhandler),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_errhandler_f_ne_f08 +end function MPI_Errhandler_f_ne_f08 -function mpi_file_f_ne_f08 (f, f08) result(res) +function MPI_File_f_ne_f08 (f, f08) result(res) ! Defined comparison for MPI_File and integer handles type(MPI_File),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_file_f_ne_f08 +end function MPI_File_f_ne_f08 -function mpi_file_f08_ne_f (f08, f) result(res) +function MPI_File_f08_ne_f (f08, f) result(res) ! Defined comparison for MPI_File and integer handles type(MPI_File),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_file_f08_ne_f +end function MPI_File_f08_ne_f -function mpi_group_f08_ne_f (f08, f) result(res) +function MPI_Group_f08_ne_f (f08, f) result(res) ! Defined comparison for MPI_Group and integer handles type(MPI_Group),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_group_f08_ne_f +end function MPI_Group_f08_ne_f -function mpi_group_f_ne_f08 (f, f08) result(res) +function MPI_Group_f_ne_f08 (f, f08) result(res) ! Defined comparison for MPI_Group and integer handles type(MPI_Group),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_group_f_ne_f08 +end function MPI_Group_f_ne_f08 -function mpi_info_f08_ne_f (f08, f) result(res) +function MPI_Info_f08_ne_f (f08, f) result(res) ! Defined comparison for MPI_Info and integer handles type(MPI_Info),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_info_f08_ne_f +end function MPI_Info_f08_ne_f -function mpi_info_f_ne_f08 (f, f08) result(res) +function MPI_Info_f_ne_f08 (f, f08) result(res) ! Defined comparison for MPI_Info and integer handles type(MPI_Info),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_info_f_ne_f08 +end function MPI_Info_f_ne_f08 -function mpi_op_f08_ne_f (f08, f) result(res) +function MPI_Op_f08_ne_f (f08, f) result(res) ! Defined comparison for MPI_Op and integer handles type(MPI_Op),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_op_f08_ne_f +end function MPI_Op_f08_ne_f -function mpi_op_f_ne_f08 (f, f08) result(res) +function MPI_Op_f_ne_f08 (f, f08) result(res) ! Defined comparison for MPI_Op and integer handles type(MPI_Op),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_op_f_ne_f08 +end function MPI_Op_f_ne_f08 -function mpi_request_f08_ne_f (f08, f) result(res) +function MPI_Request_f08_ne_f (f08, f) result(res) ! Defined comparison for MPI_Request and integer handles type(MPI_Request),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_request_f08_ne_f +end function MPI_Request_f08_ne_f -function mpi_request_f_ne_f08 (f, f08) result(res) +function MPI_Request_f_ne_f08 (f, f08) result(res) ! Defined comparison for MPI_Request and integer handles type(MPI_Request),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_request_f_ne_f08 +end function MPI_Request_f_ne_f08 -function mpi_win_f08_ne_f (f08, f) result(res) +function MPI_Win_f08_ne_f (f08, f) result(res) ! Defined comparison for MPI_Win and integer handles type(MPI_Win),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_win_f08_ne_f +end function MPI_Win_f08_ne_f -function mpi_win_f_ne_f08 (f, f08) result(res) +function MPI_Win_f_ne_f08 (f, f08) result(res) ! Defined comparison for MPI_Win and integer handles type(MPI_Win),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_win_f_ne_f08 +end function MPI_Win_f_ne_f08 -function mpi_message_f08_ne_f (f08, f) result(res) +function MPI_Message_f08_ne_f (f08, f) result(res) ! Defined comparison for MPI_Message and integer handles type(MPI_Message),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_message_f08_ne_f +end function MPI_Message_f08_ne_f -function mpi_message_f_ne_f08 (f, f08) result(res) +function MPI_Message_f_ne_f08 (f, f08) result(res) ! Defined comparison for MPI_Message and integer handles type(MPI_Message),intent(in) :: f08 integer,intent(in) :: f logical :: res res = f08%MPI_VAL /= f -end function mpi_message_f_ne_f08 +end function MPI_Message_f_ne_f08 -! 17.2.4 - Conversion between Fortran and C handles +! 17.2.4 - Conversion functions between Fortran and C handles, which are only defined in +! the C interface and can be implemented as macros. We extend them to Fortran. +! TODO: Do we need the PMPI version? Probably not since they are not in standard. -! MPI_Comm MPI_Comm_f2c(MPI_Fint comm) -function mpi_comm_f2c (comm) bind(c,name="MPI_Comm_f2c") result (res) +function MPI_Comm_f2c (comm) result (res) use mpi_c_interface_types, only: c_Comm integer,value :: comm integer(c_Comm) :: res - - res = comm -end function mpi_comm_f2c - -function pmpi_comm_f2c (comm) bind(c,name="PMPI_Comm_f2c") result (res) - use mpi_c_interface_types, only: c_Comm - integer,value :: comm - integer(c_Comm) :: res - - res = comm -end function pmpi_comm_f2c - -! MPI_Fint MPI_Comm_c2f(MPI_Comm comm) -function mpi_comm_c2f (comm) bind(c,name="MPI_Comm_c2f") result (res) - use mpi_c_interface_types, only: c_Comm - integer(c_Comm),value :: comm - integer :: res - res = comm -end function mpi_comm_c2f +end function MPI_Comm_f2c -function pmpi_comm_c2f (comm) bind(c,name="PMPI_Comm_c2f") result (res) +function MPI_Comm_c2f (comm) result (res) use mpi_c_interface_types, only: c_Comm integer(c_Comm),value :: comm integer :: res - res = comm -end function pmpi_comm_c2f +end function MPI_Comm_c2f -! MPI_Type MPI_Type_f2c(MPI_Fint type) -function mpi_type_f2c (datatype) bind(c,name="MPI_Type_f2c") result (res) +function MPI_type_f2c (datatype) result (res) use mpi_c_interface_types, only: c_Datatype integer,value :: datatype integer(c_Datatype) :: res - res = datatype -end function mpi_type_f2c +end function MPI_type_f2c -function pmpi_type_f2c (datatype) bind(c,name="PMPI_Type_f2c") result (res) - use mpi_c_interface_types, only: c_Datatype - integer,value :: datatype - integer(c_Datatype) :: res - - res = datatype -end function pmpi_type_f2c - -! MPI_Fint MPI_Type_c2f(MPI_Type type) -function mpi_type_c2f (datatype) bind(c,name="MPI_Type_c2f") result (res) +function MPI_type_c2f (datatype) result (res) use mpi_c_interface_types, only: c_Datatype integer(c_Datatype),value :: datatype integer :: res - res = datatype -end function mpi_type_c2f - -function pmpi_type_c2f (datatype) bind(c,name="PMPI_Type_c2f") result (res) - use mpi_c_interface_types, only: c_Datatype - integer(c_Datatype),value :: datatype - integer :: res - - res = datatype -end function pmpi_type_c2f - -! MPI_Group MPI_Group_f2c(MPI_Fint group) -function mpi_group_f2c (group) bind(c,name="MPI_Group_f2c") result (res) - use mpi_c_interface_types, only: c_Group - integer,value :: group - integer(c_Group) :: res +end function MPI_type_c2f - res = group -end function mpi_group_f2c - -function pmpi_group_f2c (group) bind(c,name="PMPI_Group_f2c") result (res) +function MPI_Group_f2c (group) result (res) use mpi_c_interface_types, only: c_Group integer,value :: group integer(c_Group) :: res - res = group -end function pmpi_group_f2c +end function MPI_Group_f2c - -! MPI_Fint MPI_Group_c2f(MPI_Datatype datatype) -function mpi_group_c2f (group) bind(c,name="MPI_Group_c2f") result (res) +function MPI_Group_c2f (group) result (res) use mpi_c_interface_types, only: c_Group integer(c_Group),value :: group integer :: res - res = group -end function mpi_group_c2f - -function pmpi_group_c2f (group) bind(c,name="PMPI_Group_c2f") result (res) - use mpi_c_interface_types, only: c_Group - integer(c_Group),value :: group - integer :: res - - res = group -end function pmpi_group_c2f - - -! MPI_Request MPI_Request_f2c(MPI_Fint request) -function mpi_request_f2c (request) bind(c,name="MPI_Request_f2c") result (res) - use mpi_c_interface_types, only: c_Request - integer,value :: request - integer(c_Request) :: res - - res = request -end function mpi_request_f2c +end function MPI_Group_c2f -function pmpi_request_f2c (request) bind(c,name="PMPI_Request_f2c") result (res) +function MPI_Request_f2c (request) result (res) use mpi_c_interface_types, only: c_Request integer,value :: request integer(c_Request) :: res - res = request -end function pmpi_request_f2c - +end function MPI_Request_f2c -! MPI_Fint MPI_Request_c2f(MPI_Datatype datatype) -function mpi_request_c2f (request) bind(c,name="MPI_Request_c2f") result (res) +function MPI_Request_c2f (request) result (res) use mpi_c_interface_types, only: c_Request integer(c_Request),value :: request integer :: res - res = request -end function mpi_request_c2f - -function pmpi_request_c2f (request) bind(c,name="PMPI_Request_c2f") result (res) - use mpi_c_interface_types, only: c_Request - integer(c_Request),value :: request - integer :: res - - res = request -end function pmpi_request_c2f - -! MPI_File MPI_File_f2c(MPI_Fint file) -! The MPI_File_f2c/c2f functions are defined in C - -function MPI_File_f2c (file) bind(c,name="MPI_File_f2c") result (res) - use mpi_c_interface_types, only: c_File - integer,value :: file - integer(c_File) :: res -end function MPI_File_f2c - -function pmpi_file_f2c (file) bind(c,name="PMPI_File_f2c") result (res) - use mpi_c_interface_types, only: c_File - integer,value :: file - integer(c_File) :: res - - res = file -end function pmpi_file_f2c - -! MPI_Fint MPI_File_c2f(MPI_Datatype datatype) -function MPI_File_c2f (file) bind(c,name="MPI_File_c2f") result (res) - use mpi_c_interface_types, only: c_File - integer(c_File),value :: file - integer :: res -end function MPI_File_c2f - -function pmpi_file_c2f (file) bind(c,name="PMPI_File_c2f") result (res) - use mpi_c_interface_types, only: c_File - integer(c_File),value :: file - integer :: res +end function MPI_Request_c2f - res = file -end function pmpi_file_c2f - -! MPI_Win MPI_Win_f2c(MPI_Fint win) -function mpi_win_f2c (win) bind(c,name="MPI_Win_f2c") result (res) +function MPI_Win_f2c (win) result (res) use mpi_c_interface_types, only: C_win integer,value :: win integer(C_win) :: res - res = win -end function mpi_win_f2c +end function MPI_Win_f2c -function pmpi_win_f2c (win) bind(c,name="PMPI_Win_f2c") result (res) - use mpi_c_interface_types, only: C_win - integer,value :: win - integer(C_win) :: res - - res = win -end function pmpi_win_f2c - -! MPI_Fint MPI_Win_c2f(MPI_Datatype datatype) -function mpi_win_c2f (win) bind(c,name="MPI_Win_c2f") result (res) +function MPI_Win_c2f (win) result (res) use mpi_c_interface_types, only: C_win integer(C_win),value :: win integer :: res - res = win -end function mpi_win_c2f +end function MPI_Win_c2f -function pmpi_win_c2f (win) bind(c,name="PMPI_Win_c2f") result (res) +function pMPI_Win_c2f (win) result (res) use mpi_c_interface_types, only: C_win integer(C_win),value :: win integer :: res - res = win -end function pmpi_win_c2f - -! MPI_Op MPI_Op_f2c(MPI_Fint op) -function mpi_op_f2c (op) bind(c,name="MPI_Op_f2c") result (res) - use mpi_c_interface_types, only: c_Op - integer,value :: op - integer(c_Op) :: res +end function pMPI_Win_c2f - res = op -end function mpi_op_f2c -function pmpi_op_f2c (op) bind(c,name="PMPI_Op_f2c") result (res) +function MPI_Op_f2c (op) result (res) use mpi_c_interface_types, only: c_Op integer,value :: op integer(c_Op) :: res - res = op -end function pmpi_op_f2c +end function MPI_Op_f2c -! MPI_Fint MPI_Op_c2f(MPI_Datatype datatype) -function mpi_op_c2f (op) bind(c,name="MPI_Op_c2f") result (res) +function MPI_Op_c2f (op) result (res) use mpi_c_interface_types, only: c_Op integer(c_Op),value :: op integer :: res - - res = op -end function mpi_op_c2f - -function pmpi_op_c2f (op) bind(c,name="PMPI_Op_c2f") result (res) - use mpi_c_interface_types, only: c_Op - integer(c_Op),value :: op - integer :: res - res = op -end function pmpi_op_c2f +end function MPI_Op_c2f -! MPI_Info MPI_Info_f2c(MPI_Fint info) -function mpi_info_f2c (info) bind(c,name="MPI_Info_f2c") result (res) +function MPI_Info_f2c (info) result (res) use mpi_c_interface_types, only: c_Info integer,value :: info integer(c_Info) :: res - - res = info -end function mpi_info_f2c - -function pmpi_info_f2c (info) bind(c,name="PMPI_Info_f2c") result (res) - use mpi_c_interface_types, only: c_Info - integer,value :: info - integer(c_Info) :: res - - res = info -end function pmpi_info_f2c - -! MPI_Fint MPI_Info_c2f(MPI_Datatype datatype) -function mpi_info_c2f (info) bind(c,name="MPI_Info_c2f") result (res) - use mpi_c_interface_types, only: c_Info - integer(c_Info),value :: info - integer :: res - res = info -end function mpi_info_c2f +end function MPI_Info_f2c -function pmpi_info_c2f (info) bind(c,name="PMPI_Info_c2f") result (res) +function MPI_Info_c2f (info) result (res) use mpi_c_interface_types, only: c_Info integer(c_Info),value :: info integer :: res - res = info -end function pmpi_info_c2f +end function MPI_Info_c2f -! MPI_Errhandler MPI_Errhandler_f2c(MPI_Fint errhandler) -function mpi_errhandler_f2c (errhandler) bind(c,name="MPI_Errhandler_f2c") result (res) +function MPI_Errhandler_f2c (errhandler) result (res) use mpi_c_interface_types, only: c_Errhandler integer,value :: errhandler integer(c_Errhandler) :: res - - res = errhandler -end function mpi_errhandler_f2c - -function pmpi_errhandler_f2c (errhandler) bind(c,name="PMPI_Errhandler_f2c") result (res) - use mpi_c_interface_types, only: c_Errhandler - integer,value :: errhandler - integer(c_Errhandler) :: res - - res = errhandler -end function pmpi_errhandler_f2c - -! MPI_Fint MPI_Errhandler_c2f(MPI_Datatype datatype) -function mpi_errhandler_c2f (errhandler) bind(c,name="MPI_Errhandler_c2f") result (res) - use mpi_c_interface_types, only: c_Errhandler - integer(c_Errhandler),value :: errhandler - integer :: res - res = errhandler -end function mpi_errhandler_c2f +end function MPI_Errhandler_f2c -function pmpi_errhandler_c2f (errhandler) bind(c,name="PMPI_Errhandler_c2f") result (res) +function MPI_Errhandler_c2f (errhandler) result (res) use mpi_c_interface_types, only: c_Errhandler integer(c_Errhandler),value :: errhandler integer :: res - res = errhandler -end function pmpi_errhandler_c2f +end function MPI_Errhandler_c2f -! MPI_Message MPI_Message_f2c(MPI_Fint message) -function mpi_message_f2c (message) bind(c,name="MPI_Message_f2c") result (res) +function MPI_Message_f2c (message) result (res) use mpi_c_interface_types, only: c_Message integer,value :: message integer(c_Message) :: res - res = message -end function mpi_message_f2c +end function MPI_Message_f2c -function pmpi_message_f2c (message) bind(c,name="PMPI_Message_f2c") result (res) - use mpi_c_interface_types, only: c_Message - integer,value :: message - integer(c_Message) :: res - - res = message -end function pmpi_message_f2c - -! MPI_Fint MPI_Message_c2f(MPI_Datatype datatype) -function mpi_message_c2f (message) bind(c,name="MPI_Message_c2f") result (res) - use mpi_c_interface_types, only: c_Message - integer(c_Message),value :: message - integer :: res - - res = message -end function mpi_message_c2f - -function pmpi_message_c2f (message) bind(c,name="PMPI_Message_c2f") result (res) +function MPI_Message_c2f (message) result (res) use mpi_c_interface_types, only: c_Message integer(c_Message),value :: message integer :: res - res = message -end function pmpi_message_c2f +end function MPI_Message_c2f -end module mpi_f08_types +end module MPI_f08_types ----------------------------------------------------------------------- Summary of changes: src/binding/fortran/use_mpi_f08/mpi_f08_types.F90 | 852 ++++++++------------- 1 files changed, 330 insertions(+), 522 deletions(-) hooks/post-receive -- MPICH primary repository
participants (1)
-
noreply@mpich.org