From 68085912e7553ea7eabb03020ec43d46eff2aa12 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/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 75bbf7600d8..881f52c5ed1 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-2016 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$ # @@ -753,9 +754,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/pmpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 index 99c6306d58d..b5e8c6caffd 100644 --- a/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 @@ -9,6 +9,7 @@ ! Copyright (c) 2012 Inria. All rights reserved. ! Copyright (c) 2015 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 @@ -3192,6 +3243,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 @@ -3252,6 +3345,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 647a363888e19cafa2c3d32c39daacdbe567c54f 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/pmpi-f08-interfaces.F90 | 80 +++++++++---------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 index b5e8c6caffd..9645873b12b 100644 --- a/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/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 @@ -3009,7 +3009,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 @@ -3053,7 +3053,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 @@ -3143,7 +3143,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 @@ -3233,7 +3233,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 @@ -3674,7 +3674,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 @@ -3693,7 +3693,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 @@ -3711,7 +3711,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 @@ -3730,7 +3730,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 @@ -3748,7 +3748,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 @@ -3766,7 +3766,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 @@ -3785,7 +3785,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 @@ -3803,7 +3803,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 @@ -3822,7 +3822,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 @@ -3839,7 +3839,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 @@ -3917,7 +3917,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 @@ -3934,7 +3934,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 @@ -3989,7 +3989,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 @@ -4006,7 +4006,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 @@ -4040,7 +4040,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 @@ -4057,7 +4057,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 @@ -4202,7 +4202,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 @@ -4219,7 +4219,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 @@ -4274,7 +4274,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 @@ -4291,7 +4291,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 @@ -4325,7 +4325,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 @@ -4342,7 +4342,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 @@ -4475,7 +4475,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 @@ -4523,7 +4523,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 5d19b39f205b81b50e69af480ec37fc0056b305c 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) --- ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 index 9645873b12b..03d1da8f61a 100644 --- a/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/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 58d98ed71894da29b600f19222d63079d82d18c4 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/pmpi-f08-interfaces.F90 | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 index 03d1da8f61a..57e998c516b 100644 --- a/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/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 14d24101b67eebbef95c19d206cc1df5eaa79732 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/pmpi-f08-interfaces.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 index 57e998c516b..ccddfa49605 100644 --- a/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/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 a31662edb09ae5d19f10c4eecd8e6ce524c07ab8 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/mpi-f08-interfaces.F90 | 21 ++++++++++--------- .../use-mpi-f08/pmpi-f08-interfaces.F90 | 17 +++++++-------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/ompi/mpi/fortran/use-mpi-f08/mpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/mpi-f08-interfaces.F90 index 0ef30a25139..3e5940d21c8 100644 --- a/ompi/mpi/fortran/use-mpi-f08/mpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/mpi-f08-interfaces.F90 @@ -9,6 +9,7 @@ ! Copyright (c) 2012 Inria. All rights reserved. ! Copyright (c) 2015 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 @@ -3341,7 +3342,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 @@ -3353,7 +3354,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/pmpi-f08-interfaces.F90 b/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 index ccddfa49605..42e3dc62602 100644 --- a/ompi/mpi/fortran/use-mpi-f08/pmpi-f08-interfaces.F90 +++ b/ompi/mpi/fortran/use-mpi-f08/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 @@ -2681,7 +2681,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 @@ -3343,7 +3342,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 @@ -3355,7 +3354,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 1d3f78c0fe8aee1665f33602d10361ed0abf1ea9 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)