From 985c490b8743e691b2335e158548996f2479276f Mon Sep 17 00:00:00 2001 From: Tsubasa Yanagibashi Date: Thu, 21 Dec 2017 17:13:22 +0900 Subject: [PATCH 1/7] Add missing Fortran 2008 binding subroutines added missing Fortran 2008 binding pmpi_{*} subroutines to Open MPI. Signed-off-by: Tsubasa Yanagibashi (cherry picked from commit 3f4b3738562309b954ac75eacc58d2746d388624) Signed-off-by: KAWASHIMA Takahiro --- ompi/mpi/fortran/use-mpi-f08/Makefile.am | 5 + .../use-mpi-f08/mod/pmpi-f08-interfaces.F90 | 107 ++++++++++++++++++ .../profile/pfile_iread_all_f08.F90 | 26 +++++ .../profile/pfile_iread_at_all_f08.F90 | 28 +++++ .../profile/pfile_iwrite_all_f08.F90 | 27 +++++ .../profile/pfile_iwrite_at_all_f08.F90 | 28 +++++ 6 files changed, 221 insertions(+) create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_iread_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_iread_at_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_iwrite_all_f08.F90 create mode 100644 ompi/mpi/fortran/use-mpi-f08/profile/pfile_iwrite_at_all_f08.F90 diff --git a/ompi/mpi/fortran/use-mpi-f08/Makefile.am b/ompi/mpi/fortran/use-mpi-f08/Makefile.am index 4574ae5dffa..786b7640a79 100644 --- a/ompi/mpi/fortran/use-mpi-f08/Makefile.am +++ b/ompi/mpi/fortran/use-mpi-f08/Makefile.am @@ -10,6 +10,7 @@ # Copyright (c) 2015-2017 Research Organization for Information Science # and Technology (RIST). All rights reserved. # Copyright (c) 2016 IBM Corporation. All rights reserved. +# Copyright (c) 2017 FUJITSU LIMITED. All rights reserved. # # $COPYRIGHT$ # @@ -533,9 +534,13 @@ pmpi_api_files = \ profile/pfile_get_view_f08.F90 \ profile/pfile_iread_at_f08.F90 \ profile/pfile_iread_f08.F90 \ + profile/pfile_iread_at_all_f08.F90 \ + profile/pfile_iread_all_f08.F90 \ profile/pfile_iread_shared_f08.F90 \ profile/pfile_iwrite_at_f08.F90 \ profile/pfile_iwrite_f08.F90 \ + profile/pfile_iwrite_at_all_f08.F90 \ + profile/pfile_iwrite_all_f08.F90 \ profile/pfile_iwrite_shared_f08.F90 \ profile/pfile_open_f08.F90 \ profile/pfile_preallocate_f08.F90 \ diff --git a/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 index 5b2b117b579..09a4e434f68 100644 --- a/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 @@ -9,6 +9,7 @@ ! Copyright (c) 2012 Inria. All rights reserved. ! Copyright (c) 2015-2017 Research Organization for Information Science ! and Technology (RIST). All rights reserved. +! Copyright (c) 2017 FUJITSU LIMITED. All rights reserved. ! $COPYRIGHT$ ! ! This file provides the interface specifications for the MPI Fortran @@ -2105,6 +2106,36 @@ subroutine PMPI_Type_set_name_f08(datatype,type_name,ierror) end subroutine PMPI_Type_set_name_f08 end interface PMPI_Type_set_name +interface PMPI_Win_allocate +subroutine PMPI_Win_allocate_f08(size, disp_unit, info, comm, & + baseptr, win, ierror) + USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR + use :: mpi_f08_types, only : MPI_Info, MPI_Comm, MPI_Win, MPI_ADDRESS_KIND + INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: size + INTEGER, INTENT(IN) :: disp_unit + TYPE(MPI_Info), INTENT(IN) :: info + TYPE(MPI_Comm), INTENT(IN) :: comm + TYPE(C_PTR), INTENT(OUT) :: baseptr + TYPE(MPI_Win), INTENT(OUT) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine PMPI_Win_allocate_f08 +end interface PMPI_Win_allocate + +interface PMPI_Win_allocate_shared +subroutine PMPI_Win_allocate_shared_f08(size, disp_unit, info, comm, & + baseptr, win, ierror) + USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR + use :: mpi_f08_types, only : MPI_Info, MPI_Comm, MPI_Win, MPI_ADDRESS_KIND + INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: size + INTEGER, INTENT(IN) :: disp_unit + TYPE(MPI_Info), INTENT(IN) :: info + TYPE(MPI_Comm), INTENT(IN) :: comm + TYPE(C_PTR), INTENT(OUT) :: baseptr + TYPE(MPI_Win), INTENT(OUT) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine PMPI_Win_allocate_shared_f08 +end interface PMPI_Win_allocate_shared + interface PMPI_Win_create_keyval subroutine PMPI_Win_create_keyval_f08(win_copy_attr_fn,win_delete_attr_fn,win_keyval, & extra_state,ierror) @@ -2150,6 +2181,16 @@ subroutine PMPI_Win_get_attr_f08(win,win_keyval,attribute_val,flag,ierror) end subroutine PMPI_Win_get_attr_f08 end interface PMPI_Win_get_attr +interface PMPI_Win_get_info +subroutine PMPI_Win_get_info_f08(win,info,ierror) + use :: mpi_f08_types, only : MPI_Win, MPI_Info + implicit none + TYPE(MPI_Win), INTENT(IN) :: win + TYPE(MPI_Info), INTENT(OUT) :: info + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine PMPI_Win_get_info_f08 +end interface PMPI_Win_get_info + interface PMPI_Win_get_name subroutine PMPI_Win_get_name_f08(win,win_name,resultlen,ierror) use :: mpi_f08_types, only : MPI_Win, MPI_MAX_OBJECT_NAME @@ -2172,6 +2213,16 @@ subroutine PMPI_Win_set_attr_f08(win,win_keyval,attribute_val,ierror) end subroutine PMPI_Win_set_attr_f08 end interface PMPI_Win_set_attr +interface PMPI_Win_set_info +subroutine PMPI_Win_set_info_f08(win,info,ierror) + use :: mpi_f08_types, only : MPI_Win, MPI_Info + implicit none + TYPE(MPI_Win), INTENT(IN) :: win + TYPE(MPI_Info), INTENT(IN) :: info + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine PMPI_Win_set_info_f08 +end interface PMPI_Win_set_info + interface PMPI_Win_set_name subroutine PMPI_Win_set_name_f08(win,win_name,ierror) use :: mpi_f08_types, only : MPI_Win @@ -3187,6 +3238,48 @@ subroutine PMPI_Win_create_f08(base,size,disp_unit,info,comm,win,ierror) end subroutine PMPI_Win_create_f08 end interface PMPI_Win_create +interface PMPI_Win_create_dynamic +subroutine PMPI_Win_create_dynamic_f08(info,comm,win,ierror) + use :: mpi_f08_types, only : MPI_Info, MPI_Comm, MPI_Win + implicit none + TYPE(MPI_Info), INTENT(IN) :: info + TYPE(MPI_Comm), INTENT(IN) :: comm + TYPE(MPI_Win), INTENT(OUT) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine PMPI_Win_create_dynamic_f08 +end interface PMPI_Win_create_dynamic + +interface PMPI_Win_attach +subroutine PMPI_Win_attach_f08(win,base,size,ierror) + use :: mpi_f08_types, only : MPI_Win, MPI_ADDRESS_KIND + implicit none + !DEC$ ATTRIBUTES NO_ARG_CHECK :: base + !GCC$ ATTRIBUTES NO_ARG_CHECK :: base + !$PRAGMA IGNORE_TKR base + !DIR$ IGNORE_TKR base + !IBM* IGNORE_TKR base + OMPI_FORTRAN_IGNORE_TKR_TYPE :: base + INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: size + TYPE(MPI_Win), INTENT(IN) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine PMPI_Win_attach_f08 +end interface PMPI_Win_attach + +interface PMPI_Win_detach +subroutine PMPI_Win_detach_f08(win,base,ierror) + use :: mpi_f08_types, only : MPI_Win, MPI_ADDRESS_KIND + implicit none + !DEC$ ATTRIBUTES NO_ARG_CHECK :: base + !GCC$ ATTRIBUTES NO_ARG_CHECK :: base + !$PRAGMA IGNORE_TKR base + !DIR$ IGNORE_TKR base + !IBM* IGNORE_TKR base + OMPI_FORTRAN_IGNORE_TKR_TYPE :: base + TYPE(MPI_Win), INTENT(IN) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine PMPI_Win_detach_f08 +end interface PMPI_Win_detach + interface PMPI_Win_fence subroutine PMPI_Win_fence_f08(assert,win,ierror) use :: mpi_f08_types, only : MPI_Win @@ -3247,6 +3340,20 @@ subroutine PMPI_Win_post_f08(group,assert,win,ierror) end subroutine PMPI_Win_post_f08 end interface PMPI_Win_post +interface PMPI_Win_shared_query +subroutine PMPI_Win_shared_query_f08(win, rank, size, disp_unit, baseptr,& + ierror) + USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR + use :: mpi_f08_types, only : MPI_Win, MPI_ADDRESS_KIND + TYPE(MPI_Win), INTENT(IN) :: win + INTEGER, INTENT(IN) :: rank + INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(OUT) :: size + INTEGER, INTENT(OUT) :: disp_unit + TYPE(C_PTR), INTENT(OUT) :: baseptr + INTEGER, OPTIONAL, INTENT(OUT) :: ierror +end subroutine PMPI_Win_shared_query_f08 +end interface PMPI_Win_shared_query + interface PMPI_Win_start subroutine PMPI_Win_start_f08(group,assert,win,ierror) use :: mpi_f08_types, only : MPI_Group, MPI_Win diff --git a/ompi/mpi/fortran/use-mpi-f08/profile/pfile_iread_all_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/profile/pfile_iread_all_f08.F90 new file mode 100644 index 00000000000..3d935f98ae4 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/profile/pfile_iread_all_f08.F90 @@ -0,0 +1,26 @@ +! -*- f90 -*- +! +! Copyright (c) 2010-2012 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2009-2012 Los Alamos National Security, LLC. +! All Rights reserved. +! Copyright (c) 2017 FUJITSU LIMITED. All rights reserved. +! $COPYRIGHT$ + +#include "ompi/mpi/fortran/configure-fortran-output.h" + +subroutine PMPI_File_iread_all_f08(fh,buf,count,datatype,request,ierror) + use :: mpi_f08_types, only : MPI_File, MPI_Datatype, MPI_Request + use :: mpi_f08, only : ompi_file_iread_all_f + implicit none + TYPE(MPI_File), INTENT(IN) :: fh + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf + INTEGER, INTENT(IN) :: count + TYPE(MPI_Datatype), INTENT(IN) :: datatype + TYPE(MPI_Request), INTENT(OUT) :: request + INTEGER, OPTIONAL, INTENT(OUT) :: ierror + integer :: c_ierror + + call ompi_file_iread_all_f(fh%MPI_VAL,buf,count,datatype%MPI_VAL,request%MPI_VAL,c_ierror) + if (present(ierror)) ierror = c_ierror + +end subroutine PMPI_File_iread_all_f08 diff --git a/ompi/mpi/fortran/use-mpi-f08/profile/pfile_iread_at_all_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/profile/pfile_iread_at_all_f08.F90 new file mode 100644 index 00000000000..1a627fd7399 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/profile/pfile_iread_at_all_f08.F90 @@ -0,0 +1,28 @@ +! -*- f90 -*- +! +! Copyright (c) 2010-2012 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2009-2012 Los Alamos National Security, LLC. +! All Rights reserved. +! Copyright (c) 2017 FUJITSU LIMITED. All rights reserved. +! $COPYRIGHT$ + +#include "ompi/mpi/fortran/configure-fortran-output.h" + +subroutine PMPI_File_iread_at_all_f08(fh,offset,buf,count,datatype,request,ierror) + use :: mpi_f08_types, only : MPI_File, MPI_Datatype, MPI_Request, MPI_OFFSET_KIND + use :: mpi_f08, only : ompi_file_iread_at_all_f + implicit none + TYPE(MPI_File), INTENT(IN) :: fh + INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf + INTEGER, INTENT(IN) :: count + TYPE(MPI_Datatype), INTENT(IN) :: datatype + TYPE(MPI_Request), INTENT(OUT) :: request + INTEGER, OPTIONAL, INTENT(OUT) :: ierror + integer :: c_ierror + + call ompi_file_iread_at_all_f(fh%MPI_VAL,offset,buf,count,& + datatype%MPI_VAL,request%MPI_VAL,c_ierror) + if (present(ierror)) ierror = c_ierror + +end subroutine PMPI_File_iread_at_all_f08 diff --git a/ompi/mpi/fortran/use-mpi-f08/profile/pfile_iwrite_all_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/profile/pfile_iwrite_all_f08.F90 new file mode 100644 index 00000000000..f176b17d9e2 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/profile/pfile_iwrite_all_f08.F90 @@ -0,0 +1,27 @@ +! -*- f90 -*- +! +! Copyright (c) 2010-2012 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2009-2012 Los Alamos National Security, LLC. +! All Rights reserved. +! Copyright (c) 2017 FUJITSU LIMITED. All rights reserved. +! $COPYRIGHT$ + +#include "ompi/mpi/fortran/configure-fortran-output.h" + +subroutine PMPI_File_iwrite_all_f08(fh,buf,count,datatype,request,ierror) + use :: mpi_f08_types, only : MPI_File, MPI_Datatype, MPI_Request + use :: mpi_f08, only : ompi_file_iwrite_all_f + implicit none + TYPE(MPI_File), INTENT(IN) :: fh + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf + INTEGER, INTENT(IN) :: count + TYPE(MPI_Datatype), INTENT(IN) :: datatype + TYPE(MPI_Request), INTENT(OUT) :: request + INTEGER, OPTIONAL, INTENT(OUT) :: ierror + integer :: c_ierror + + call ompi_file_iwrite_all_f(fh%MPI_VAL,buf,count,& + datatype%MPI_VAL,request%MPI_VAL,c_ierror) + if (present(ierror)) ierror = c_ierror + +end subroutine PMPI_File_iwrite_all_f08 diff --git a/ompi/mpi/fortran/use-mpi-f08/profile/pfile_iwrite_at_all_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/profile/pfile_iwrite_at_all_f08.F90 new file mode 100644 index 00000000000..ff5116f5d85 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/profile/pfile_iwrite_at_all_f08.F90 @@ -0,0 +1,28 @@ +! -*- f90 -*- +! +! Copyright (c) 2009-2012 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2009-2012 Los Alamos National Security, LLC. +! All Rights reserved. +! Copyright (c) 2017 FUJITSU LIMITED. All rights reserved. +! $COPYRIGHT$ + +#include "ompi/mpi/fortran/configure-fortran-output.h" + +subroutine PMPI_File_iwrite_at_all_f08(fh,offset,buf,count,datatype,request,ierror) + use :: mpi_f08_types, only : MPI_File, MPI_Datatype, MPI_Request, MPI_OFFSET_KIND + use :: mpi_f08, only : ompi_file_iwrite_at_all_f + implicit none + TYPE(MPI_File), INTENT(IN) :: fh + INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf + INTEGER, INTENT(IN) :: count + TYPE(MPI_Datatype), INTENT(IN) :: datatype + TYPE(MPI_Request), INTENT(OUT) :: request + INTEGER, OPTIONAL, INTENT(OUT) :: ierror + integer :: c_ierror + + call ompi_file_iwrite_at_all_f(fh%MPI_VAL,offset,buf,count,& + datatype%MPI_VAL,request%MPI_VAL,c_ierror) + if (present(ierror)) ierror = c_ierror + +end subroutine PMPI_File_iwrite_at_all_f08 From d1b78eb8a21fe20d3e525c36680e7c29f2077114 Mon Sep 17 00:00:00 2001 From: KAWASHIMA Takahiro Date: Tue, 26 Dec 2017 11:13:02 +0900 Subject: [PATCH 2/7] fortran: Remove ASYNCHRONOUS from mpi_f08 pmpi It was removed from only `mpi` as a bug fix in db41d749c1a. Signed-off-by: KAWASHIMA Takahiro (cherry picked from commit 9240967b8fe6860419df952696121a900666b54a) --- .../use-mpi-f08/mod/pmpi-f08-interfaces.F90 | 80 +++++++++---------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 index 09a4e434f68..c7fa65fc18a 100644 --- a/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 @@ -47,7 +47,7 @@ subroutine PMPI_Bsend_init_f08(buf,count,datatype,dest,tag,comm,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf INTEGER, INTENT(IN) :: count, dest, tag TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Comm), INTENT(IN) :: comm @@ -64,7 +64,7 @@ subroutine PMPI_Buffer_attach_f08(buffer,size,ierror) !$PRAGMA IGNORE_TKR buffer !DIR$ IGNORE_TKR buffer !IBM* IGNORE_TKR buffer - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buffer + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buffer INTEGER, INTENT(IN) :: size INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine PMPI_Buffer_attach_f08 @@ -113,7 +113,7 @@ subroutine PMPI_Ibsend_f08(buf,count,datatype,dest,tag,comm,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf INTEGER, INTENT(IN) :: count, dest, tag TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Comm), INTENT(IN) :: comm @@ -143,7 +143,7 @@ subroutine PMPI_Irecv_f08(buf,count,datatype,source,tag,comm,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf INTEGER, INTENT(IN) :: count, source, tag TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Comm), INTENT(IN) :: comm @@ -161,7 +161,7 @@ subroutine PMPI_Irsend_f08(buf,count,datatype,dest,tag,comm,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf INTEGER, INTENT(IN) :: count, dest, tag TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Comm), INTENT(IN) :: comm @@ -179,7 +179,7 @@ subroutine PMPI_Isend_f08(buf,count,datatype,dest,tag,comm,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf INTEGER, INTENT(IN) :: count, dest, tag TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Comm), INTENT(IN) :: comm @@ -197,7 +197,7 @@ subroutine PMPI_Issend_f08(buf,count,datatype,dest,tag,comm,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf INTEGER, INTENT(IN) :: count, dest, tag TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Comm), INTENT(IN) :: comm @@ -244,7 +244,7 @@ subroutine PMPI_Recv_init_f08(buf,count,datatype,source,tag,comm,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf INTEGER, INTENT(IN) :: count, source, tag TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Comm), INTENT(IN) :: comm @@ -299,7 +299,7 @@ subroutine PMPI_Rsend_init_f08(buf,count,datatype,dest,tag,comm,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf INTEGER, INTENT(IN) :: count, dest, tag TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Comm), INTENT(IN) :: comm @@ -373,7 +373,7 @@ subroutine PMPI_Send_init_f08(buf,count,datatype,dest,tag,comm,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf INTEGER, INTENT(IN) :: count, dest, tag TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Comm), INTENT(IN) :: comm @@ -408,7 +408,7 @@ subroutine PMPI_Ssend_init_f08(buf,count,datatype,dest,tag,comm,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf INTEGER, INTENT(IN) :: count, dest, tag TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Comm), INTENT(IN) :: comm @@ -550,7 +550,7 @@ subroutine PMPI_Get_address_f08(location,address,ierror) !$PRAGMA IGNORE_TKR location !DIR$ IGNORE_TKR location !IBM* IGNORE_TKR location - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: location + OMPI_FORTRAN_IGNORE_TKR_TYPE :: location INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: address INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine PMPI_Get_address_f08 @@ -3004,7 +3004,7 @@ subroutine PMPI_Accumulate_f08(origin_addr,origin_count,origin_datatype,target_r !$PRAGMA IGNORE_TKR origin_addr !DIR$ IGNORE_TKR origin_addr !IBM* IGNORE_TKR origin_addr - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: origin_addr + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr INTEGER, INTENT(IN) :: origin_count, target_rank, target_count TYPE(MPI_Datatype), INTENT(IN) :: origin_datatype INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp @@ -3048,7 +3048,7 @@ subroutine PMPI_Get_f08(origin_addr,origin_count,origin_datatype,target_rank, & !$PRAGMA IGNORE_TKR origin_addr !DIR$ IGNORE_TKR origin_addr !IBM* IGNORE_TKR origin_addr - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: origin_addr + OMPI_FORTRAN_IGNORE_TKR_TYPE :: origin_addr INTEGER, INTENT(IN) :: origin_count, target_rank, target_count TYPE(MPI_Datatype), INTENT(IN) :: origin_datatype INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp @@ -3138,7 +3138,7 @@ subroutine PMPI_Put_f08(origin_addr,origin_count,origin_datatype,target_rank, & !$PRAGMA IGNORE_TKR origin_addr !DIR$ IGNORE_TKR origin_addr !IBM* IGNORE_TKR origin_addr - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: origin_addr + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr INTEGER, INTENT(IN) :: origin_count, target_rank, target_count TYPE(MPI_Datatype), INTENT(IN) :: origin_datatype INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp @@ -3228,7 +3228,7 @@ subroutine PMPI_Win_create_f08(base,size,disp_unit,info,comm,win,ierror) !$PRAGMA IGNORE_TKR base !DIR$ IGNORE_TKR base !IBM* IGNORE_TKR base - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: base + OMPI_FORTRAN_IGNORE_TKR_TYPE :: base INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: size INTEGER, INTENT(IN) :: disp_unit TYPE(MPI_Info), INTENT(IN) :: info @@ -3667,7 +3667,7 @@ subroutine PMPI_File_iread_f08(fh,buf,count,datatype,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Request), INTENT(OUT) :: request @@ -3686,7 +3686,7 @@ subroutine PMPI_File_iread_at_f08(fh,offset,buf,count,datatype,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Request), INTENT(OUT) :: request @@ -3704,7 +3704,7 @@ subroutine PMPI_File_iread_all_f08(fh,buf,count,datatype,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Request), INTENT(OUT) :: request @@ -3723,7 +3723,7 @@ subroutine PMPI_File_iread_at_all_f08(fh,offset,buf,count,datatype,request,ierro !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Request), INTENT(OUT) :: request @@ -3741,7 +3741,7 @@ subroutine PMPI_File_iread_shared_f08(fh,buf,count,datatype,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Request), INTENT(OUT) :: request @@ -3759,7 +3759,7 @@ subroutine PMPI_File_iwrite_f08(fh,buf,count,datatype,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Request), INTENT(OUT) :: request @@ -3778,7 +3778,7 @@ subroutine PMPI_File_iwrite_at_f08(fh,offset,buf,count,datatype,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Request), INTENT(OUT) :: request @@ -3796,7 +3796,7 @@ subroutine PMPI_File_iwrite_all_f08(fh,buf,count,datatype,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Request), INTENT(OUT) :: request @@ -3815,7 +3815,7 @@ subroutine PMPI_File_iwrite_at_all_f08(fh,offset,buf,count,datatype,request,ierr !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Request), INTENT(OUT) :: request @@ -3832,7 +3832,7 @@ subroutine PMPI_File_iwrite_shared_f08(fh,buf,count,datatype,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf TYPE(MPI_File), INTENT(IN) :: fh INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype @@ -3910,7 +3910,7 @@ subroutine PMPI_File_read_all_begin_f08(fh,buf,count,datatype,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype INTEGER, OPTIONAL, INTENT(OUT) :: ierror @@ -3927,7 +3927,7 @@ subroutine PMPI_File_read_all_end_f08(fh,buf,status,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf TYPE(MPI_Status) :: status INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine PMPI_File_read_all_end_f08 @@ -3982,7 +3982,7 @@ subroutine PMPI_File_read_at_all_begin_f08(fh,offset,buf,count,datatype,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype INTEGER, OPTIONAL, INTENT(OUT) :: ierror @@ -3999,7 +3999,7 @@ subroutine PMPI_File_read_at_all_end_f08(fh,buf,status,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf TYPE(MPI_Status) :: status INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine PMPI_File_read_at_all_end_f08 @@ -4033,7 +4033,7 @@ subroutine PMPI_File_read_ordered_begin_f08(fh,buf,count,datatype,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype INTEGER, OPTIONAL, INTENT(OUT) :: ierror @@ -4050,7 +4050,7 @@ subroutine PMPI_File_read_ordered_end_f08(fh,buf,status,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf TYPE(MPI_Status) :: status INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine PMPI_File_read_ordered_end_f08 @@ -4195,7 +4195,7 @@ subroutine PMPI_File_write_all_begin_f08(fh,buf,count,datatype,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype INTEGER, OPTIONAL, INTENT(OUT) :: ierror @@ -4212,7 +4212,7 @@ subroutine PMPI_File_write_all_end_f08(fh,buf,status,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf TYPE(MPI_Status) :: status INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine PMPI_File_write_all_end_f08 @@ -4267,7 +4267,7 @@ subroutine PMPI_File_write_at_all_begin_f08(fh,offset,buf,count,datatype,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype INTEGER, OPTIONAL, INTENT(OUT) :: ierror @@ -4284,7 +4284,7 @@ subroutine PMPI_File_write_at_all_end_f08(fh,buf,status,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf TYPE(MPI_Status) :: status INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine PMPI_File_write_at_all_end_f08 @@ -4318,7 +4318,7 @@ subroutine PMPI_File_write_ordered_begin_f08(fh,buf,count,datatype,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype INTEGER, OPTIONAL, INTENT(OUT) :: ierror @@ -4335,7 +4335,7 @@ subroutine PMPI_File_write_ordered_end_f08(fh,buf,status,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf TYPE(MPI_Status) :: status INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine PMPI_File_write_ordered_end_f08 @@ -4465,7 +4465,7 @@ subroutine PMPI_F_sync_reg_f08(buf) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf end subroutine PMPI_F_sync_reg_f08 end interface PMPI_F_sync_reg @@ -4513,7 +4513,7 @@ subroutine PMPI_Imrecv_f08(buf,count,datatype,message,request,ierror) !$PRAGMA IGNORE_TKR buf !DIR$ IGNORE_TKR buf !IBM* IGNORE_TKR buf - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf + OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf INTEGER, INTENT(IN) :: count TYPE(MPI_Datatype), INTENT(IN) :: datatype TYPE(MPI_Message), INTENT(INOUT) :: message From 410fb5e88d16bb6cda1a4d968da84d18343ab80e Mon Sep 17 00:00:00 2001 From: KAWASHIMA Takahiro Date: Tue, 26 Dec 2017 11:16:37 +0900 Subject: [PATCH 3/7] fortran: Change `PMPI_Aint_{add,diff}` to functions. They were incorrectly changed to subroutines in only `pmpi` in 258d1aa1607. Strictly speaking, this change involves binary incompatibility. But nobody used these subroutines and nobody will be affected because these subroutines were useless (didn't return a calculated value). Signed-off-by: KAWASHIMA Takahiro (cherry picked from commit d4fc404dc67c156d436871b3e4d0a2d9cecea08a) --- .../fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 index c7fa65fc18a..b18ec2a5417 100644 --- a/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 @@ -2484,21 +2484,23 @@ end function PMPI_Wtime_f08 end interface PMPI_Wtime interface PMPI_Aint_add -subroutine PMPI_Aint_add_f08(base,diff) +function PMPI_Aint_add_f08(base,diff) use :: mpi_f08_types, only : MPI_ADDRESS_KIND implicit none INTEGER(MPI_ADDRESS_KIND) :: base INTEGER(MPI_ADDRESS_KIND) :: diff -end subroutine PMPI_Aint_add_f08 + INTEGER(MPI_ADDRESS_KIND) :: PMPI_Aint_add_f08 +end function PMPI_Aint_add_f08 end interface PMPI_Aint_add interface PMPI_Aint_diff -subroutine PMPI_Aint_diff_f08(addr1,addr2) +function PMPI_Aint_diff_f08(addr1,addr2) use :: mpi_f08_types, only : MPI_ADDRESS_KIND implicit none INTEGER(MPI_ADDRESS_KIND) :: addr1 INTEGER(MPI_ADDRESS_KIND) :: addr2 -end subroutine PMPI_Aint_diff_f08 + INTEGER(MPI_ADDRESS_KIND) :: PMPI_Aint_diff_f08 +end function PMPI_Aint_diff_f08 end interface PMPI_Aint_diff interface PMPI_Abort From 0804acacc3d352a65968066b59d23046c5d5c2f1 Mon Sep 17 00:00:00 2001 From: KAWASHIMA Takahiro Date: Tue, 26 Dec 2017 11:40:12 +0900 Subject: [PATCH 4/7] fortran: Use `C_PTR` for `buffer_addr` It was changed to use `C_PTR` in only `mpi` in fc69c0be247. Signed-off-by: KAWASHIMA Takahiro (cherry picked from commit 0c3a534b32861882fcd40b1644fdf1b21f961582) --- ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 index b18ec2a5417..47e564b8e4e 100644 --- a/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 @@ -72,13 +72,9 @@ end subroutine PMPI_Buffer_attach_f08 interface PMPI_Buffer_detach subroutine PMPI_Buffer_detach_f08(buffer_addr,size,ierror) + USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR implicit none - !DEC$ ATTRIBUTES NO_ARG_CHECK :: buffer_addr - !GCC$ ATTRIBUTES NO_ARG_CHECK :: buffer_addr - !$PRAGMA IGNORE_TKR buffer_addr - !DIR$ IGNORE_TKR buffer_addr - !IBM* IGNORE_TKR buffer_addr - OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buffer_addr + TYPE(C_PTR), INTENT(OUT) :: buffer_addr INTEGER, INTENT(OUT) :: size INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine PMPI_Buffer_detach_f08 From 6a24adfc5ab0d2803697368f431a897be2105cfd Mon Sep 17 00:00:00 2001 From: KAWASHIMA Takahiro Date: Tue, 26 Dec 2017 11:41:37 +0900 Subject: [PATCH 5/7] fortran: Correct type of `info_used` It is incorrectly typed as `MPI_Comm` in only `pmpi` in 24f7bd327e3. Signed-off-by: KAWASHIMA Takahiro (cherry picked from commit 056eb39b122b56b8f802c24b79dadd3ed0aa2f5e) --- ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 index 47e564b8e4e..dfca6b9c12e 100644 --- a/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 @@ -1759,7 +1759,7 @@ subroutine PMPI_Comm_get_info_f08(comm,info_used,ierror) use :: mpi_f08_types, only : MPI_Comm, MPI_Info implicit none TYPE(MPI_Comm), INTENT(IN) :: comm - TYPE(MPI_Comm), INTENT(OUT) :: info_used + TYPE(MPI_Info), INTENT(OUT) :: info_used INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine PMPI_Comm_get_info_f08 end interface PMPI_Comm_get_info From b3f1fc8fcf36fd292c9d2ecd9cc92d5f0e896837 Mon Sep 17 00:00:00 2001 From: KAWASHIMA Takahiro Date: Tue, 26 Dec 2017 11:59:17 +0900 Subject: [PATCH 6/7] fortran: Align indentation This change makes comparison of `mpi-f08-interfaces.F90` and `pmpi-f08-interfaces.F90` easier. Signed-off-by: KAWASHIMA Takahiro (cherry picked from commit 00e3c7a973672050f8ce9389c28478888bc3bfeb) --- .../use-mpi-f08/mod/mpi-f08-interfaces.F90 | 21 ++++++++++--------- .../use-mpi-f08/mod/pmpi-f08-interfaces.F90 | 17 +++++++-------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-interfaces.F90 index 4a75efba4e0..fd46c5d730a 100644 --- a/ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-interfaces.F90 @@ -9,6 +9,7 @@ ! Copyright (c) 2012 Inria. All rights reserved. ! Copyright (c) 2015-2017 Research Organization for Information Science ! and Technology (RIST). All rights reserved. +! Copyright (c) 2017 FUJITSU LIMITED. All rights reserved. ! $COPYRIGHT$ ! ! This file provides the interface specifications for the MPI Fortran @@ -2101,7 +2102,7 @@ subroutine MPI_Type_set_name_f08(datatype,type_name,ierror) end subroutine MPI_Type_set_name_f08 end interface MPI_Type_set_name -interface MPI_Win_allocate +interface MPI_Win_allocate subroutine MPI_Win_allocate_f08(size, disp_unit, info, comm, & baseptr, win, ierror) USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR @@ -2114,9 +2115,9 @@ subroutine MPI_Win_allocate_f08(size, disp_unit, info, comm, & TYPE(MPI_Win), INTENT(OUT) :: win INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine MPI_Win_allocate_f08 -end interface MPI_Win_allocate +end interface MPI_Win_allocate -interface MPI_Win_allocate_shared +interface MPI_Win_allocate_shared subroutine MPI_Win_allocate_shared_f08(size, disp_unit, info, comm, & baseptr, win, ierror) USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR @@ -2129,7 +2130,7 @@ subroutine MPI_Win_allocate_shared_f08(size, disp_unit, info, comm, & TYPE(MPI_Win), INTENT(OUT) :: win INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine MPI_Win_allocate_shared_f08 -end interface MPI_Win_allocate_shared +end interface MPI_Win_allocate_shared interface MPI_Win_create_keyval subroutine MPI_Win_create_keyval_f08(win_copy_attr_fn,win_delete_attr_fn,win_keyval, & @@ -2465,7 +2466,7 @@ function MPI_Wtick_f08( ) BIND(C,name="MPI_Wtick") use, intrinsic :: ISO_C_BINDING implicit none DOUBLE PRECISION :: MPI_Wtick_f08 -end function MPI_Wtick_f08 +end function MPI_Wtick_f08 end interface MPI_Wtick ! MPI_Wtime is not a wrapper function @@ -2475,7 +2476,7 @@ function MPI_Wtime_f08( ) BIND(C,name="MPI_Wtime") use, intrinsic :: ISO_C_BINDING implicit none DOUBLE PRECISION :: MPI_Wtime_f08 -end function MPI_Wtime_f08 +end function MPI_Wtime_f08 end interface MPI_Wtime interface MPI_Aint_add @@ -2485,7 +2486,7 @@ function MPI_Aint_add_f08(base,diff) INTEGER(MPI_ADDRESS_KIND) :: base INTEGER(MPI_ADDRESS_KIND) :: diff INTEGER(MPI_ADDRESS_KIND) :: MPI_Aint_add_f08 -end function MPI_Aint_add_f08 +end function MPI_Aint_add_f08 end interface MPI_Aint_add interface MPI_Aint_diff @@ -2495,7 +2496,7 @@ function MPI_Aint_diff_f08(addr1,addr2) INTEGER(MPI_ADDRESS_KIND) :: addr1 INTEGER(MPI_ADDRESS_KIND) :: addr2 INTEGER(MPI_ADDRESS_KIND) :: MPI_Aint_diff_f08 -end function MPI_Aint_diff_f08 +end function MPI_Aint_diff_f08 end interface MPI_Aint_diff interface MPI_Abort @@ -3336,7 +3337,7 @@ subroutine MPI_Win_post_f08(group,assert,win,ierror) end subroutine MPI_Win_post_f08 end interface MPI_Win_post -interface MPI_Win_shared_query +interface MPI_Win_shared_query subroutine MPI_Win_shared_query_f08(win, rank, size, disp_unit, baseptr,& ierror) USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR @@ -3348,7 +3349,7 @@ subroutine MPI_Win_shared_query_f08(win, rank, size, disp_unit, baseptr,& TYPE(C_PTR), INTENT(OUT) :: baseptr INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine MPI_Win_shared_query_f08 -end interface +end interface MPI_Win_shared_query interface MPI_Win_start subroutine MPI_Win_start_f08(group,assert,win,ierror) diff --git a/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 index dfca6b9c12e..ebf4bdbf8eb 100644 --- a/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/mod/pmpi-f08-interfaces.F90 @@ -2102,7 +2102,7 @@ subroutine PMPI_Type_set_name_f08(datatype,type_name,ierror) end subroutine PMPI_Type_set_name_f08 end interface PMPI_Type_set_name -interface PMPI_Win_allocate +interface PMPI_Win_allocate subroutine PMPI_Win_allocate_f08(size, disp_unit, info, comm, & baseptr, win, ierror) USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR @@ -2115,9 +2115,9 @@ subroutine PMPI_Win_allocate_f08(size, disp_unit, info, comm, & TYPE(MPI_Win), INTENT(OUT) :: win INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine PMPI_Win_allocate_f08 -end interface PMPI_Win_allocate +end interface PMPI_Win_allocate -interface PMPI_Win_allocate_shared +interface PMPI_Win_allocate_shared subroutine PMPI_Win_allocate_shared_f08(size, disp_unit, info, comm, & baseptr, win, ierror) USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR @@ -2130,7 +2130,7 @@ subroutine PMPI_Win_allocate_shared_f08(size, disp_unit, info, comm, & TYPE(MPI_Win), INTENT(OUT) :: win INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine PMPI_Win_allocate_shared_f08 -end interface PMPI_Win_allocate_shared +end interface PMPI_Win_allocate_shared interface PMPI_Win_create_keyval subroutine PMPI_Win_create_keyval_f08(win_copy_attr_fn,win_delete_attr_fn,win_keyval, & @@ -2486,7 +2486,7 @@ function PMPI_Aint_add_f08(base,diff) INTEGER(MPI_ADDRESS_KIND) :: base INTEGER(MPI_ADDRESS_KIND) :: diff INTEGER(MPI_ADDRESS_KIND) :: PMPI_Aint_add_f08 -end function PMPI_Aint_add_f08 +end function PMPI_Aint_add_f08 end interface PMPI_Aint_add interface PMPI_Aint_diff @@ -2496,7 +2496,7 @@ function PMPI_Aint_diff_f08(addr1,addr2) INTEGER(MPI_ADDRESS_KIND) :: addr1 INTEGER(MPI_ADDRESS_KIND) :: addr2 INTEGER(MPI_ADDRESS_KIND) :: PMPI_Aint_diff_f08 -end function PMPI_Aint_diff_f08 +end function PMPI_Aint_diff_f08 end interface PMPI_Aint_diff interface PMPI_Abort @@ -2676,7 +2676,6 @@ end subroutine PMPI_Finalized_f08 ! ASYNCHRONOUS had to removed from the base argument because ! the dummy argument is not an assumed-shape array. This will ! be okay once the Interop TR is implemented. -! interface PMPI_Free_mem subroutine PMPI_Free_mem_f08(base,ierror) implicit none @@ -3338,7 +3337,7 @@ subroutine PMPI_Win_post_f08(group,assert,win,ierror) end subroutine PMPI_Win_post_f08 end interface PMPI_Win_post -interface PMPI_Win_shared_query +interface PMPI_Win_shared_query subroutine PMPI_Win_shared_query_f08(win, rank, size, disp_unit, baseptr,& ierror) USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR @@ -3350,7 +3349,7 @@ subroutine PMPI_Win_shared_query_f08(win, rank, size, disp_unit, baseptr,& TYPE(C_PTR), INTENT(OUT) :: baseptr INTEGER, OPTIONAL, INTENT(OUT) :: ierror end subroutine PMPI_Win_shared_query_f08 -end interface PMPI_Win_shared_query +end interface PMPI_Win_shared_query interface PMPI_Win_start subroutine PMPI_Win_start_f08(group,assert,win,ierror) From 4016253bca69bda66b79cbd5a7a34520aec948d7 Mon Sep 17 00:00:00 2001 From: KAWASHIMA Takahiro Date: Tue, 26 Dec 2017 15:53:12 +0900 Subject: [PATCH 7/7] fortran: Call PMPI from PMPI_Status_set_cancelled_f08 This is a bug which was forgotten to change in c08f97b0304. Signed-off-by: KAWASHIMA Takahiro (cherry picked from commit bd2fe9c324c449143651465016670ca573617a3e) --- .../fortran/use-mpi-f08/profile/pstatus_set_cancelled_f08.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ompi/mpi/fortran/use-mpi-f08/profile/pstatus_set_cancelled_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/profile/pstatus_set_cancelled_f08.F90 index 8e05c6bed89..620e85a7c94 100644 --- a/ompi/mpi/fortran/use-mpi-f08/profile/pstatus_set_cancelled_f08.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/profile/pstatus_set_cancelled_f08.F90 @@ -16,12 +16,12 @@ subroutine PMPI_Status_set_cancelled_f08(status,flag,ierror) ! See note in mpi-f-interfaces-bind.h for why we include an ! interface here and call a PMPI_* subroutine below. interface - subroutine MPI_Status_set_cancelled(status, flag, ierror) + subroutine PMPI_Status_set_cancelled(status, flag, ierror) use :: mpi_f08_types, only : MPI_Status type(MPI_Status), intent(inout) :: status logical, intent(in) :: flag integer, intent(out) :: ierror - end subroutine MPI_Status_set_cancelled + end subroutine PMPI_Status_set_cancelled end interface call PMPI_Status_set_cancelled(status,flag,c_ierror)