1
1

Merge pull request #4659 from yanagibashi/pr/fortran2008

Add missing Fortran 2008 binding subroutines
Этот коммит содержится в:
KAWASHIMA Takahiro 2017-12-22 01:53:36 -06:00 коммит произвёл GitHub
родитель a600525836 3f4b373856
Коммит 4cd917a3fd
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
6 изменённых файлов: 221 добавлений и 0 удалений

Просмотреть файл

@ -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 \

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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