From 8bcb3a2e4a49bd7fed776d80eb14d80c554c6abd Mon Sep 17 00:00:00 2001 From: Gilles Gouaillardet Date: Sun, 23 Oct 2016 11:27:41 +0900 Subject: [PATCH 1/9] fortran/use-mpi-ignore-trk: fix typo in MPI_File_read_ordered_begin interface (cherry picked from commit open-mpi/ompi@e02dc1e63790ddc6b02616c19888d32aebded637) Signed-off-by: Gilles Gouaillardet --- .../mpi-ignore-tkr-file-interfaces.h.in | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h.in b/ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h.in index 09b15caa208..fe0c661a2f6 100644 --- a/ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h.in +++ b/ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h.in @@ -878,27 +878,27 @@ end interface interface MPI_File_read_ordered_begin -subroutine MPI_File_read_ord_begin(fh, buf, count, datatype, ierror) +subroutine MPI_File_read_ordered_begin(fh, buf, count, datatype, ierror) integer, intent(in) :: fh @OMPI_FORTRAN_IGNORE_TKR_PREDECL@ buf @OMPI_FORTRAN_IGNORE_TKR_TYPE@ :: buf integer, intent(in) :: count integer, intent(in) :: datatype integer, intent(out) :: ierror -end subroutine MPI_File_read_ord_begin +end subroutine MPI_File_read_ordered_begin end interface interface PMPI_File_read_ordered_begin -subroutine PMPI_File_read_ord_begin(fh, buf, count, datatype, ierror) +subroutine PMPI_File_read_ordered_begin(fh, buf, count, datatype, ierror) integer, intent(in) :: fh @OMPI_FORTRAN_IGNORE_TKR_PREDECL@ buf @OMPI_FORTRAN_IGNORE_TKR_TYPE@ :: buf integer, intent(in) :: count integer, intent(in) :: datatype integer, intent(out) :: ierror -end subroutine PMPI_File_read_ord_begin +end subroutine PMPI_File_read_ordered_begin end interface From 1ba7519c8262bafe06503d075f1729009af99425 Mon Sep 17 00:00:00 2001 From: Gilles Gouaillardet Date: Sun, 23 Oct 2016 11:30:07 +0900 Subject: [PATCH 2/9] fortran/use-mpi-ignore-tkr: fix typo in MPI_File_write_at_all_begin interface (cherry picked from commit open-mpi/ompi@e2769e4343312b47f0b24549b1e9e51878fd044d) Signed-off-by: Gilles Gouaillardet --- .../mpi-ignore-tkr-file-interfaces.h.in | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h.in b/ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h.in index fe0c661a2f6..eb7765e0067 100644 --- a/ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h.in +++ b/ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h.in @@ -1343,7 +1343,7 @@ end interface interface MPI_File_write_at_all_begin -subroutine MPI_File_wr_at_all_begin(fh, offset, buf, count, datatype& +subroutine MPI_File_write_at_all_begin(fh, offset, buf, count, datatype& , ierror) include 'mpif-config.h' integer, intent(in) :: fh @@ -1353,13 +1353,13 @@ subroutine MPI_File_wr_at_all_begin(fh, offset, buf, count, datatype& integer, intent(in) :: count integer, intent(in) :: datatype integer, intent(out) :: ierror -end subroutine MPI_File_wr_at_all_begin +end subroutine MPI_File_write_at_all_begin end interface interface PMPI_File_write_at_all_begin -subroutine PMPI_File_wr_at_all_begin(fh, offset, buf, count, datatype& +subroutine PMPI_File_write_at_all_begin(fh, offset, buf, count, datatype& , ierror) include 'mpif-config.h' integer, intent(in) :: fh @@ -1369,7 +1369,7 @@ subroutine PMPI_File_wr_at_all_begin(fh, offset, buf, count, datatype& integer, intent(in) :: count integer, intent(in) :: datatype integer, intent(out) :: ierror -end subroutine PMPI_File_wr_at_all_begin +end subroutine PMPI_File_write_at_all_begin end interface From 2b504a2a8b261e9ae8ccbefffe78ab79db630fac Mon Sep 17 00:00:00 2001 From: Gilles Gouaillardet Date: Mon, 24 Oct 2016 09:48:17 +0900 Subject: [PATCH 3/9] fortran: correctly defines MPI_DISPLACEMENT_CURRENT with KIND=MPI_OFFSET_KIND and remove unused ompi/include/mpif-mpi-io.h (back-ported from commit open-mpi/ompi@055df6f7c650561cb1d14601cb7ed28d95c21a11) Signed-off-by: Gilles Gouaillardet --- ompi/include/mpif-mpi-io.h | 85 ------------------------------------- ompi/include/mpif-values.pl | 28 +++++++++--- 2 files changed, 22 insertions(+), 91 deletions(-) delete mode 100644 ompi/include/mpif-mpi-io.h diff --git a/ompi/include/mpif-mpi-io.h b/ompi/include/mpif-mpi-io.h deleted file mode 100644 index 6ffa9986078..00000000000 --- a/ompi/include/mpif-mpi-io.h +++ /dev/null @@ -1,85 +0,0 @@ -! -*- fortran -*- -! -! Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana -! University Research and Technology -! Corporation. All rights reserved. -! Copyright (c) 2004-2005 The University of Tennessee and The University -! of Tennessee Research Foundation. All rights -! reserved. -! Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, -! University of Stuttgart. All rights reserved. -! Copyright (c) 2004-2005 The Regents of the University of California. -! All rights reserved. -! Copyright (c) 2006 Cisco Systems, Inc. All rights reserved. -! $COPYRIGHT$ -! -! Additional copyrights may follow -! -! $HEADER$ -! -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! -! Do ***not*** copy this file to the directory where your Fortran -! fortran application is compiled unless it is absolutely necessary! Most -! modern Fortran compilers now support the -I command line flag, which -! tells the compiler where to find .h files (specifically, this one). For -! example: -! -! shell$ mpif77 foo.f -o foo -I$OMPI_HOME/include -! -! will probably do the trick (assuming that you have set OMPI_HOME -! properly). -! -! That being said, OMPI's "mpif77" wrapper compiler should -! automatically include the -I option for you. The following command -! should be equivalent to the command listed above: -! -! shell$ mpif77 foo.f -o foo -! -! You should not copy this file to your local directory because it is -! possible that this file will be changed between versions of Open MPI. -! Indeed, this mpif.h is incompatible with the mpif.f of other -! implementations of MPI. Using this mpif.h with other implementations -! of MPI, or with other versions of Open MPI will result in undefined -! behavior (to include incorrect results, segmentation faults, -! unexplainable "hanging" in your application, etc.). Always use the -! -I command line option instead (or let mpif77 do it for you). -! -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -! -! This file is included as a back-end file to both mpif.h (i.e., the -! standardized MPI Fortran header file) and a bunch of the MPI -! Fortran 90 subroutine implementations found in ompi/mpi/f90. -! -! This file contains the output from configure that is relevant for -! Fortran applications (both 77 and 90) and a few values that are -! necessary to compile the F90 module (e.g., MPI_STATUS_SIZE). -! - - integer MPI_FILE_NULL - integer MPI_SEEK_SET, MPI_SEEK_CUR, MPI_SEEK_END - integer MPI_MODE_CREATE - integer MPI_MODE_RDONLY, MPI_MODE_WRONLY, MPI_MODE_RDWR - integer MPI_MODE_DELETE_ON_CLOSE, MPI_MODE_UNIQUE_OPEN - integer MPI_MODE_EXCL, MPI_MODE_APPEND, MPI_MODE_SEQUENTIAL - integer MPI_DISPLACEMENT_CURRENT - - parameter (MPI_FILE_NULL=0) - parameter (MPI_SEEK_SET=600) - parameter (MPI_SEEK_CUR=602) - parameter (MPI_SEEK_END=604) - parameter (MPI_MODE_CREATE=1) - parameter (MPI_MODE_RDONLY=2) - parameter (MPI_MODE_WRONLY=4) - parameter (MPI_MODE_RDWR=8) - parameter (MPI_MODE_DELETE_ON_CLOSE=16) - parameter (MPI_MODE_UNIQUE_OPEN=32) - parameter (MPI_MODE_EXCL=64) - parameter (MPI_MODE_APPEND=128) - parameter (MPI_MODE_SEQUENTIAL=256) - parameter (MPI_DISPLACEMENT_CURRENT=-54278278) diff --git a/ompi/include/mpif-values.pl b/ompi/include/mpif-values.pl index d1ed57eb5f5..fc53a915bce 100755 --- a/ompi/include/mpif-values.pl +++ b/ompi/include/mpif-values.pl @@ -85,6 +85,7 @@ sub write_file { #---------------------------------------------------------------------------- my $handles; +my $lhandles; $handles->{MPI_COMM_WORLD} = 0; $handles->{MPI_COMM_SELF} = 1; @@ -364,7 +365,9 @@ sub write_file { $io_constants->{MPI_MODE_EXCL} = 64; $io_constants->{MPI_MODE_APPEND} = 128; $io_constants->{MPI_MODE_SEQUENTIAL} = 256; -$io_constants->{MPI_DISPLACEMENT_CURRENT} = -54278278; + +my $lio_constants; +$lio_constants->{MPI_DISPLACEMENT_CURRENT} = -54278278; #---------------------------------------------------------------------------- @@ -387,6 +390,8 @@ sub write_file { ! All rights reserved. ! Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. ! Copyright (c) 2009 Oak Ridge National Labs. All rights reserved. +! Copyright (c) 2016 Research Organization for Information Science +! and Technology (RIST). All rights reserved. ! $COPYRIGHT$ ! ! Additional copyrights may follow @@ -397,26 +402,32 @@ sub write_file { '; sub write_fortran_file { - my ($header, $vals, $file) = @_; + my ($header, $vals, $lvals, $file) = @_; foreach my $key (sort(keys(%{$vals}))) { $header .= " integer $key\n"; } + foreach my $key (sort(keys(%{$lvals}))) { + $header .= " integer(KIND=MPI_OFFSET_KIND) $key\n"; + } $header .= "\n"; foreach my $key (sort(keys(%{$vals}))) { $header .= " parameter ($key=$vals->{$key})\n"; } + foreach my $key (sort(keys(%{$lvals}))) { + $header .= " parameter ($key=$lvals->{$key})\n"; + } write_file($file, $header); } -write_fortran_file($header, $handles, +write_fortran_file($header, $handles, {}, "$topdir/ompi/include/mpif-handles.h"); -write_fortran_file($header, $constants, +write_fortran_file($header, $constants, {}, "$topdir/ompi/include/mpif-constants.h"); -write_fortran_file($header, $io_handles, +write_fortran_file($header, $io_handles, {}, "$topdir/ompi/include/mpif-io-handles.h"); -write_fortran_file($header, $io_constants, +write_fortran_file($header, $io_constants, $lio_constants, "$topdir/ompi/include/mpif-io-constants.h"); #---------------------------------------------------------------------------- @@ -444,6 +455,8 @@ sub write_fortran_file { * Copyright (c) 2009 Oak Ridge National Labs. All rights reserved. * Copyright (c) 2009-2012 Los Alamos National Security, LLC. * All rights reserved. + * Copyright (c) 2016 Research Organization for Information Science + * and Technology (RIST). All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -468,6 +481,9 @@ sub write_fortran_file { foreach my $key (sort(keys(%{$io_constants}))) { $output .= "#define OMPI_$key $io_constants->{$key}\n"; } +foreach my $key (sort(keys(%{$lio_constants}))) { + $output .= "#define OMPI_$key $lio_constants->{$key}\n"; +} $output .= "\n"; foreach my $key (sort(keys(%{$io_handles}))) { $output .= "#define OMPI_$key $io_handles->{$key}\n"; From 1e0cf3827f5cac719aff5306471c676b687f0530 Mon Sep 17 00:00:00 2001 From: Gilles Gouaillardet Date: Mon, 24 Oct 2016 09:04:29 +0900 Subject: [PATCH 4/9] man: fix typos in MPI_Info_get_{nkeys,nthkey} Thanks Nicolas Joly for the patch (cherry picked from commit open-mpi/ompi@98f62690f1c9ea82bc8e5c86ed31ee440c36616e) Signed-off-by: Gilles Gouaillardet --- ompi/mpi/man/man3/MPI_Info_get_nkeys.3in | 2 +- ompi/mpi/man/man3/MPI_Info_get_nthkey.3in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ompi/mpi/man/man3/MPI_Info_get_nkeys.3in b/ompi/mpi/man/man3/MPI_Info_get_nkeys.3in index 50a58e432a0..14df503c0dc 100644 --- a/ompi/mpi/man/man3/MPI_Info_get_nkeys.3in +++ b/ompi/mpi/man/man3/MPI_Info_get_nkeys.3in @@ -60,6 +60,6 @@ MPI_Info_get .br MPI_Info_get_nthkey .br -MPI_Info_get_valueln +MPI_Info_get_valuelen .br diff --git a/ompi/mpi/man/man3/MPI_Info_get_nthkey.3in b/ompi/mpi/man/man3/MPI_Info_get_nthkey.3in index 1388b6a85bf..6d0b066b46f 100644 --- a/ompi/mpi/man/man3/MPI_Info_get_nthkey.3in +++ b/ompi/mpi/man/man3/MPI_Info_get_nthkey.3in @@ -65,6 +65,6 @@ MPI_Info_get .br MPI_Info_get_nkeys .br -MPI_Info_get_valueln +MPI_Info_get_valuelen .br From 2400dfdcdd265b6aff722ba40168fc0059b02404 Mon Sep 17 00:00:00 2001 From: Gilles Gouaillardet Date: Fri, 28 Oct 2016 10:41:20 +0900 Subject: [PATCH 5/9] fortran/use-mpi-tkr: update .gitignore ignore automatically generated mpi-tkr-sizeof.* Signed-off-by: Gilles Gouaillardet (back-ported from commit open-mpi/ompi@52a1f967269712185aa0f082004380de0789ce58) --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 35ef6f6739a..ab2046a8ea3 100644 --- a/.gitignore +++ b/.gitignore @@ -319,6 +319,9 @@ ompi/mpi/fortran/use-mpi-tkr/fortran_sizes.h ompi/mpi/fortran/use-mpi-tkr/mpi_*.f90 ompi/mpi/fortran/use-mpi-tkr/mpi_kinds.ompi_module ompi/mpi/fortran/use-mpi-tkr/mpi-f90-interfaces.h +ompi/mpi/fortran/use-mpi-tkr/mpi-tkr-sizeof.f90 +ompi/mpi/fortran/use-mpi-tkr/mpi-tkr-sizeof.h + ompi/mpi/java/java/mpi ompi/mpi/java/java/*.jar ompi/mpi/java/java/*.h From 9befd8104b24f5d60205d883bdfe542d9e57c60b Mon Sep 17 00:00:00 2001 From: Gilles Gouaillardet Date: Tue, 25 Oct 2016 16:37:56 +0900 Subject: [PATCH 6/9] fortran/use-mpi-tkr: rename mpi-f90-cptr-interfaces.F90 into mpi-f90-cptr-interfaces.h this file is meant to be included and not compiled, so use a consistent naming Signed-off-by: Gilles Gouaillardet (back-ported from commit open-mpi/ompi@5543b19e9a0016adbf8c981b888c946f06593e5c) --- ompi/mpi/fortran/use-mpi-tkr/Makefile.am | 14 +++++++------- ...tr-interfaces.F90 => mpi-f90-cptr-interfaces.h} | 0 ompi/mpi/fortran/use-mpi-tkr/mpi.F90 | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) rename ompi/mpi/fortran/use-mpi-tkr/{mpi-f90-cptr-interfaces.F90 => mpi-f90-cptr-interfaces.h} (100%) diff --git a/ompi/mpi/fortran/use-mpi-tkr/Makefile.am b/ompi/mpi/fortran/use-mpi-tkr/Makefile.am index 2d5848bc90b..1090e095984 100644 --- a/ompi/mpi/fortran/use-mpi-tkr/Makefile.am +++ b/ompi/mpi/fortran/use-mpi-tkr/Makefile.am @@ -6,19 +6,19 @@ # Copyright (c) 2004-2005 The University of Tennessee and The University # of Tennessee Research Foundation. All rights # reserved. -# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, # University of Stuttgart. All rights reserved. # Copyright (c) 2004-2005 The Regents of the University of California. # All rights reserved. # Copyright (c) 2006-2015 Cisco Systems, Inc. All rights reserved. # Copyright (c) 2007 Los Alamos National Security, LLC. All rights -# reserved. -# Copyright (c) 2014-2015 Research Organization for Information Science +# reserved. +# Copyright (c) 2014-2016 Research Organization for Information Science # and Technology (RIST). All rights reserved. # $COPYRIGHT$ -# +# # Additional copyrights may follow -# +# # $HEADER$ # @@ -58,7 +58,7 @@ lib_LTLIBRARIES += libmpi_usempi.la mpi.lo: mpi.F90 mpi.lo: mpi-f90-interfaces.h mpi.lo: $(top_builddir)/ompi/mpi/fortran/configure-fortran-output.h -mpi.lo: mpi-f90-cptr-interfaces.F90 +mpi.lo: mpi-f90-cptr-interfaces.h # Per MPI-3 p610:34-41, if we're building a TKR mpi module, we should # not build any interfaces for MPI subroutines that take a choice @@ -162,5 +162,5 @@ endif EXTRA_DIST = \ mpi-f90-interfaces.h \ - mpi-f90-cptr-interfaces.F90 + mpi-f90-cptr-interfaces.h diff --git a/ompi/mpi/fortran/use-mpi-tkr/mpi-f90-cptr-interfaces.F90 b/ompi/mpi/fortran/use-mpi-tkr/mpi-f90-cptr-interfaces.h similarity index 100% rename from ompi/mpi/fortran/use-mpi-tkr/mpi-f90-cptr-interfaces.F90 rename to ompi/mpi/fortran/use-mpi-tkr/mpi-f90-cptr-interfaces.h diff --git a/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 b/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 index 4d1feea1545..cba5fe423c3 100644 --- a/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 +++ b/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 @@ -43,7 +43,7 @@ module mpi ! this compiler may or may not support). We use an "if" preprocessor ! macro in this file, so we need to use the preprocessor include ! directive, not the Fortran include. -#include "mpi-f90-cptr-interfaces.F90" +#include "mpi-f90-cptr-interfaces.h" ! This file is generated, and is *huge*. Its size is directly related ! to the --with-f90-max-array-dim configure parameter. From d6c07b80e51337d7ff63341b6bfc77c70ca93767 Mon Sep 17 00:00:00 2001 From: Gilles Gouaillardet Date: Tue, 25 Oct 2016 15:51:36 +0900 Subject: [PATCH 7/9] fortran/use-mpi-tkr: only build MPI_File support if requested Signed-off-by: Gilles Gouaillardet (cherry picked from commit open-mpi/ompi@8e26e787280f76b352a08ba1b0cfe603855ac2e1) --- ompi/mpi/fortran/use-mpi-tkr/Makefile.am | 2 + .../use-mpi-tkr/mpi-f90-file-interfaces.h | 321 ++++++++++++++++++ .../fortran/use-mpi-tkr/mpi-f90-interfaces.h | 303 +---------------- ompi/mpi/fortran/use-mpi-tkr/mpi.F90 | 3 + 4 files changed, 328 insertions(+), 301 deletions(-) create mode 100644 ompi/mpi/fortran/use-mpi-tkr/mpi-f90-file-interfaces.h diff --git a/ompi/mpi/fortran/use-mpi-tkr/Makefile.am b/ompi/mpi/fortran/use-mpi-tkr/Makefile.am index 1090e095984..81055ed730d 100644 --- a/ompi/mpi/fortran/use-mpi-tkr/Makefile.am +++ b/ompi/mpi/fortran/use-mpi-tkr/Makefile.am @@ -57,6 +57,7 @@ lib_LTLIBRARIES += libmpi_usempi.la mpi.lo: mpi.F90 mpi.lo: mpi-f90-interfaces.h +mpi.lo: mpi-f90-file-interfaces.h mpi.lo: $(top_builddir)/ompi/mpi/fortran/configure-fortran-output.h mpi.lo: mpi-f90-cptr-interfaces.h @@ -162,5 +163,6 @@ endif EXTRA_DIST = \ mpi-f90-interfaces.h \ + mpi-f90-file-interfaces.h \ mpi-f90-cptr-interfaces.h diff --git a/ompi/mpi/fortran/use-mpi-tkr/mpi-f90-file-interfaces.h b/ompi/mpi/fortran/use-mpi-tkr/mpi-f90-file-interfaces.h new file mode 100644 index 00000000000..eb268735efa --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-tkr/mpi-f90-file-interfaces.h @@ -0,0 +1,321 @@ +! -*- fortran -*- +! +! Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana +! University Research and Technology +! Corporation. All rights reserved. +! Copyright (c) 2004-2005 The University of Tennessee and The University +! of Tennessee Research Foundation. All rights +! reserved. +! Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +! University of Stuttgart. All rights reserved. +! Copyright (c) 2004-2005 The Regents of the University of California. +! All rights reserved. +! Copyright (c) 2006-2014 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2016 Research Organization for Information Science +! and Technology (RIST). All rights reserved. +! $COPYRIGHT$ +! +! Additional copyrights may follow +! +! $HEADER$ +! + +interface MPI_File_call_errhandler + +subroutine MPI_File_call_errhandler(fh, errorcode, ierror) + integer, intent(in) :: fh + integer, intent(in) :: errorcode + integer, intent(out) :: ierror +end subroutine MPI_File_call_errhandler + +end interface + + +interface MPI_File_close + +subroutine MPI_File_close(fh, ierror) + integer, intent(inout) :: fh + integer, intent(out) :: ierror +end subroutine MPI_File_close + +end interface + + +interface MPI_File_create_errhandler + +subroutine MPI_File_create_errhandler(function, errhandler, ierror) + external :: function + integer, intent(out) :: errhandler + integer, intent(out) :: ierror +end subroutine MPI_File_create_errhandler + +end interface + + +interface MPI_File_delete + +subroutine MPI_File_delete(filename, info, ierror) + character(len=*), intent(in) :: filename + integer, intent(in) :: info + integer, intent(out) :: ierror +end subroutine MPI_File_delete + +end interface + + +interface MPI_File_get_amode + +subroutine MPI_File_get_amode(fh, amode, ierror) + integer, intent(in) :: fh + integer, intent(out) :: amode + integer, intent(out) :: ierror +end subroutine MPI_File_get_amode + +end interface + + +interface MPI_File_get_atomicity + +subroutine MPI_File_get_atomicity(fh, flag, ierror) + integer, intent(in) :: fh + logical, intent(out) :: flag + integer, intent(out) :: ierror +end subroutine MPI_File_get_atomicity + +end interface + + +interface MPI_File_get_byte_offset + +subroutine MPI_File_get_byte_offset(fh, offset, disp, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(in) :: offset + integer(kind=MPI_OFFSET_KIND), intent(out) :: disp + integer, intent(out) :: ierror +end subroutine MPI_File_get_byte_offset + +end interface + + +interface MPI_File_get_errhandler + +subroutine MPI_File_get_errhandler(file, errhandler, ierror) + integer, intent(in) :: file + integer, intent(out) :: errhandler + integer, intent(out) :: ierror +end subroutine MPI_File_get_errhandler + +end interface + + +interface MPI_File_get_group + +subroutine MPI_File_get_group(fh, group, ierror) + integer, intent(in) :: fh + integer, intent(out) :: group + integer, intent(out) :: ierror +end subroutine MPI_File_get_group + +end interface + + +interface MPI_File_get_info + +subroutine MPI_File_get_info(fh, info_used, ierror) + integer, intent(in) :: fh + integer, intent(out) :: info_used + integer, intent(out) :: ierror +end subroutine MPI_File_get_info + +end interface + + +interface MPI_File_get_position + +subroutine MPI_File_get_position(fh, offset, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(out) :: offset + integer, intent(out) :: ierror +end subroutine MPI_File_get_position + +end interface + + +interface MPI_File_get_position_shared + +subroutine MPI_File_get_position_shared(fh, offset, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(out) :: offset + integer, intent(out) :: ierror +end subroutine MPI_File_get_position_shared + +end interface + + +interface MPI_File_get_size + +subroutine MPI_File_get_size(fh, size, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(out) :: size + integer, intent(out) :: ierror +end subroutine MPI_File_get_size + +end interface + + +interface MPI_File_get_type_extent + +subroutine MPI_File_get_type_extent(fh, datatype, extent, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer, intent(in) :: datatype + integer(kind=MPI_ADDRESS_KIND), intent(out) :: extent + integer, intent(out) :: ierror +end subroutine MPI_File_get_type_extent + +end interface + + +interface MPI_File_get_view + +subroutine MPI_File_get_view(fh, disp, etype, filetype, datarep& + , ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(out) :: disp + integer, intent(out) :: etype + integer, intent(out) :: filetype + character(len=*), intent(out) :: datarep + integer, intent(out) :: ierror +end subroutine MPI_File_get_view + +end interface + + +interface MPI_File_open + +subroutine MPI_File_open(comm, filename, amode, info, fh& + , ierror) + integer, intent(in) :: comm + character(len=*), intent(in) :: filename + integer, intent(in) :: amode + integer, intent(in) :: info + integer, intent(out) :: fh + integer, intent(out) :: ierror +end subroutine MPI_File_open + +end interface + + +interface MPI_File_preallocate + +subroutine MPI_File_preallocate(fh, size, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(in) :: size + integer, intent(out) :: ierror +end subroutine MPI_File_preallocate + +end interface + + +interface MPI_File_seek + +subroutine MPI_File_seek(fh, offset, whence, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(in) :: offset + integer, intent(in) :: whence + integer, intent(out) :: ierror +end subroutine MPI_File_seek + +end interface + + +interface MPI_File_seek_shared + +subroutine MPI_File_seek_shared(fh, offset, whence, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(in) :: offset + integer, intent(in) :: whence + integer, intent(out) :: ierror +end subroutine MPI_File_seek_shared + +end interface + + +interface MPI_File_set_atomicity + +subroutine MPI_File_set_atomicity(fh, flag, ierror) + integer, intent(in) :: fh + logical, intent(in) :: flag + integer, intent(out) :: ierror +end subroutine MPI_File_set_atomicity + +end interface + + +interface MPI_File_set_errhandler + +subroutine MPI_File_set_errhandler(file, errhandler, ierror) + integer, intent(in) :: file + integer, intent(in) :: errhandler + integer, intent(out) :: ierror +end subroutine MPI_File_set_errhandler + +end interface + + +interface MPI_File_set_info + +subroutine MPI_File_set_info(fh, info, ierror) + integer, intent(in) :: fh + integer, intent(in) :: info + integer, intent(out) :: ierror +end subroutine MPI_File_set_info + +end interface + + +interface MPI_File_set_size + +subroutine MPI_File_set_size(fh, size, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(in) :: size + integer, intent(out) :: ierror +end subroutine MPI_File_set_size + +end interface + + +interface MPI_File_set_view + +subroutine MPI_File_set_view(fh, disp, etype, filetype, datarep, & + info, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(in) :: disp + integer, intent(in) :: etype + integer, intent(in) :: filetype + character(len=*), intent(in) :: datarep + integer, intent(in) :: info + integer, intent(out) :: ierror +end subroutine MPI_File_set_view + +end interface + + +interface MPI_File_sync + +subroutine MPI_File_sync(fh, ierror) + integer, intent(in) :: fh + integer, intent(out) :: ierror +end subroutine MPI_File_sync + +end interface diff --git a/ompi/mpi/fortran/use-mpi-tkr/mpi-f90-interfaces.h b/ompi/mpi/fortran/use-mpi-tkr/mpi-f90-interfaces.h index 64218aa21a7..754078372b0 100644 --- a/ompi/mpi/fortran/use-mpi-tkr/mpi-f90-interfaces.h +++ b/ompi/mpi/fortran/use-mpi-tkr/mpi-f90-interfaces.h @@ -11,6 +11,8 @@ ! Copyright (c) 2004-2005 The Regents of the University of California. ! All rights reserved. ! Copyright (c) 2006-2014 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2016 Research Organization for Information Science +! and Technology (RIST). All rights reserved. ! $COPYRIGHT$ ! ! Additional copyrights may follow @@ -668,307 +670,6 @@ end subroutine MPI_Error_string end interface -interface MPI_File_call_errhandler - -subroutine MPI_File_call_errhandler(fh, errorcode, ierror) - integer, intent(in) :: fh - integer, intent(in) :: errorcode - integer, intent(out) :: ierror -end subroutine MPI_File_call_errhandler - -end interface - - -interface MPI_File_close - -subroutine MPI_File_close(fh, ierror) - integer, intent(inout) :: fh - integer, intent(out) :: ierror -end subroutine MPI_File_close - -end interface - - -interface MPI_File_create_errhandler - -subroutine MPI_File_create_errhandler(function, errhandler, ierror) - external :: function - integer, intent(out) :: errhandler - integer, intent(out) :: ierror -end subroutine MPI_File_create_errhandler - -end interface - - -interface MPI_File_delete - -subroutine MPI_File_delete(filename, info, ierror) - character(len=*), intent(in) :: filename - integer, intent(in) :: info - integer, intent(out) :: ierror -end subroutine MPI_File_delete - -end interface - - -interface MPI_File_get_amode - -subroutine MPI_File_get_amode(fh, amode, ierror) - integer, intent(in) :: fh - integer, intent(out) :: amode - integer, intent(out) :: ierror -end subroutine MPI_File_get_amode - -end interface - - -interface MPI_File_get_atomicity - -subroutine MPI_File_get_atomicity(fh, flag, ierror) - integer, intent(in) :: fh - logical, intent(out) :: flag - integer, intent(out) :: ierror -end subroutine MPI_File_get_atomicity - -end interface - - -interface MPI_File_get_byte_offset - -subroutine MPI_File_get_byte_offset(fh, offset, disp, ierror) - include 'mpif-config.h' - integer, intent(in) :: fh - integer(kind=MPI_OFFSET_KIND), intent(in) :: offset - integer(kind=MPI_OFFSET_KIND), intent(out) :: disp - integer, intent(out) :: ierror -end subroutine MPI_File_get_byte_offset - -end interface - - -interface MPI_File_get_errhandler - -subroutine MPI_File_get_errhandler(file, errhandler, ierror) - integer, intent(in) :: file - integer, intent(out) :: errhandler - integer, intent(out) :: ierror -end subroutine MPI_File_get_errhandler - -end interface - - -interface MPI_File_get_group - -subroutine MPI_File_get_group(fh, group, ierror) - integer, intent(in) :: fh - integer, intent(out) :: group - integer, intent(out) :: ierror -end subroutine MPI_File_get_group - -end interface - - -interface MPI_File_get_info - -subroutine MPI_File_get_info(fh, info_used, ierror) - integer, intent(in) :: fh - integer, intent(out) :: info_used - integer, intent(out) :: ierror -end subroutine MPI_File_get_info - -end interface - - -interface MPI_File_get_position - -subroutine MPI_File_get_position(fh, offset, ierror) - include 'mpif-config.h' - integer, intent(in) :: fh - integer(kind=MPI_OFFSET_KIND), intent(out) :: offset - integer, intent(out) :: ierror -end subroutine MPI_File_get_position - -end interface - - -interface MPI_File_get_position_shared - -subroutine MPI_File_get_position_shared(fh, offset, ierror) - include 'mpif-config.h' - integer, intent(in) :: fh - integer(kind=MPI_OFFSET_KIND), intent(out) :: offset - integer, intent(out) :: ierror -end subroutine MPI_File_get_position_shared - -end interface - - -interface MPI_File_get_size - -subroutine MPI_File_get_size(fh, size, ierror) - include 'mpif-config.h' - integer, intent(in) :: fh - integer(kind=MPI_OFFSET_KIND), intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_File_get_size - -end interface - - -interface MPI_File_get_type_extent - -subroutine MPI_File_get_type_extent(fh, datatype, extent, ierror) - include 'mpif-config.h' - integer, intent(in) :: fh - integer, intent(in) :: datatype - integer(kind=MPI_ADDRESS_KIND), intent(out) :: extent - integer, intent(out) :: ierror -end subroutine MPI_File_get_type_extent - -end interface - - -interface MPI_File_get_view - -subroutine MPI_File_get_view(fh, disp, etype, filetype, datarep& - , ierror) - include 'mpif-config.h' - integer, intent(in) :: fh - integer(kind=MPI_OFFSET_KIND), intent(out) :: disp - integer, intent(out) :: etype - integer, intent(out) :: filetype - character(len=*), intent(out) :: datarep - integer, intent(out) :: ierror -end subroutine MPI_File_get_view - -end interface - - -interface MPI_File_open - -subroutine MPI_File_open(comm, filename, amode, info, fh& - , ierror) - integer, intent(in) :: comm - character(len=*), intent(in) :: filename - integer, intent(in) :: amode - integer, intent(in) :: info - integer, intent(out) :: fh - integer, intent(out) :: ierror -end subroutine MPI_File_open - -end interface - - -interface MPI_File_preallocate - -subroutine MPI_File_preallocate(fh, size, ierror) - include 'mpif-config.h' - integer, intent(in) :: fh - integer(kind=MPI_OFFSET_KIND), intent(in) :: size - integer, intent(out) :: ierror -end subroutine MPI_File_preallocate - -end interface - - -interface MPI_File_seek - -subroutine MPI_File_seek(fh, offset, whence, ierror) - include 'mpif-config.h' - integer, intent(in) :: fh - integer(kind=MPI_OFFSET_KIND), intent(in) :: offset - integer, intent(in) :: whence - integer, intent(out) :: ierror -end subroutine MPI_File_seek - -end interface - - -interface MPI_File_seek_shared - -subroutine MPI_File_seek_shared(fh, offset, whence, ierror) - include 'mpif-config.h' - integer, intent(in) :: fh - integer(kind=MPI_OFFSET_KIND), intent(in) :: offset - integer, intent(in) :: whence - integer, intent(out) :: ierror -end subroutine MPI_File_seek_shared - -end interface - - -interface MPI_File_set_atomicity - -subroutine MPI_File_set_atomicity(fh, flag, ierror) - integer, intent(in) :: fh - logical, intent(in) :: flag - integer, intent(out) :: ierror -end subroutine MPI_File_set_atomicity - -end interface - - -interface MPI_File_set_errhandler - -subroutine MPI_File_set_errhandler(file, errhandler, ierror) - integer, intent(in) :: file - integer, intent(in) :: errhandler - integer, intent(out) :: ierror -end subroutine MPI_File_set_errhandler - -end interface - - -interface MPI_File_set_info - -subroutine MPI_File_set_info(fh, info, ierror) - integer, intent(in) :: fh - integer, intent(in) :: info - integer, intent(out) :: ierror -end subroutine MPI_File_set_info - -end interface - - -interface MPI_File_set_size - -subroutine MPI_File_set_size(fh, size, ierror) - include 'mpif-config.h' - integer, intent(in) :: fh - integer(kind=MPI_OFFSET_KIND), intent(in) :: size - integer, intent(out) :: ierror -end subroutine MPI_File_set_size - -end interface - - -interface MPI_File_set_view - -subroutine MPI_File_set_view(fh, disp, etype, filetype, datarep, & - info, ierror) - include 'mpif-config.h' - integer, intent(in) :: fh - integer(kind=MPI_OFFSET_KIND), intent(in) :: disp - integer, intent(in) :: etype - integer, intent(in) :: filetype - character(len=*), intent(in) :: datarep - integer, intent(in) :: info - integer, intent(out) :: ierror -end subroutine MPI_File_set_view - -end interface - - -interface MPI_File_sync - -subroutine MPI_File_sync(fh, ierror) - integer, intent(in) :: fh - integer, intent(out) :: ierror -end subroutine MPI_File_sync - -end interface - - interface MPI_Finalize subroutine MPI_Finalize(ierror) diff --git a/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 b/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 index cba5fe423c3..3abd8d489cb 100644 --- a/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 +++ b/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 @@ -49,5 +49,8 @@ module mpi ! to the --with-f90-max-array-dim configure parameter. include "mpi-f90-interfaces.h" +#if OMPI_PROVIDE_MPI_FILE_INTEFACE + include "mpi-f90-file-interfaces.h" +#endif end module mpi From 19763a042a94e99c8dd977f6c430572b426c5db1 Mon Sep 17 00:00:00 2001 From: Gilles Gouaillardet Date: Tue, 25 Oct 2016 16:57:58 +0900 Subject: [PATCH 8/9] fortran/use-mpi-trk: add PMPI_* interfaces in mpi module Signed-off-by: Gilles Gouaillardet (cherry picked from commit open-mpi/ompi@1a16e68c26ccd7965cffd55def203d3a17a7ea27) --- ompi/mpi/fortran/use-mpi-tkr/Makefile.am | 8 +- ompi/mpi/fortran/use-mpi-tkr/mpi.F90 | 5 + .../use-mpi-tkr/pmpi-f90-cptr-interfaces.h | 108 + .../use-mpi-tkr/pmpi-f90-file-interfaces.h | 321 ++ .../fortran/use-mpi-tkr/pmpi-f90-interfaces.h | 3182 +++++++++++++++++ 5 files changed, 3623 insertions(+), 1 deletion(-) create mode 100644 ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-cptr-interfaces.h create mode 100644 ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-file-interfaces.h create mode 100644 ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-interfaces.h diff --git a/ompi/mpi/fortran/use-mpi-tkr/Makefile.am b/ompi/mpi/fortran/use-mpi-tkr/Makefile.am index 81055ed730d..affe2491c5f 100644 --- a/ompi/mpi/fortran/use-mpi-tkr/Makefile.am +++ b/ompi/mpi/fortran/use-mpi-tkr/Makefile.am @@ -60,6 +60,9 @@ mpi.lo: mpi-f90-interfaces.h mpi.lo: mpi-f90-file-interfaces.h mpi.lo: $(top_builddir)/ompi/mpi/fortran/configure-fortran-output.h mpi.lo: mpi-f90-cptr-interfaces.h +mpi.lo: pmpi-f90-interfaces.h +mpi.lo: pmpi-f90-file-interfaces.h +mpi.lo: pmpi-f90-cptr-interfaces.h # Per MPI-3 p610:34-41, if we're building a TKR mpi module, we should # not build any interfaces for MPI subroutines that take a choice @@ -164,5 +167,8 @@ endif EXTRA_DIST = \ mpi-f90-interfaces.h \ mpi-f90-file-interfaces.h \ - mpi-f90-cptr-interfaces.h + mpi-f90-cptr-interfaces.h \ + pmpi-f90-interfaces.h \ + pmpi-f90-file-interfaces.h \ + pmpi-f90-cptr-interfaces.h diff --git a/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 b/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 index 3abd8d489cb..c8f0f7d01e1 100644 --- a/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 +++ b/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 @@ -11,6 +11,8 @@ ! Copyright (c) 2004-2005 The Regents of the University of California. ! All rights reserved. ! Copyright (c) 2006-2014 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2016 Research Organization for Information Science +! and Technology (RIST). All rights reserved. ! $COPYRIGHT$ ! ! Additional copyrights may follow @@ -44,13 +46,16 @@ module mpi ! macro in this file, so we need to use the preprocessor include ! directive, not the Fortran include. #include "mpi-f90-cptr-interfaces.h" +#include "pmpi-f90-cptr-interfaces.h" ! This file is generated, and is *huge*. Its size is directly related ! to the --with-f90-max-array-dim configure parameter. include "mpi-f90-interfaces.h" + include "pmpi-f90-interfaces.h" #if OMPI_PROVIDE_MPI_FILE_INTEFACE include "mpi-f90-file-interfaces.h" + include "pmpi-f90-file-interfaces.h" #endif end module mpi diff --git a/ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-cptr-interfaces.h b/ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-cptr-interfaces.h new file mode 100644 index 00000000000..1e1d68d0421 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-cptr-interfaces.h @@ -0,0 +1,108 @@ +! -*- fortran -*- +! +! Copyright (c) 2014 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2016 Research Organization for Information Science +! and Technology (RIST). All rights reserved. +! $COPYRIGHT$ +! +! Additional copyrights may follow +! +! $HEADER$ +! +! This file contains interfaces that use the ISO_C_BINDING module and +! the TYPE(C_PTR) type, which not all Fortran compilers support (e.g., +! gfortran on RHEL 5 does not support this module/type). So we use a +! preprocessor macro to protect the problematic declarations. +! +! This file is included via a preprocessor include directorive in +! mpi.F90, which allows us to use the preprocessor "if" directive, +! below. +! + +interface PMPI_Win_allocate + +subroutine PMPI_Win_allocate(size, disp_unit, info, comm, & + baseptr, win, ierror) + include 'mpif-config.h' + integer(KIND=MPI_ADDRESS_KIND), intent(in) :: size + integer, intent(in) :: disp_unit + integer, intent(in) :: info + integer, intent(in) :: comm + integer(KIND=MPI_ADDRESS_KIND), intent(out) :: baseptr + integer, intent(out) :: win + integer, intent(out) :: ierror +end subroutine PMPI_Win_allocate + +! Only include the 2nd interface if we have ISO_C_BINDING / TYPE(C_PTR) +#if OMPI_FORTRAN_HAVE_ISO_C_BINDING +subroutine PMPI_Win_allocate_cptr(size, disp_unit, info, comm, & + baseptr, win, ierror) + use, intrinsic :: iso_c_binding, only : c_ptr + include 'mpif-config.h' + integer :: disp_unit, info, comm, win, ierror + integer(KIND=MPI_ADDRESS_KIND) :: size + type(C_PTR) :: baseptr +end subroutine PMPI_Win_allocate_cptr +#endif + +end interface + + +interface PMPI_Win_allocate_shared + +subroutine PMPI_Win_allocate_shared(size, disp_unit, info, comm, & + baseptr, win, ierror) + include 'mpif-config.h' + integer(KIND=MPI_ADDRESS_KIND), intent(in) :: size + integer, intent(in) :: disp_unit + integer, intent(in) :: info + integer, intent(in) :: comm + integer(KIND=MPI_ADDRESS_KIND), intent(out) :: baseptr + integer, intent(out) :: win + integer, intent(out) :: ierror +end subroutine PMPI_Win_allocate_shared + +! Only include the 2nd interface if we have ISO_C_BINDING / TYPE(C_PTR) +#if OMPI_FORTRAN_HAVE_ISO_C_BINDING +subroutine PMPI_Win_allocate_shared_cptr(size, disp_unit, info, comm, & + baseptr, win, ierror) + use, intrinsic :: iso_c_binding, only : c_ptr + include 'mpif-config.h' + integer :: disp_unit, info, comm, win, ierror + integer(KIND=MPI_ADDRESS_KIND) :: size + type(C_PTR) :: baseptr +end subroutine PMPI_Win_allocate_shared_cptr +#endif + +end interface + + +interface PMPI_Win_shared_query + +subroutine PMPI_Win_shared_query(win, rank, size, disp_unit, baseptr,& + ierror) + include 'mpif-config.h' + integer, intent(in) :: win + integer, intent(in) :: rank + integer(KIND=MPI_ADDRESS_KIND), intent(out) :: size + integer, intent(out) :: disp_unit + integer(KIND=MPI_ADDRESS_KIND), intent(out) :: baseptr + integer, intent(out) :: ierror +end subroutine PMPI_Win_shared_query + +! Only include the 2nd interface if we have ISO_C_BINDING / TYPE(C_PTR) +#if OMPI_FORTRAN_HAVE_ISO_C_BINDING +subroutine PMPI_Win_shared_query_cptr(win, rank, size, disp_unit, baseptr,& + ierror) + use, intrinsic :: iso_c_binding, only : c_ptr + include 'mpif-config.h' + integer, 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, intent(out) :: ierror +end subroutine PMPI_Win_shared_query_cptr +#endif + +end interface diff --git a/ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-file-interfaces.h b/ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-file-interfaces.h new file mode 100644 index 00000000000..9575dd76668 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-file-interfaces.h @@ -0,0 +1,321 @@ +! -*- fortran -*- +! +! Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana +! University Research and Technology +! Corporation. All rights reserved. +! Copyright (c) 2004-2005 The University of Tennessee and The University +! of Tennessee Research Foundation. All rights +! reserved. +! Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +! University of Stuttgart. All rights reserved. +! Copyright (c) 2004-2005 The Regents of the University of California. +! All rights reserved. +! Copyright (c) 2006-2014 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2016 Research Organization for Information Science +! and Technology (RIST). All rights reserved. +! $COPYRIGHT$ +! +! Additional copyrights may follow +! +! $HEADER$ +! + +interface PMPI_File_call_errhandler + +subroutine PMPI_File_call_errhandler(fh, errorcode, ierror) + integer, intent(in) :: fh + integer, intent(in) :: errorcode + integer, intent(out) :: ierror +end subroutine PMPI_File_call_errhandler + +end interface + + +interface PMPI_File_close + +subroutine PMPI_File_close(fh, ierror) + integer, intent(inout) :: fh + integer, intent(out) :: ierror +end subroutine PMPI_File_close + +end interface + + +interface PMPI_File_create_errhandler + +subroutine PMPI_File_create_errhandler(function, errhandler, ierror) + external :: function + integer, intent(out) :: errhandler + integer, intent(out) :: ierror +end subroutine PMPI_File_create_errhandler + +end interface + + +interface PMPI_File_delete + +subroutine PMPI_File_delete(filename, info, ierror) + character(len=*), intent(in) :: filename + integer, intent(in) :: info + integer, intent(out) :: ierror +end subroutine PMPI_File_delete + +end interface + + +interface PMPI_File_get_amode + +subroutine PMPI_File_get_amode(fh, amode, ierror) + integer, intent(in) :: fh + integer, intent(out) :: amode + integer, intent(out) :: ierror +end subroutine PMPI_File_get_amode + +end interface + + +interface PMPI_File_get_atomicity + +subroutine PMPI_File_get_atomicity(fh, flag, ierror) + integer, intent(in) :: fh + logical, intent(out) :: flag + integer, intent(out) :: ierror +end subroutine PMPI_File_get_atomicity + +end interface + + +interface PMPI_File_get_byte_offset + +subroutine PMPI_File_get_byte_offset(fh, offset, disp, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(in) :: offset + integer(kind=MPI_OFFSET_KIND), intent(out) :: disp + integer, intent(out) :: ierror +end subroutine PMPI_File_get_byte_offset + +end interface + + +interface PMPI_File_get_errhandler + +subroutine PMPI_File_get_errhandler(file, errhandler, ierror) + integer, intent(in) :: file + integer, intent(out) :: errhandler + integer, intent(out) :: ierror +end subroutine PMPI_File_get_errhandler + +end interface + + +interface PMPI_File_get_group + +subroutine PMPI_File_get_group(fh, group, ierror) + integer, intent(in) :: fh + integer, intent(out) :: group + integer, intent(out) :: ierror +end subroutine PMPI_File_get_group + +end interface + + +interface PMPI_File_get_info + +subroutine PMPI_File_get_info(fh, info_used, ierror) + integer, intent(in) :: fh + integer, intent(out) :: info_used + integer, intent(out) :: ierror +end subroutine PMPI_File_get_info + +end interface + + +interface PMPI_File_get_position + +subroutine PMPI_File_get_position(fh, offset, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(out) :: offset + integer, intent(out) :: ierror +end subroutine PMPI_File_get_position + +end interface + + +interface PMPI_File_get_position_shared + +subroutine PMPI_File_get_position_shared(fh, offset, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(out) :: offset + integer, intent(out) :: ierror +end subroutine PMPI_File_get_position_shared + +end interface + + +interface PMPI_File_get_size + +subroutine PMPI_File_get_size(fh, size, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_File_get_size + +end interface + + +interface PMPI_File_get_type_extent + +subroutine PMPI_File_get_type_extent(fh, datatype, extent, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer, intent(in) :: datatype + integer(kind=MPI_ADDRESS_KIND), intent(out) :: extent + integer, intent(out) :: ierror +end subroutine PMPI_File_get_type_extent + +end interface + + +interface PMPI_File_get_view + +subroutine PMPI_File_get_view(fh, disp, etype, filetype, datarep& + , ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(out) :: disp + integer, intent(out) :: etype + integer, intent(out) :: filetype + character(len=*), intent(out) :: datarep + integer, intent(out) :: ierror +end subroutine PMPI_File_get_view + +end interface + + +interface PMPI_File_open + +subroutine PMPI_File_open(comm, filename, amode, info, fh& + , ierror) + integer, intent(in) :: comm + character(len=*), intent(in) :: filename + integer, intent(in) :: amode + integer, intent(in) :: info + integer, intent(out) :: fh + integer, intent(out) :: ierror +end subroutine PMPI_File_open + +end interface + + +interface PMPI_File_preallocate + +subroutine PMPI_File_preallocate(fh, size, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(in) :: size + integer, intent(out) :: ierror +end subroutine PMPI_File_preallocate + +end interface + + +interface PMPI_File_seek + +subroutine PMPI_File_seek(fh, offset, whence, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(in) :: offset + integer, intent(in) :: whence + integer, intent(out) :: ierror +end subroutine PMPI_File_seek + +end interface + + +interface PMPI_File_seek_shared + +subroutine PMPI_File_seek_shared(fh, offset, whence, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(in) :: offset + integer, intent(in) :: whence + integer, intent(out) :: ierror +end subroutine PMPI_File_seek_shared + +end interface + + +interface PMPI_File_set_atomicity + +subroutine PMPI_File_set_atomicity(fh, flag, ierror) + integer, intent(in) :: fh + logical, intent(in) :: flag + integer, intent(out) :: ierror +end subroutine PMPI_File_set_atomicity + +end interface + + +interface PMPI_File_set_errhandler + +subroutine PMPI_File_set_errhandler(file, errhandler, ierror) + integer, intent(in) :: file + integer, intent(in) :: errhandler + integer, intent(out) :: ierror +end subroutine PMPI_File_set_errhandler + +end interface + + +interface PMPI_File_set_info + +subroutine PMPI_File_set_info(fh, info, ierror) + integer, intent(in) :: fh + integer, intent(in) :: info + integer, intent(out) :: ierror +end subroutine PMPI_File_set_info + +end interface + + +interface PMPI_File_set_size + +subroutine PMPI_File_set_size(fh, size, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(in) :: size + integer, intent(out) :: ierror +end subroutine PMPI_File_set_size + +end interface + + +interface PMPI_File_set_view + +subroutine PMPI_File_set_view(fh, disp, etype, filetype, datarep, & + info, ierror) + include 'mpif-config.h' + integer, intent(in) :: fh + integer(kind=MPI_OFFSET_KIND), intent(in) :: disp + integer, intent(in) :: etype + integer, intent(in) :: filetype + character(len=*), intent(in) :: datarep + integer, intent(in) :: info + integer, intent(out) :: ierror +end subroutine PMPI_File_set_view + +end interface + + +interface PMPI_File_sync + +subroutine PMPI_File_sync(fh, ierror) + integer, intent(in) :: fh + integer, intent(out) :: ierror +end subroutine PMPI_File_sync + +end interface diff --git a/ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-interfaces.h b/ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-interfaces.h new file mode 100644 index 00000000000..61015130855 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-interfaces.h @@ -0,0 +1,3182 @@ +! -*- fortran -*- +! +! Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana +! University Research and Technology +! Corporation. All rights reserved. +! Copyright (c) 2004-2005 The University of Tennessee and The University +! of Tennessee Research Foundation. All rights +! reserved. +! Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +! University of Stuttgart. All rights reserved. +! Copyright (c) 2004-2005 The Regents of the University of California. +! All rights reserved. +! Copyright (c) 2006-2014 Cisco Systems, Inc. All rights reserved. +! Copyright (c) 2016 Research Organization for Information Science +! and Technology (RIST). All rights reserved. +! $COPYRIGHT$ +! +! Additional copyrights may follow +! +! $HEADER$ +! + +interface PMPI_Wtick + +function PMPI_Wtick() + double precision PMPI_Wtick +end function PMPI_Wtick + +end interface + + +interface PMPI_Wtime + +function PMPI_Wtime() + double precision PMPI_Wtime +end function PMPI_Wtime + +end interface + + +interface PMPI_Abort + +subroutine PMPI_Abort(comm, errorcode, ierror) + integer, intent(in) :: comm + integer, intent(in) :: errorcode + integer, intent(out) :: ierror +end subroutine PMPI_Abort + +end interface + + +interface PMPI_Add_error_class + +subroutine PMPI_Add_error_class(errorclass, ierror) + integer, intent(out) :: errorclass + integer, intent(out) :: ierror +end subroutine PMPI_Add_error_class + +end interface + + +interface PMPI_Add_error_code + +subroutine PMPI_Add_error_code(errorclass, errorcode, ierror) + integer, intent(in) :: errorclass + integer, intent(out) :: errorcode + integer, intent(out) :: ierror +end subroutine PMPI_Add_error_code + +end interface + + +interface PMPI_Add_error_string + +subroutine PMPI_Add_error_string(errorcode, string, ierror) + integer, intent(in) :: errorcode + character(len=*), intent(in) :: string + integer, intent(out) :: ierror +end subroutine PMPI_Add_error_string + +end interface + +interface PMPI_Aint_add + +function PMPI_Aint_add(base, diff) + include 'mpif-config.h' + integer(kind=MPI_ADDRESS_KIND), intent(in) :: base + integer(kind=MPI_ADDRESS_KIND), intent(in) :: diff + integer(kind=MPI_ADDRESS_KIND) PMPI_Aint_add +end function PMPI_Aint_add + +end interface + +interface PMPI_Aint_diff + +function PMPI_Aint_diff(addr1, addr2) + include 'mpif-config.h' + integer(kind=MPI_ADDRESS_KIND), intent(in) :: addr1 + integer(kind=MPI_ADDRESS_KIND), intent(in) :: addr2 + integer(kind=MPI_ADDRESS_KIND) PMPI_Aint_diff +end function PMPI_Aint_diff + +end interface + +interface PMPI_Attr_delete + +subroutine PMPI_Attr_delete(comm, keyval, ierror) + integer, intent(in) :: comm + integer, intent(in) :: keyval + integer, intent(out) :: ierror +end subroutine PMPI_Attr_delete + +end interface + + +interface PMPI_Attr_get + +subroutine PMPI_Attr_get(comm, keyval, attribute_val, flag, ierror) + integer, intent(in) :: comm + integer, intent(in) :: keyval + integer, intent(out) :: attribute_val + logical, intent(out) :: flag + integer, intent(out) :: ierror +end subroutine PMPI_Attr_get + +end interface + + +interface PMPI_Attr_put + +subroutine PMPI_Attr_put(comm, keyval, attribute_val, ierror) + integer, intent(in) :: comm + integer, intent(in) :: keyval + integer, intent(in) :: attribute_val + integer, intent(out) :: ierror +end subroutine PMPI_Attr_put + +end interface + + +interface PMPI_Barrier + +subroutine PMPI_Barrier(comm, ierror) + integer, intent(in) :: comm + integer, intent(out) :: ierror +end subroutine PMPI_Barrier + +end interface + + +interface PMPI_Ibarrier + +subroutine PMPI_Ibarrier(comm, request, ierror) + integer, intent(in) :: comm + integer, intent(out) :: request + integer, intent(out) :: ierror +end subroutine PMPI_Ibarrier + +end interface + + +interface PMPI_Cancel + +subroutine PMPI_Cancel(request, ierror) + integer, intent(in) :: request + integer, intent(out) :: ierror +end subroutine PMPI_Cancel + +end interface + + +interface PMPI_Cart_coords + +subroutine PMPI_Cart_coords(comm, rank, maxdims, coords, ierror) + integer, intent(in) :: comm + integer, intent(in) :: rank + integer, intent(in) :: maxdims + integer, dimension(*), intent(out) :: coords + integer, intent(out) :: ierror +end subroutine PMPI_Cart_coords + +end interface + + +interface PMPI_Cart_create + +subroutine PMPI_Cart_create(old_comm, ndims, dims, periods, reorder, & + comm_cart, ierror) + integer, intent(in) :: old_comm + integer, intent(in) :: ndims + integer, dimension(*), intent(in) :: dims + logical, dimension(*), intent(in) :: periods + logical, intent(in) :: reorder + integer, intent(out) :: comm_cart + integer, intent(out) :: ierror +end subroutine PMPI_Cart_create + +end interface + + +interface PMPI_Cart_get + +subroutine PMPI_Cart_get(comm, maxdims, dims, periods, coords& + , ierror) + integer, intent(in) :: comm + integer, intent(in) :: maxdims + integer, dimension(*), intent(out) :: dims + logical, dimension(*), intent(out) :: periods + integer, dimension(*), intent(out) :: coords + integer, intent(out) :: ierror +end subroutine PMPI_Cart_get + +end interface + + +interface PMPI_Cart_map + +subroutine PMPI_Cart_map(comm, ndims, dims, periods, newrank& + , ierror) + integer, intent(in) :: comm + integer, intent(in) :: ndims + integer, dimension(*), intent(in) :: dims + logical, dimension(*), intent(in) :: periods + integer, intent(out) :: newrank + integer, intent(out) :: ierror +end subroutine PMPI_Cart_map + +end interface + + +interface PMPI_Cart_rank + +subroutine PMPI_Cart_rank(comm, coords, rank, ierror) + integer, intent(in) :: comm + integer, dimension(*), intent(in) :: coords + integer, intent(out) :: rank + integer, intent(out) :: ierror +end subroutine PMPI_Cart_rank + +end interface + + +interface PMPI_Cart_shift + +subroutine PMPI_Cart_shift(comm, direction, disp, rank_source, rank_dest& + , ierror) + integer, intent(in) :: comm + integer, intent(in) :: direction + integer, intent(in) :: disp + integer, intent(out) :: rank_source + integer, intent(out) :: rank_dest + integer, intent(out) :: ierror +end subroutine PMPI_Cart_shift + +end interface + + +interface PMPI_Cart_sub + +subroutine PMPI_Cart_sub(comm, remain_dims, new_comm, ierror) + integer, intent(in) :: comm + logical, dimension(*), intent(in) :: remain_dims + integer, intent(out) :: new_comm + integer, intent(out) :: ierror +end subroutine PMPI_Cart_sub + +end interface + + +interface PMPI_Cartdim_get + +subroutine PMPI_Cartdim_get(comm, ndims, ierror) + integer, intent(in) :: comm + integer, intent(out) :: ndims + integer, intent(out) :: ierror +end subroutine PMPI_Cartdim_get + +end interface + + +interface PMPI_Comm_call_errhandler + +subroutine PMPI_Comm_call_errhandler(comm, errorcode, ierror) + integer, intent(in) :: comm + integer, intent(in) :: errorcode + integer, intent(out) :: ierror +end subroutine PMPI_Comm_call_errhandler + +end interface + + +interface PMPI_Comm_compare + +subroutine PMPI_Comm_compare(comm1, comm2, result, ierror) + integer, intent(in) :: comm1 + integer, intent(in) :: comm2 + integer, intent(out) :: result + integer, intent(out) :: ierror +end subroutine PMPI_Comm_compare + +end interface + + +interface PMPI_Comm_create + +subroutine PMPI_Comm_create(comm, group, newcomm, ierror) + integer, intent(in) :: comm + integer, intent(in) :: group + integer, intent(out) :: newcomm + integer, intent(out) :: ierror +end subroutine PMPI_Comm_create + +end interface + + +interface PMPI_Comm_create_group + +subroutine PMPI_Comm_create_group(comm, group, tag, newcomm, ierror) + integer, intent(in) :: comm + integer, intent(in) :: group + integer, intent(in) :: tag + integer, intent(out) :: newcomm + integer, intent(out) :: ierror +end subroutine PMPI_Comm_create_group + +end interface + + +interface PMPI_Comm_create_errhandler + +subroutine PMPI_Comm_create_errhandler(function, errhandler, ierror) + external :: function + integer, intent(out) :: errhandler + integer, intent(out) :: ierror +end subroutine PMPI_Comm_create_errhandler + +end interface + + +interface PMPI_Comm_create_keyval + +subroutine PMPI_Comm_create_keyval(comm_copy_attr_fn, comm_delete_attr_fn, comm_keyval, extra_state, ierror) + include 'mpif-config.h' + external :: comm_copy_attr_fn + external :: comm_delete_attr_fn + integer, intent(out) :: comm_keyval + integer(kind=MPI_ADDRESS_KIND), intent(in) :: extra_state + integer, intent(out) :: ierror +end subroutine PMPI_Comm_create_keyval + +end interface + + +interface PMPI_Comm_delete_attr + +subroutine PMPI_Comm_delete_attr(comm, comm_keyval, ierror) + integer, intent(in) :: comm + integer, intent(in) :: comm_keyval + integer, intent(out) :: ierror +end subroutine PMPI_Comm_delete_attr + +end interface + + +interface PMPI_Comm_dup + +subroutine PMPI_Comm_dup(comm, newcomm, ierror) + integer, intent(in) :: comm + integer, intent(out) :: newcomm + integer, intent(out) :: ierror +end subroutine PMPI_Comm_dup + +end interface + + +interface PMPI_Comm_dup_with_info + +subroutine PMPI_Comm_dup_with_info(comm, info, newcomm, ierror) + integer, intent(in) :: comm + integer, intent(in) :: info + integer, intent(out) :: newcomm + integer, intent(out) :: ierror +end subroutine PMPI_Comm_dup_with_info + +end interface + + +interface PMPI_Comm_idup + +subroutine PMPI_Comm_idup(comm, newcomm, request, ierror) + integer, intent(in) :: comm + integer, intent(out) :: newcomm + integer, intent(out) :: request + integer, intent(out) :: ierror +end subroutine PMPI_Comm_idup + +end interface + + +interface PMPI_Comm_free + +subroutine PMPI_Comm_free(comm, ierror) + integer, intent(inout) :: comm + integer, intent(out) :: ierror +end subroutine PMPI_Comm_free + +end interface + + +interface PMPI_Comm_free_keyval + +subroutine PMPI_Comm_free_keyval(comm_keyval, ierror) + integer, intent(inout) :: comm_keyval + integer, intent(out) :: ierror +end subroutine PMPI_Comm_free_keyval + +end interface + + +interface PMPI_Comm_get_info + +subroutine PMPI_Comm_get_info(comm, info_used, ierror) + include 'mpif-config.h' + integer, intent(in) :: comm + integer, intent(out) :: info_used + integer, intent(out) :: ierror +end subroutine PMPI_Comm_get_info + +end interface + + +interface PMPI_Comm_get_attr + +subroutine PMPI_Comm_get_attr(comm, comm_keyval, attribute_val, flag, ierror) + include 'mpif-config.h' + integer, intent(in) :: comm + integer, intent(in) :: comm_keyval + integer(kind=MPI_ADDRESS_KIND), intent(out) :: attribute_val + logical, intent(out) :: flag + integer, intent(out) :: ierror +end subroutine PMPI_Comm_get_attr + +end interface + + +interface PMPI_Comm_get_errhandler + +subroutine PMPI_Comm_get_errhandler(comm, erhandler, ierror) + integer, intent(in) :: comm + integer, intent(out) :: erhandler + integer, intent(out) :: ierror +end subroutine PMPI_Comm_get_errhandler + +end interface + + +interface PMPI_Comm_get_name + +subroutine PMPI_Comm_get_name(comm, comm_name, resultlen, ierror) + integer, intent(in) :: comm + character(len=*), intent(out) :: comm_name + integer, intent(out) :: resultlen + integer, intent(out) :: ierror +end subroutine PMPI_Comm_get_name + +end interface + + +interface PMPI_Comm_group + +subroutine PMPI_Comm_group(comm, group, ierror) + integer, intent(in) :: comm + integer, intent(out) :: group + integer, intent(out) :: ierror +end subroutine PMPI_Comm_group + +end interface + + +interface PMPI_Comm_rank + +subroutine PMPI_Comm_rank(comm, rank, ierror) + integer, intent(in) :: comm + integer, intent(out) :: rank + integer, intent(out) :: ierror +end subroutine PMPI_Comm_rank + +end interface + + +interface PMPI_Comm_remote_group + +subroutine PMPI_Comm_remote_group(comm, group, ierror) + integer, intent(in) :: comm + integer, intent(out) :: group + integer, intent(out) :: ierror +end subroutine PMPI_Comm_remote_group + +end interface + + +interface PMPI_Comm_remote_size + +subroutine PMPI_Comm_remote_size(comm, size, ierror) + integer, intent(in) :: comm + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Comm_remote_size + +end interface + + +interface PMPI_Comm_set_info + +subroutine PMPI_Comm_set_info(comm, info, ierror) + include 'mpif-config.h' + integer, intent(in) :: comm + integer, intent(in) :: info + integer, intent(out) :: ierror +end subroutine PMPI_Comm_set_info + +end interface + + +interface PMPI_Comm_set_attr + +subroutine PMPI_Comm_set_attr(comm, comm_keyval, attribute_val, ierror) + include 'mpif-config.h' + integer, intent(in) :: comm + integer, intent(in) :: comm_keyval + integer(kind=MPI_ADDRESS_KIND), intent(in) :: attribute_val + integer, intent(out) :: ierror +end subroutine PMPI_Comm_set_attr + +end interface + + +interface PMPI_Comm_set_errhandler + +subroutine PMPI_Comm_set_errhandler(comm, errhandler, ierror) + integer, intent(in) :: comm + integer, intent(in) :: errhandler + integer, intent(out) :: ierror +end subroutine PMPI_Comm_set_errhandler + +end interface + + +interface PMPI_Comm_set_name + +subroutine PMPI_Comm_set_name(comm, comm_name, ierror) + integer, intent(in) :: comm + character(len=*), intent(in) :: comm_name + integer, intent(out) :: ierror +end subroutine PMPI_Comm_set_name + +end interface + + +interface PMPI_Comm_size + +subroutine PMPI_Comm_size(comm, size, ierror) + integer, intent(in) :: comm + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Comm_size + +end interface + + +interface PMPI_Comm_split + +subroutine PMPI_Comm_split(comm, color, key, newcomm, ierror) + integer, intent(in) :: comm + integer, intent(in) :: color + integer, intent(in) :: key + integer, intent(out) :: newcomm + integer, intent(out) :: ierror +end subroutine PMPI_Comm_split + +end interface + + +interface PMPI_Comm_test_inter + +subroutine PMPI_Comm_test_inter(comm, flag, ierror) + integer, intent(in) :: comm + logical, intent(out) :: flag + integer, intent(out) :: ierror +end subroutine PMPI_Comm_test_inter + +end interface + + +interface PMPI_Dims_create + +subroutine PMPI_Dims_create(nnodes, ndims, dims, ierror) + integer, intent(in) :: nnodes + integer, intent(in) :: ndims + integer, dimension(*), intent(inout) :: dims + integer, intent(out) :: ierror +end subroutine PMPI_Dims_create + +end interface + + +interface PMPI_Errhandler_create + +subroutine PMPI_Errhandler_create(function, errhandler, ierror) + external :: function + integer, intent(out) :: errhandler + integer, intent(out) :: ierror +end subroutine PMPI_Errhandler_create + +end interface + + +interface PMPI_Errhandler_free + +subroutine PMPI_Errhandler_free(errhandler, ierror) + integer, intent(inout) :: errhandler + integer, intent(out) :: ierror +end subroutine PMPI_Errhandler_free + +end interface + + +interface PMPI_Errhandler_get + +subroutine PMPI_Errhandler_get(comm, errhandler, ierror) + integer, intent(in) :: comm + integer, intent(out) :: errhandler + integer, intent(out) :: ierror +end subroutine PMPI_Errhandler_get + +end interface + + +interface PMPI_Errhandler_set + +subroutine PMPI_Errhandler_set(comm, errhandler, ierror) + integer, intent(in) :: comm + integer, intent(in) :: errhandler + integer, intent(out) :: ierror +end subroutine PMPI_Errhandler_set + +end interface + + +interface PMPI_Error_class + +subroutine PMPI_Error_class(errorcode, errorclass, ierror) + integer, intent(in) :: errorcode + integer, intent(out) :: errorclass + integer, intent(out) :: ierror +end subroutine PMPI_Error_class + +end interface + + +interface PMPI_Error_string + +subroutine PMPI_Error_string(errorcode, string, resultlen, ierror) + integer, intent(in) :: errorcode + character(len=*), intent(out) :: string + integer, intent(out) :: resultlen + integer, intent(out) :: ierror +end subroutine PMPI_Error_string + +end interface + + +interface PMPI_Finalize + +subroutine PMPI_Finalize(ierror) + integer, intent(out) :: ierror +end subroutine PMPI_Finalize + +end interface + + +interface PMPI_Finalized + +subroutine PMPI_Finalized(flag, ierror) + logical, intent(out) :: flag + integer, intent(out) :: ierror +end subroutine PMPI_Finalized + +end interface + + +interface PMPI_Get_count + +subroutine PMPI_Get_count(status, datatype, count, ierror) + include 'mpif-config.h' + integer, dimension(MPI_STATUS_SIZE), intent(in) :: status + integer, intent(in) :: datatype + integer, intent(out) :: count + integer, intent(out) :: ierror +end subroutine PMPI_Get_count + +end interface + + +interface PMPI_Get_elements + +subroutine PMPI_Get_elements(status, datatype, count, ierror) + include 'mpif-config.h' + integer, dimension(MPI_STATUS_SIZE), intent(in) :: status + integer, intent(in) :: datatype + integer, intent(out) :: count + integer, intent(out) :: ierror +end subroutine PMPI_Get_elements + +end interface + + +interface PMPI_Get_elements_x + +subroutine PMPI_Get_elements_x(status, datatype, count, ierror) + include 'mpif-config.h' + integer, dimension(MPI_STATUS_SIZE), intent(in) :: status + integer, intent(in) :: datatype + integer(kind=MPI_COUNT_KIND), intent(out) :: count + integer, intent(out) :: ierror +end subroutine PMPI_Get_elements_x + +end interface + + +interface PMPI_Get_processor_name + +subroutine PMPI_Get_processor_name(name, resultlen, ierror) + character(len=*), intent(out) :: name + integer, intent(out) :: resultlen + integer, intent(out) :: ierror +end subroutine PMPI_Get_processor_name + +end interface + + +interface PMPI_Get_version + +subroutine PMPI_Get_version(version, subversion, ierror) + integer, intent(out) :: version + integer, intent(out) :: subversion + integer, intent(out) :: ierror +end subroutine PMPI_Get_version + +end interface + + +interface PMPI_Graph_create + +subroutine PMPI_Graph_create(comm_old, nnodes, index, edges, reorder, & + comm_graph, ierror) + integer, intent(in) :: comm_old + integer, intent(in) :: nnodes + integer, dimension(*), intent(in) :: index + integer, dimension(*), intent(in) :: edges + logical, intent(in) :: reorder + integer, intent(out) :: comm_graph + integer, intent(out) :: ierror +end subroutine PMPI_Graph_create + +end interface + + +interface PMPI_Graph_get + +subroutine PMPI_Graph_get(comm, maxindex, maxedges, index, edges& + , ierror) + integer, intent(in) :: comm + integer, intent(in) :: maxindex + integer, intent(in) :: maxedges + integer, dimension(*), intent(out) :: index + integer, dimension(*), intent(out) :: edges + integer, intent(out) :: ierror +end subroutine PMPI_Graph_get + +end interface + + +interface PMPI_Graph_map + +subroutine PMPI_Graph_map(comm, nnodes, index, edges, newrank& + , ierror) + integer, intent(in) :: comm + integer, intent(in) :: nnodes + integer, dimension(*), intent(in) :: index + integer, dimension(*), intent(in) :: edges + integer, intent(out) :: newrank + integer, intent(out) :: ierror +end subroutine PMPI_Graph_map + +end interface + + +interface PMPI_Graph_neighbors + +subroutine PMPI_Graph_neighbors(comm, rank, maxneighbors, neighbors, ierror) + integer, intent(in) :: comm + integer, intent(in) :: rank + integer, intent(in) :: maxneighbors + integer, dimension(*), intent(out) :: neighbors + integer, intent(out) :: ierror +end subroutine PMPI_Graph_neighbors + +end interface + + +interface PMPI_Graph_neighbors_count + +subroutine PMPI_Graph_neighbors_count(comm, rank, nneighbors, ierror) + integer, intent(in) :: comm + integer, intent(in) :: rank + integer, intent(out) :: nneighbors + integer, intent(out) :: ierror +end subroutine PMPI_Graph_neighbors_count + +end interface + + +interface PMPI_Graphdims_get + +subroutine PMPI_Graphdims_get(comm, nnodes, nedges, ierror) + integer, intent(in) :: comm + integer, intent(out) :: nnodes + integer, intent(out) :: nedges + integer, intent(out) :: ierror +end subroutine PMPI_Graphdims_get + +end interface + + +interface PMPI_Grequest_complete + +subroutine PMPI_Grequest_complete(request, ierror) + integer, intent(in) :: request + integer, intent(out) :: ierror +end subroutine PMPI_Grequest_complete + +end interface + + +interface PMPI_Grequest_start + +subroutine PMPI_Grequest_start(query_fn, free_fn, cancel_fn, extra_state, request& + , ierror) + include 'mpif-config.h' + external :: query_fn + external :: free_fn + external :: cancel_fn + integer(kind=MPI_ADDRESS_KIND), intent(in) :: extra_state + integer, intent(out) :: request + integer, intent(out) :: ierror +end subroutine PMPI_Grequest_start + +end interface + + +interface PMPI_Group_compare + +subroutine PMPI_Group_compare(group1, group2, result, ierror) + integer, intent(in) :: group1 + integer, intent(in) :: group2 + integer, intent(out) :: result + integer, intent(out) :: ierror +end subroutine PMPI_Group_compare + +end interface + + +interface PMPI_Group_difference + +subroutine PMPI_Group_difference(group1, group2, newgroup, ierror) + integer, intent(in) :: group1 + integer, intent(in) :: group2 + integer, intent(out) :: newgroup + integer, intent(out) :: ierror +end subroutine PMPI_Group_difference + +end interface + + +interface PMPI_Group_excl + +subroutine PMPI_Group_excl(group, n, ranks, newgroup, ierror) + integer, intent(in) :: group + integer, intent(in) :: n + integer, dimension(*), intent(in) :: ranks + integer, intent(out) :: newgroup + integer, intent(out) :: ierror +end subroutine PMPI_Group_excl + +end interface + + +interface PMPI_Group_free + +subroutine PMPI_Group_free(group, ierror) + integer, intent(inout) :: group + integer, intent(out) :: ierror +end subroutine PMPI_Group_free + +end interface + + +interface PMPI_Group_incl + +subroutine PMPI_Group_incl(group, n, ranks, newgroup, ierror) + integer, intent(in) :: group + integer, intent(in) :: n + integer, dimension(*), intent(in) :: ranks + integer, intent(out) :: newgroup + integer, intent(out) :: ierror +end subroutine PMPI_Group_incl + +end interface + + +interface PMPI_Group_intersection + +subroutine PMPI_Group_intersection(group1, group2, newgroup, ierror) + integer, intent(in) :: group1 + integer, intent(in) :: group2 + integer, intent(out) :: newgroup + integer, intent(out) :: ierror +end subroutine PMPI_Group_intersection + +end interface + + +interface PMPI_Group_range_excl + +subroutine PMPI_Group_range_excl(group, n, ranges, newgroup, ierror) + integer, intent(in) :: group + integer, intent(in) :: n + integer, dimension(3, *), intent(in) :: ranges + integer, intent(out) :: newgroup + integer, intent(out) :: ierror +end subroutine PMPI_Group_range_excl + +end interface + + +interface PMPI_Group_range_incl + +subroutine PMPI_Group_range_incl(group, n, ranges, newgroup, ierror) + integer, intent(in) :: group + integer, intent(in) :: n + integer, dimension(3, *), intent(in) :: ranges + integer, intent(out) :: newgroup + integer, intent(out) :: ierror +end subroutine PMPI_Group_range_incl + +end interface + + +interface PMPI_Group_rank + +subroutine PMPI_Group_rank(group, rank, ierror) + integer, intent(in) :: group + integer, intent(out) :: rank + integer, intent(out) :: ierror +end subroutine PMPI_Group_rank + +end interface + + +interface PMPI_Group_size + +subroutine PMPI_Group_size(group, size, ierror) + integer, intent(in) :: group + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Group_size + +end interface + + +interface PMPI_Group_translate_ranks + +subroutine PMPI_Group_translate_ranks(group1, n, ranks1, group2, ranks2& + , ierror) + integer, intent(in) :: group1 + integer, intent(in) :: n + integer, dimension(*), intent(in) :: ranks1 + integer, intent(in) :: group2 + integer, dimension(*), intent(out) :: ranks2 + integer, intent(out) :: ierror +end subroutine PMPI_Group_translate_ranks + +end interface + + +interface PMPI_Group_union + +subroutine PMPI_Group_union(group1, group2, newgroup, ierror) + integer, intent(in) :: group1 + integer, intent(in) :: group2 + integer, intent(out) :: newgroup + integer, intent(out) :: ierror +end subroutine PMPI_Group_union + +end interface + + +interface PMPI_Info_create + +subroutine PMPI_Info_create(info, ierror) + integer, intent(out) :: info + integer, intent(out) :: ierror +end subroutine PMPI_Info_create + +end interface + + +interface PMPI_Info_delete + +subroutine PMPI_Info_delete(info, key, ierror) + integer, intent(in) :: info + character(len=*), intent(in) :: key + integer, intent(out) :: ierror +end subroutine PMPI_Info_delete + +end interface + + +interface PMPI_Info_dup + +subroutine PMPI_Info_dup(info, newinfo, ierror) + integer, intent(in) :: info + integer, intent(out) :: newinfo + integer, intent(out) :: ierror +end subroutine PMPI_Info_dup + +end interface + + +interface PMPI_Info_free + +subroutine PMPI_Info_free(info, ierror) + integer, intent(inout) :: info + integer, intent(out) :: ierror +end subroutine PMPI_Info_free + +end interface + + +interface PMPI_Info_get + +subroutine PMPI_Info_get(info, key, valuelen, value, flag& + , ierror) + integer, intent(in) :: info + character(len=*), intent(in) :: key + integer, intent(in) :: valuelen + character(len=*), intent(out) :: value + logical, intent(out) :: flag + integer, intent(out) :: ierror +end subroutine PMPI_Info_get + +end interface + + +interface PMPI_Info_get_nkeys + +subroutine PMPI_Info_get_nkeys(info, nkeys, ierror) + integer, intent(in) :: info + integer, intent(out) :: nkeys + integer, intent(out) :: ierror +end subroutine PMPI_Info_get_nkeys + +end interface + + +interface PMPI_Info_get_nthkey + +subroutine PMPI_Info_get_nthkey(info, n, key, ierror) + integer, intent(in) :: info + integer, intent(in) :: n + character(len=*), intent(out) :: key + integer, intent(out) :: ierror +end subroutine PMPI_Info_get_nthkey + +end interface + + +interface PMPI_Info_get_valuelen + +subroutine PMPI_Info_get_valuelen(info, key, valuelen, flag, ierror) + integer, intent(in) :: info + character(len=*), intent(in) :: key + integer, intent(out) :: valuelen + logical, intent(out) :: flag + integer, intent(out) :: ierror +end subroutine PMPI_Info_get_valuelen + +end interface + + +interface PMPI_Info_set + +subroutine PMPI_Info_set(info, key, value, ierror) + integer, intent(in) :: info + character(len=*), intent(in) :: key + character(len=*), intent(in) :: value + integer, intent(out) :: ierror +end subroutine PMPI_Info_set + +end interface + + +interface PMPI_Init + +subroutine PMPI_Init(ierror) + integer, intent(out) :: ierror +end subroutine PMPI_Init + +end interface + + +interface PMPI_Init_thread + +subroutine PMPI_Init_thread(required, provided, ierror) + integer, intent(in) :: required + integer, intent(out) :: provided + integer, intent(out) :: ierror +end subroutine PMPI_Init_thread + +end interface + + +interface PMPI_Initialized + +subroutine PMPI_Initialized(flag, ierror) + logical, intent(out) :: flag + integer, intent(out) :: ierror +end subroutine PMPI_Initialized + +end interface + + +interface PMPI_Intercomm_create + +subroutine PMPI_Intercomm_create(local_comm, local_leader, bridge_comm, remote_leader, tag, & + newintercomm, ierror) + integer, intent(in) :: local_comm + integer, intent(in) :: local_leader + integer, intent(in) :: bridge_comm + integer, intent(in) :: remote_leader + integer, intent(in) :: tag + integer, intent(out) :: newintercomm + integer, intent(out) :: ierror +end subroutine PMPI_Intercomm_create + +end interface + + +interface PMPI_Intercomm_merge + +subroutine PMPI_Intercomm_merge(intercomm, high, newintercomm, ierror) + integer, intent(in) :: intercomm + logical, intent(in) :: high + integer, intent(out) :: newintercomm + integer, intent(out) :: ierror +end subroutine PMPI_Intercomm_merge + +end interface + + +interface PMPI_Iprobe + +subroutine PMPI_Iprobe(source, tag, comm, flag, status& + , ierror) + include 'mpif-config.h' + integer, intent(in) :: source + integer, intent(in) :: tag + integer, intent(in) :: comm + logical, intent(out) :: flag + integer, dimension(MPI_STATUS_SIZE), intent(out) :: status + integer, intent(out) :: ierror +end subroutine PMPI_Iprobe + +end interface + + +interface PMPI_Is_thread_main + +subroutine PMPI_Is_thread_main(flag, ierror) + logical, intent(out) :: flag + integer, intent(out) :: ierror +end subroutine PMPI_Is_thread_main + +end interface + + +interface PMPI_Keyval_create + +subroutine PMPI_Keyval_create(copy_fn, delete_fn, keyval, extra_state, ierror) + external :: copy_fn + external :: delete_fn + integer, intent(out) :: keyval + integer, intent(in) :: extra_state + integer, intent(out) :: ierror +end subroutine PMPI_Keyval_create + +end interface + + +interface PMPI_Keyval_free + +subroutine PMPI_Keyval_free(keyval, ierror) + integer, intent(inout) :: keyval + integer, intent(out) :: ierror +end subroutine PMPI_Keyval_free + +end interface + + +interface PMPI_Op_commutative + +subroutine PMPI_Op_commutative(op, commute, ierror) + integer, intent(in) :: op + logical, intent(out) :: commute + integer, intent(out) :: ierror +end subroutine PMPI_Op_commutative + +end interface + + +interface PMPI_Op_create + +subroutine PMPI_Op_create(function, commute, op, ierror) + external :: function + logical, intent(in) :: commute + integer, intent(out) :: op + integer, intent(out) :: ierror +end subroutine PMPI_Op_create + +end interface + + +interface PMPI_Op_free + +subroutine PMPI_Op_free(op, ierror) + integer, intent(inout) :: op + integer, intent(out) :: ierror +end subroutine PMPI_Op_free + +end interface + + +interface PMPI_Pack_external_size + +subroutine PMPI_Pack_external_size(datarep, incount, datatype, size, ierror) + include 'mpif-config.h' + character(len=*), intent(in) :: datarep + integer, intent(in) :: incount + integer, intent(in) :: datatype + integer(kind=MPI_ADDRESS_KIND), intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Pack_external_size + +end interface + + +interface PMPI_Pack_size + +subroutine PMPI_Pack_size(incount, datatype, comm, size, ierror) + integer, intent(in) :: incount + integer, intent(in) :: datatype + integer, intent(in) :: comm + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Pack_size + +end interface + + +interface PMPI_Pcontrol + +subroutine PMPI_Pcontrol(level) + integer, intent(in) :: level + +end subroutine PMPI_Pcontrol + +end interface + + +interface PMPI_Probe + +subroutine PMPI_Probe(source, tag, comm, status, ierror) + include 'mpif-config.h' + integer, intent(in) :: source + integer, intent(in) :: tag + integer, intent(in) :: comm + integer, dimension(MPI_STATUS_SIZE), intent(out) :: status + integer, intent(out) :: ierror +end subroutine PMPI_Probe + +end interface + + +interface PMPI_Query_thread + +subroutine PMPI_Query_thread(provided, ierror) + integer, intent(out) :: provided + integer, intent(out) :: ierror +end subroutine PMPI_Query_thread + +end interface + + +interface PMPI_Register_datarep + +subroutine PMPI_Register_datarep(datarep, read_conversion_fn, write_conversion_fn, dtype_file_extent_fn, extra_state& + , ierror) + include 'mpif-config.h' + character(len=*), intent(in) :: datarep + external :: read_conversion_fn + external :: write_conversion_fn + external :: dtype_file_extent_fn + integer(kind=MPI_ADDRESS_KIND), intent(in) :: extra_state + integer, intent(out) :: ierror +end subroutine PMPI_Register_datarep + +end interface + + +interface PMPI_Request_free + +subroutine PMPI_Request_free(request, ierror) + integer, intent(inout) :: request + integer, intent(out) :: ierror +end subroutine PMPI_Request_free + +end interface + + +interface PMPI_Request_get_status + +subroutine PMPI_Request_get_status(request, flag, status, ierror) + include 'mpif-config.h' + integer, intent(in) :: request + logical, intent(out) :: flag + integer, dimension(MPI_STATUS_SIZE), intent(out) :: status + integer, intent(out) :: ierror +end subroutine PMPI_Request_get_status + +end interface + + +interface PMPI_Sizeof + +subroutine PMPI_Sizeof0DCH(x, size, ierror) + character, intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof0DCH + + +subroutine PMPI_Sizeof0DL(x, size, ierror) + logical, intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof0DL + + +subroutine PMPI_Sizeof0DI1(x, size, ierror) + integer*1, intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof0DI1 + + +subroutine PMPI_Sizeof0DI2(x, size, ierror) + integer*2, intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof0DI2 + + +subroutine PMPI_Sizeof0DI4(x, size, ierror) + integer*4, intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof0DI4 + + +subroutine PMPI_Sizeof0DI8(x, size, ierror) + integer*8, intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof0DI8 + + +subroutine PMPI_Sizeof0DR4(x, size, ierror) + real*4, intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof0DR4 + + +subroutine PMPI_Sizeof0DR8(x, size, ierror) + real*8, intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof0DR8 + + +subroutine PMPI_Sizeof0DC8(x, size, ierror) + complex*8, intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof0DC8 + + +subroutine PMPI_Sizeof0DC16(x, size, ierror) + complex*16, intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof0DC16 + + +subroutine PMPI_Sizeof1DCH(x, size, ierror) + character, dimension(*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof1DCH + + +subroutine PMPI_Sizeof1DL(x, size, ierror) + logical, dimension(*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof1DL + + +subroutine PMPI_Sizeof1DI1(x, size, ierror) + integer*1, dimension(*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof1DI1 + + +subroutine PMPI_Sizeof1DI2(x, size, ierror) + integer*2, dimension(*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof1DI2 + + +subroutine PMPI_Sizeof1DI4(x, size, ierror) + integer*4, dimension(*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof1DI4 + + +subroutine PMPI_Sizeof1DI8(x, size, ierror) + integer*8, dimension(*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof1DI8 + + +subroutine PMPI_Sizeof1DR4(x, size, ierror) + real*4, dimension(*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof1DR4 + + +subroutine PMPI_Sizeof1DR8(x, size, ierror) + real*8, dimension(*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof1DR8 + + +subroutine PMPI_Sizeof1DC8(x, size, ierror) + complex*8, dimension(*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof1DC8 + + +subroutine PMPI_Sizeof1DC16(x, size, ierror) + complex*16, dimension(*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof1DC16 + + +subroutine PMPI_Sizeof2DCH(x, size, ierror) + character, dimension(1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof2DCH + + +subroutine PMPI_Sizeof2DL(x, size, ierror) + logical, dimension(1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof2DL + + +subroutine PMPI_Sizeof2DI1(x, size, ierror) + integer*1, dimension(1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof2DI1 + + +subroutine PMPI_Sizeof2DI2(x, size, ierror) + integer*2, dimension(1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof2DI2 + + +subroutine PMPI_Sizeof2DI4(x, size, ierror) + integer*4, dimension(1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof2DI4 + + +subroutine PMPI_Sizeof2DI8(x, size, ierror) + integer*8, dimension(1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof2DI8 + + +subroutine PMPI_Sizeof2DR4(x, size, ierror) + real*4, dimension(1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof2DR4 + + +subroutine PMPI_Sizeof2DR8(x, size, ierror) + real*8, dimension(1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof2DR8 + + +subroutine PMPI_Sizeof2DC8(x, size, ierror) + complex*8, dimension(1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof2DC8 + + +subroutine PMPI_Sizeof2DC16(x, size, ierror) + complex*16, dimension(1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof2DC16 + + +subroutine PMPI_Sizeof3DCH(x, size, ierror) + character, dimension(1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof3DCH + + +subroutine PMPI_Sizeof3DL(x, size, ierror) + logical, dimension(1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof3DL + + +subroutine PMPI_Sizeof3DI1(x, size, ierror) + integer*1, dimension(1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof3DI1 + + +subroutine PMPI_Sizeof3DI2(x, size, ierror) + integer*2, dimension(1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof3DI2 + + +subroutine PMPI_Sizeof3DI4(x, size, ierror) + integer*4, dimension(1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof3DI4 + + +subroutine PMPI_Sizeof3DI8(x, size, ierror) + integer*8, dimension(1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof3DI8 + + +subroutine PMPI_Sizeof3DR4(x, size, ierror) + real*4, dimension(1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof3DR4 + + +subroutine PMPI_Sizeof3DR8(x, size, ierror) + real*8, dimension(1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof3DR8 + + +subroutine PMPI_Sizeof3DC8(x, size, ierror) + complex*8, dimension(1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof3DC8 + + +subroutine PMPI_Sizeof3DC16(x, size, ierror) + complex*16, dimension(1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof3DC16 + + +subroutine PMPI_Sizeof4DCH(x, size, ierror) + character, dimension(1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof4DCH + + +subroutine PMPI_Sizeof4DL(x, size, ierror) + logical, dimension(1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof4DL + + +subroutine PMPI_Sizeof4DI1(x, size, ierror) + integer*1, dimension(1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof4DI1 + + +subroutine PMPI_Sizeof4DI2(x, size, ierror) + integer*2, dimension(1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof4DI2 + + +subroutine PMPI_Sizeof4DI4(x, size, ierror) + integer*4, dimension(1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof4DI4 + + +subroutine PMPI_Sizeof4DI8(x, size, ierror) + integer*8, dimension(1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof4DI8 + + +subroutine PMPI_Sizeof4DR4(x, size, ierror) + real*4, dimension(1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof4DR4 + + +subroutine PMPI_Sizeof4DR8(x, size, ierror) + real*8, dimension(1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof4DR8 + + +subroutine PMPI_Sizeof4DC8(x, size, ierror) + complex*8, dimension(1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof4DC8 + + +subroutine PMPI_Sizeof4DC16(x, size, ierror) + complex*16, dimension(1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof4DC16 + + +subroutine PMPI_Sizeof5DCH(x, size, ierror) + character, dimension(1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof5DCH + + +subroutine PMPI_Sizeof5DL(x, size, ierror) + logical, dimension(1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof5DL + + +subroutine PMPI_Sizeof5DI1(x, size, ierror) + integer*1, dimension(1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof5DI1 + + +subroutine PMPI_Sizeof5DI2(x, size, ierror) + integer*2, dimension(1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof5DI2 + + +subroutine PMPI_Sizeof5DI4(x, size, ierror) + integer*4, dimension(1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof5DI4 + + +subroutine PMPI_Sizeof5DI8(x, size, ierror) + integer*8, dimension(1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof5DI8 + + +subroutine PMPI_Sizeof5DR4(x, size, ierror) + real*4, dimension(1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof5DR4 + + +subroutine PMPI_Sizeof5DR8(x, size, ierror) + real*8, dimension(1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof5DR8 + + +subroutine PMPI_Sizeof5DC8(x, size, ierror) + complex*8, dimension(1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof5DC8 + + +subroutine PMPI_Sizeof5DC16(x, size, ierror) + complex*16, dimension(1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof5DC16 + + +subroutine PMPI_Sizeof6DCH(x, size, ierror) + character, dimension(1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof6DCH + + +subroutine PMPI_Sizeof6DL(x, size, ierror) + logical, dimension(1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof6DL + + +subroutine PMPI_Sizeof6DI1(x, size, ierror) + integer*1, dimension(1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof6DI1 + + +subroutine PMPI_Sizeof6DI2(x, size, ierror) + integer*2, dimension(1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof6DI2 + + +subroutine PMPI_Sizeof6DI4(x, size, ierror) + integer*4, dimension(1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof6DI4 + + +subroutine PMPI_Sizeof6DI8(x, size, ierror) + integer*8, dimension(1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof6DI8 + + +subroutine PMPI_Sizeof6DR4(x, size, ierror) + real*4, dimension(1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof6DR4 + + +subroutine PMPI_Sizeof6DR8(x, size, ierror) + real*8, dimension(1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof6DR8 + + +subroutine PMPI_Sizeof6DC8(x, size, ierror) + complex*8, dimension(1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof6DC8 + + +subroutine PMPI_Sizeof6DC16(x, size, ierror) + complex*16, dimension(1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof6DC16 + + +subroutine PMPI_Sizeof7DCH(x, size, ierror) + character, dimension(1,1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof7DCH + + +subroutine PMPI_Sizeof7DL(x, size, ierror) + logical, dimension(1,1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof7DL + + +subroutine PMPI_Sizeof7DI1(x, size, ierror) + integer*1, dimension(1,1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof7DI1 + + +subroutine PMPI_Sizeof7DI2(x, size, ierror) + integer*2, dimension(1,1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof7DI2 + + +subroutine PMPI_Sizeof7DI4(x, size, ierror) + integer*4, dimension(1,1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof7DI4 + + +subroutine PMPI_Sizeof7DI8(x, size, ierror) + integer*8, dimension(1,1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof7DI8 + + +subroutine PMPI_Sizeof7DR4(x, size, ierror) + real*4, dimension(1,1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof7DR4 + + +subroutine PMPI_Sizeof7DR8(x, size, ierror) + real*8, dimension(1,1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof7DR8 + + +subroutine PMPI_Sizeof7DC8(x, size, ierror) + complex*8, dimension(1,1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof7DC8 + + +subroutine PMPI_Sizeof7DC16(x, size, ierror) + complex*16, dimension(1,1,1,1,1,1,*), intent(in) :: x + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Sizeof7DC16 + +end interface + + +interface PMPI_Start + +subroutine PMPI_Start(request, ierror) + integer, intent(inout) :: request + integer, intent(out) :: ierror +end subroutine PMPI_Start + +end interface + + +interface PMPI_Startall + +subroutine PMPI_Startall(count, array_of_requests, ierror) + integer, intent(in) :: count + integer, dimension(*), intent(inout) :: array_of_requests + integer, intent(out) :: ierror +end subroutine PMPI_Startall + +end interface + + +interface PMPI_Status_set_cancelled + +subroutine PMPI_Status_set_cancelled(status, flag, ierror) + include 'mpif-config.h' + integer, dimension(MPI_STATUS_SIZE), intent(inout) :: status + logical, intent(in) :: flag + integer, intent(out) :: ierror +end subroutine PMPI_Status_set_cancelled + +end interface + + +interface PMPI_Status_set_elements + +subroutine PMPI_Status_set_elements(status, datatype, count, ierror) + include 'mpif-config.h' + integer, dimension(MPI_STATUS_SIZE), intent(inout) :: status + integer, intent(in) :: datatype + integer, intent(in) :: count + integer, intent(out) :: ierror +end subroutine PMPI_Status_set_elements + +end interface + + +interface PMPI_Test + +subroutine PMPI_Test(request, flag, status, ierror) + include 'mpif-config.h' + integer, intent(inout) :: request + logical, intent(out) :: flag + integer, dimension(MPI_STATUS_SIZE), intent(out) :: status + integer, intent(out) :: ierror +end subroutine PMPI_Test + +end interface + + +interface PMPI_Test_cancelled + +subroutine PMPI_Test_cancelled(status, flag, ierror) + include 'mpif-config.h' + integer, dimension(MPI_STATUS_SIZE), intent(in) :: status + logical, intent(out) :: flag + integer, intent(out) :: ierror +end subroutine PMPI_Test_cancelled + +end interface + + +interface PMPI_Testall + +subroutine PMPI_Testall(count, array_of_requests, flag, array_of_statuses, ierror) + include 'mpif-config.h' + integer, intent(in) :: count + integer, dimension(count), intent(inout) :: array_of_requests + logical, intent(out) :: flag + integer, dimension(MPI_STATUS_SIZE, count), intent(out) :: array_of_statuses + integer, intent(out) :: ierror +end subroutine PMPI_Testall + +end interface + + +interface PMPI_Testany + +subroutine PMPI_Testany(count, array_of_requests, index, flag, status& + , ierror) + include 'mpif-config.h' + integer, intent(in) :: count + integer, dimension(count), intent(inout) :: array_of_requests + integer, intent(out) :: index + logical, intent(out) :: flag + integer, dimension(MPI_STATUS_SIZE), intent(out) :: status + integer, intent(out) :: ierror +end subroutine PMPI_Testany + +end interface + + +interface PMPI_Testsome + +subroutine PMPI_Testsome(incount, array_of_requests, outcount, array_of_indices, array_of_statuses& + , ierror) + include 'mpif-config.h' + integer, intent(in) :: incount + integer, dimension(incount), intent(inout) :: array_of_requests + integer, intent(out) :: outcount + integer, dimension(*), intent(out) :: array_of_indices + integer, dimension(MPI_STATUS_SIZE, *), intent(out) :: array_of_statuses + integer, intent(out) :: ierror +end subroutine PMPI_Testsome + +end interface + + +interface PMPI_Topo_test + +subroutine PMPI_Topo_test(comm, status, ierror) + integer, intent(in) :: comm + integer, intent(out) :: status + integer, intent(out) :: ierror +end subroutine PMPI_Topo_test + +end interface + + +interface PMPI_Type_commit + +subroutine PMPI_Type_commit(type, ierror) + integer, intent(inout) :: type + integer, intent(out) :: ierror +end subroutine PMPI_Type_commit + +end interface + + +interface PMPI_Type_contiguous + +subroutine PMPI_Type_contiguous(count, oldtype, newtype, ierror) + integer, intent(in) :: count + integer, intent(in) :: oldtype + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_contiguous + +end interface + + +interface PMPI_Type_create_darray + +subroutine PMPI_Type_create_darray(size, rank, ndims, gsize_array, distrib_array, & + darg_array, psize_array, order, oldtype, newtype, ierror) + integer, intent(in) :: size + integer, intent(in) :: rank + integer, intent(in) :: ndims + integer, dimension(*), intent(in) :: gsize_array + integer, dimension(*), intent(in) :: distrib_array + integer, dimension(*), intent(in) :: darg_array + integer, dimension(*), intent(in) :: psize_array + integer, intent(in) :: order + integer, intent(in) :: oldtype + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_create_darray + +end interface + + +interface PMPI_Type_create_f90_complex + +subroutine PMPI_Type_create_f90_complex(p, r, newtype, ierror) + integer, intent(in) :: p + integer, intent(in) :: r + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_create_f90_complex + +end interface + + +interface PMPI_Type_create_f90_integer + +subroutine PMPI_Type_create_f90_integer(r, newtype, ierror) + integer, intent(in) :: r + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_create_f90_integer + +end interface + + +interface PMPI_Type_create_f90_real + +subroutine PMPI_Type_create_f90_real(p, r, newtype, ierror) + integer, intent(in) :: p + integer, intent(in) :: r + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_create_f90_real + +end interface + + +interface PMPI_Type_create_hindexed + +subroutine PMPI_Type_create_hindexed(count, array_of_blocklengths, array_of_displacements, oldtype, newtype& + , ierror) + include 'mpif-config.h' + integer, intent(in) :: count + integer, dimension(*), intent(in) :: array_of_blocklengths + integer(kind=MPI_ADDRESS_KIND), dimension(*), intent(in) :: array_of_displacements + integer, intent(in) :: oldtype + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_create_hindexed + +end interface + + +interface PMPI_Type_create_hvector + +subroutine PMPI_Type_create_hvector(count, blocklength, stride, oldtype, newtype& + , ierror) + include 'mpif-config.h' + integer, intent(in) :: count + integer, intent(in) :: blocklength + integer(kind=MPI_ADDRESS_KIND), intent(in) :: stride + integer, intent(in) :: oldtype + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_create_hvector + +end interface + + +interface PMPI_Type_create_indexed_block + +subroutine PMPI_Type_create_indexed_block(count, blocklength, array_of_displacements, oldtype, newtype& + , ierror) + integer, intent(in) :: count + integer, intent(in) :: blocklength + integer, dimension(*), intent(in) :: array_of_displacements + integer, intent(in) :: oldtype + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_create_indexed_block + +end interface + + +interface PMPI_Type_create_keyval + +subroutine PMPI_Type_create_keyval(type_copy_attr_fn, type_delete_attr_fn, type_keyval, extra_state, ierror) + include 'mpif-config.h' + external :: type_copy_attr_fn + external :: type_delete_attr_fn + integer, intent(out) :: type_keyval + integer(kind=MPI_ADDRESS_KIND), intent(in) :: extra_state + integer, intent(out) :: ierror +end subroutine PMPI_Type_create_keyval + +end interface + + +interface PMPI_Type_create_resized + +subroutine PMPI_Type_create_resized(oldtype, lb, extent, newtype, ierror) + include 'mpif-config.h' + integer, intent(in) :: oldtype + integer(kind=MPI_ADDRESS_KIND), intent(in) :: lb + integer(kind=MPI_ADDRESS_KIND), intent(in) :: extent + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_create_resized + +end interface + + +interface PMPI_Type_create_struct + +subroutine PMPI_Type_create_struct(count, array_of_block_lengths, array_of_displacements, array_of_types, newtype& + , ierror) + include 'mpif-config.h' + integer, intent(in) :: count + integer, dimension(*), intent(in) :: array_of_block_lengths + integer(kind=MPI_ADDRESS_KIND), dimension(*), intent(in) :: array_of_displacements + integer, dimension(*), intent(in) :: array_of_types + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_create_struct + +end interface + + +interface PMPI_Type_create_subarray + +subroutine PMPI_Type_create_subarray(ndims, size_array, subsize_array, start_array, order, & + oldtype, newtype, ierror) + integer, intent(in) :: ndims + integer, dimension(*), intent(in) :: size_array + integer, dimension(*), intent(in) :: subsize_array + integer, dimension(*), intent(in) :: start_array + integer, intent(in) :: order + integer, intent(in) :: oldtype + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_create_subarray + +end interface + + +interface PMPI_Type_delete_attr + +subroutine PMPI_Type_delete_attr(type, type_keyval, ierror) + integer, intent(in) :: type + integer, intent(in) :: type_keyval + integer, intent(out) :: ierror +end subroutine PMPI_Type_delete_attr + +end interface + + +interface PMPI_Type_dup + +subroutine PMPI_Type_dup(type, newtype, ierror) + integer, intent(in) :: type + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_dup + +end interface + + +interface PMPI_Type_extent + +subroutine PMPI_Type_extent(type, extent, ierror) + integer, intent(in) :: type + integer, intent(out) :: extent + integer, intent(out) :: ierror +end subroutine PMPI_Type_extent + +end interface + + +interface PMPI_Type_free + +subroutine PMPI_Type_free(type, ierror) + integer, intent(inout) :: type + integer, intent(out) :: ierror +end subroutine PMPI_Type_free + +end interface + + +interface PMPI_Type_free_keyval + +subroutine PMPI_Type_free_keyval(type_keyval, ierror) + integer, intent(inout) :: type_keyval + integer, intent(out) :: ierror +end subroutine PMPI_Type_free_keyval + +end interface + + +interface PMPI_Type_get_attr + +subroutine PMPI_Type_get_attr(type, type_keyval, attribute_val, flag, ierror) + include 'mpif-config.h' + integer, intent(in) :: type + integer, intent(in) :: type_keyval + integer(kind=MPI_ADDRESS_KIND), intent(out) :: attribute_val + logical, intent(out) :: flag + integer, intent(out) :: ierror +end subroutine PMPI_Type_get_attr + +end interface + + +interface PMPI_Type_get_contents + +subroutine PMPI_Type_get_contents(mtype, max_integers, max_addresses, max_datatypes, array_of_integers, & + array_of_addresses, array_of_datatypes, ierror) + include 'mpif-config.h' + integer, intent(in) :: mtype + integer, intent(in) :: max_integers + integer, intent(in) :: max_addresses + integer, intent(in) :: max_datatypes + integer, dimension(*), intent(out) :: array_of_integers + integer(kind=MPI_ADDRESS_KIND), dimension(*), intent(out) :: array_of_addresses + integer, dimension(*), intent(out) :: array_of_datatypes + integer, intent(out) :: ierror +end subroutine PMPI_Type_get_contents + +end interface + + +interface PMPI_Type_get_envelope + +subroutine PMPI_Type_get_envelope(type, num_integers, num_addresses, num_datatypes, combiner& + , ierror) + integer, intent(in) :: type + integer, intent(out) :: num_integers + integer, intent(out) :: num_addresses + integer, intent(out) :: num_datatypes + integer, intent(out) :: combiner + integer, intent(out) :: ierror +end subroutine PMPI_Type_get_envelope + +end interface + + +interface PMPI_Type_get_extent + +subroutine PMPI_Type_get_extent(type, lb, extent, ierror) + include 'mpif-config.h' + integer, intent(in) :: type + integer(kind=MPI_ADDRESS_KIND), intent(out) :: lb + integer(kind=MPI_ADDRESS_KIND), intent(out) :: extent + integer, intent(out) :: ierror +end subroutine PMPI_Type_get_extent + +end interface + + +interface PMPI_Type_get_extent_x + +subroutine PMPI_Type_get_extent_x(type, lb, extent, ierror) + include 'mpif-config.h' + integer, intent(in) :: type + integer(kind=MPI_COUNT_KIND), intent(out) :: lb + integer(kind=MPI_COUNT_KIND), intent(out) :: extent + integer, intent(out) :: ierror +end subroutine PMPI_Type_get_extent_x + +end interface + + +interface PMPI_Type_get_name + +subroutine PMPI_Type_get_name(type, type_name, resultlen, ierror) + integer, intent(in) :: type + character(len=*), intent(out) :: type_name + integer, intent(out) :: resultlen + integer, intent(out) :: ierror +end subroutine PMPI_Type_get_name + +end interface + + +interface PMPI_Type_get_true_extent + +subroutine PMPI_Type_get_true_extent(datatype, true_lb, true_extent, ierror) + include 'mpif-config.h' + integer, intent(in) :: datatype + integer(kind=MPI_ADDRESS_KIND), intent(out) :: true_lb + integer(kind=MPI_ADDRESS_KIND), intent(out) :: true_extent + integer, intent(out) :: ierror +end subroutine PMPI_Type_get_true_extent + +end interface + + +interface PMPI_Type_get_true_extent_x + +subroutine PMPI_Type_get_true_extent_x(datatype, true_lb, true_extent, ierror) + include 'mpif-config.h' + integer, intent(in) :: datatype + integer(kind=MPI_COUNT_KIND), intent(out) :: true_lb + integer(kind=MPI_COUNT_KIND), intent(out) :: true_extent + integer, intent(out) :: ierror +end subroutine PMPI_Type_get_true_extent_x + +end interface + + +interface PMPI_Type_hindexed + +subroutine PMPI_Type_hindexed(count, array_of_blocklengths, array_of_displacements, oldtype, newtype& + , ierror) + integer, intent(in) :: count + integer, dimension(*), intent(in) :: array_of_blocklengths + integer, dimension(*), intent(in) :: array_of_displacements + integer, intent(in) :: oldtype + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_hindexed + +end interface + + +interface PMPI_Type_hvector + +subroutine PMPI_Type_hvector(count, blocklength, stride, oldtype, newtype& + , ierror) + integer, intent(in) :: count + integer, intent(in) :: blocklength + integer, intent(in) :: stride + integer, intent(in) :: oldtype + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_hvector + +end interface + + +interface PMPI_Type_indexed + +subroutine PMPI_Type_indexed(count, array_of_blocklengths, array_of_displacements, oldtype, newtype& + , ierror) + integer, intent(in) :: count + integer, dimension(*), intent(in) :: array_of_blocklengths + integer, dimension(*), intent(in) :: array_of_displacements + integer, intent(in) :: oldtype + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_indexed + +end interface + + +interface PMPI_Type_lb + +subroutine PMPI_Type_lb(type, lb, ierror) + integer, intent(in) :: type + integer, intent(out) :: lb + integer, intent(out) :: ierror +end subroutine PMPI_Type_lb + +end interface + + +interface PMPI_Type_match_size + +subroutine PMPI_Type_match_size(typeclass, size, type, ierror) + integer, intent(in) :: typeclass + integer, intent(in) :: size + integer, intent(out) :: type + integer, intent(out) :: ierror +end subroutine PMPI_Type_match_size + +end interface + + +interface PMPI_Type_set_attr + +subroutine PMPI_Type_set_attr(type, type_keyval, attr_val, ierror) + include 'mpif-config.h' + integer, intent(in) :: type + integer, intent(in) :: type_keyval + integer(kind=MPI_ADDRESS_KIND), intent(in) :: attr_val + integer, intent(out) :: ierror +end subroutine PMPI_Type_set_attr + +end interface + + +interface PMPI_Type_set_name + +subroutine PMPI_Type_set_name(type, type_name, ierror) + integer, intent(in) :: type + character(len=*), intent(in) :: type_name + integer, intent(out) :: ierror +end subroutine PMPI_Type_set_name + +end interface + + +interface PMPI_Type_size + +subroutine PMPI_Type_size(type, size, ierror) + integer, intent(in) :: type + integer, intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Type_size + +end interface + + +interface PMPI_Type_size_x + +subroutine PMPI_Type_size_x(type, size, ierror) + include 'mpif-config.h' + integer, intent(in) :: type + integer(kind=MPI_COUNT_KIND), intent(out) :: size + integer, intent(out) :: ierror +end subroutine PMPI_Type_size_x + +end interface + + +interface PMPI_Type_struct + +subroutine PMPI_Type_struct(count, array_of_blocklengths, array_of_displacements, array_of_types, newtype& + , ierror) + integer, intent(in) :: count + integer, dimension(*), intent(in) :: array_of_blocklengths + integer, dimension(*), intent(in) :: array_of_displacements + integer, dimension(*), intent(in) :: array_of_types + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_struct + +end interface + + +interface PMPI_Type_ub + +subroutine PMPI_Type_ub(mtype, ub, ierror) + integer, intent(in) :: mtype + integer, intent(out) :: ub + integer, intent(out) :: ierror +end subroutine PMPI_Type_ub + +end interface + + +interface PMPI_Type_vector + +subroutine PMPI_Type_vector(count, blocklength, stride, oldtype, newtype& + , ierror) + integer, intent(in) :: count + integer, intent(in) :: blocklength + integer, intent(in) :: stride + integer, intent(in) :: oldtype + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_vector + +end interface + + +interface PMPI_Wait + +subroutine PMPI_Wait(request, status, ierror) + include 'mpif-config.h' + integer, intent(inout) :: request + integer, dimension(MPI_STATUS_SIZE), intent(out) :: status + integer, intent(out) :: ierror +end subroutine PMPI_Wait + +end interface + + +interface PMPI_Waitall + +subroutine PMPI_Waitall(count, array_of_requests, array_of_statuses, ierror) + include 'mpif-config.h' + integer, intent(in) :: count + integer, dimension(count), intent(inout) :: array_of_requests + integer, dimension(MPI_STATUS_SIZE, *), intent(out) :: array_of_statuses + integer, intent(out) :: ierror +end subroutine PMPI_Waitall + +end interface + + +interface PMPI_Waitany + +subroutine PMPI_Waitany(count, array_of_requests, index, status, ierror) + include 'mpif-config.h' + integer, intent(in) :: count + integer, dimension(count), intent(inout) :: array_of_requests + integer, intent(out) :: index + integer, dimension(MPI_STATUS_SIZE), intent(out) :: status + integer, intent(out) :: ierror +end subroutine PMPI_Waitany + +end interface + + +interface PMPI_Waitsome + +subroutine PMPI_Waitsome(incount, array_of_requests, outcount, array_of_indices, array_of_statuses& + , ierror) + include 'mpif-config.h' + integer, intent(in) :: incount + integer, dimension(incount), intent(inout) :: array_of_requests + integer, intent(out) :: outcount + integer, dimension(*), intent(out) :: array_of_indices + integer, dimension(MPI_STATUS_SIZE, *), intent(out) :: array_of_statuses + integer, intent(out) :: ierror +end subroutine PMPI_Waitsome + +end interface + + +interface PMPI_Win_call_errhandler + +subroutine PMPI_Win_call_errhandler(win, errorcode, ierror) + integer, intent(in) :: win + integer, intent(in) :: errorcode + integer, intent(out) :: ierror +end subroutine PMPI_Win_call_errhandler + +end interface + + +interface PMPI_Win_complete + +subroutine PMPI_Win_complete(win, ierror) + integer, intent(in) :: win + integer, intent(out) :: ierror +end subroutine PMPI_Win_complete + +end interface + + +interface PMPI_Win_create_errhandler + +subroutine PMPI_Win_create_errhandler(function, errhandler, ierror) + external :: function + integer, intent(out) :: errhandler + integer, intent(out) :: ierror +end subroutine PMPI_Win_create_errhandler + +end interface + + +interface PMPI_Win_create_keyval + +subroutine PMPI_Win_create_keyval(win_copy_attr_fn, win_delete_attr_fn, win_keyval, extra_state, ierror) + include 'mpif-config.h' + external :: win_copy_attr_fn + external :: win_delete_attr_fn + integer, intent(out) :: win_keyval + integer(kind=MPI_ADDRESS_KIND), intent(in) :: extra_state + integer, intent(out) :: ierror +end subroutine PMPI_Win_create_keyval + +end interface + + +interface PMPI_Win_delete_attr + +subroutine PMPI_Win_delete_attr(win, win_keyval, ierror) + integer, intent(in) :: win + integer, intent(in) :: win_keyval + integer, intent(out) :: ierror +end subroutine PMPI_Win_delete_attr + +end interface + + +interface PMPI_Win_fence + +subroutine PMPI_Win_fence(assert, win, ierror) + integer, intent(in) :: assert + integer, intent(in) :: win + integer, intent(out) :: ierror +end subroutine PMPI_Win_fence + +end interface + + +interface PMPI_Win_free + +subroutine PMPI_Win_free(win, ierror) + integer, intent(inout) :: win + integer, intent(out) :: ierror +end subroutine PMPI_Win_free + +end interface + + +interface PMPI_Win_free_keyval + +subroutine PMPI_Win_free_keyval(win_keyval, ierror) + integer, intent(inout) :: win_keyval + integer, intent(out) :: ierror +end subroutine PMPI_Win_free_keyval + +end interface + + +interface PMPI_Win_get_attr + +subroutine PMPI_Win_get_attr(win, win_keyval, attribute_val, flag, ierror) + include 'mpif-config.h' + integer, intent(in) :: win + integer, intent(in) :: win_keyval + integer(kind=MPI_ADDRESS_KIND), intent(out) :: attribute_val + logical, intent(out) :: flag + integer, intent(out) :: ierror +end subroutine PMPI_Win_get_attr + +end interface + + +interface PMPI_Win_get_errhandler + +subroutine PMPI_Win_get_errhandler(win, errhandler, ierror) + integer, intent(in) :: win + integer, intent(out) :: errhandler + integer, intent(out) :: ierror +end subroutine PMPI_Win_get_errhandler + +end interface + + +interface PMPI_Win_get_group + +subroutine PMPI_Win_get_group(win, group, ierror) + integer, intent(in) :: win + integer, intent(out) :: group + integer, intent(out) :: ierror +end subroutine PMPI_Win_get_group + +end interface + + +interface PMPI_Win_get_name + +subroutine PMPI_Win_get_name(win, win_name, resultlen, ierror) + integer, intent(in) :: win + character(len=*), intent(out) :: win_name + integer, intent(out) :: resultlen + integer, intent(out) :: ierror +end subroutine PMPI_Win_get_name + +end interface + + +interface PMPI_Win_lock + +subroutine PMPI_Win_lock(lock_type, rank, assert, win, ierror) + integer, intent(in) :: lock_type + integer, intent(in) :: rank + integer, intent(in) :: assert + integer, intent(in) :: win + integer, intent(out) :: ierror +end subroutine PMPI_Win_lock + +end interface + + +interface PMPI_Win_post + +subroutine PMPI_Win_post(group, assert, win, ierror) + integer, intent(in) :: group + integer, intent(in) :: assert + integer, intent(in) :: win + integer, intent(out) :: ierror +end subroutine PMPI_Win_post + +end interface + + +interface PMPI_Win_set_attr + +subroutine PMPI_Win_set_attr(win, win_keyval, attribute_val, ierror) + include 'mpif-config.h' + integer, intent(in) :: win + integer, intent(in) :: win_keyval + integer(kind=MPI_ADDRESS_KIND), intent(in) :: attribute_val + integer, intent(out) :: ierror +end subroutine PMPI_Win_set_attr + +end interface + + +interface PMPI_Win_set_errhandler + +subroutine PMPI_Win_set_errhandler(win, errhandler, ierror) + integer, intent(in) :: win + integer, intent(in) :: errhandler + integer, intent(out) :: ierror +end subroutine PMPI_Win_set_errhandler + +end interface + + +interface PMPI_Win_set_name + +subroutine PMPI_Win_set_name(win, win_name, ierror) + integer, intent(in) :: win + character(len=*), intent(in) :: win_name + integer, intent(out) :: ierror +end subroutine PMPI_Win_set_name + +end interface + + +interface PMPI_Win_start + +subroutine PMPI_Win_start(group, assert, win, ierror) + integer, intent(in) :: group + integer, intent(in) :: assert + integer, intent(in) :: win + integer, intent(out) :: ierror +end subroutine PMPI_Win_start + +end interface + + +interface PMPI_Win_test + +subroutine PMPI_Win_test(win, flag, ierror) + integer, intent(in) :: win + logical, intent(out) :: flag + integer, intent(out) :: ierror +end subroutine PMPI_Win_test + +end interface + + +interface PMPI_Win_unlock + +subroutine PMPI_Win_unlock(rank, win, ierror) + integer, intent(in) :: rank + integer, intent(in) :: win + integer, intent(out) :: ierror +end subroutine PMPI_Win_unlock + +end interface + + +interface PMPI_Win_wait + +subroutine PMPI_Win_wait(win, ierror) + integer, intent(in) :: win + integer, intent(out) :: ierror +end subroutine PMPI_Win_wait + +end interface + + +interface PMPI_Close_port + +subroutine PMPI_Close_port(port_name, ierror) + character(len=*), intent(in) :: port_name + integer, intent(out) :: ierror +end subroutine PMPI_Close_port + +end interface + + +interface PMPI_Lookup_name + +subroutine PMPI_Lookup_name(service_name, info, port_name, ierror) + character(len=*), intent(in) :: service_name + integer, intent(in) :: info + character(len=*), intent(out) :: port_name + integer, intent(out) :: ierror +end subroutine PMPI_Lookup_name + +end interface + + +interface PMPI_Open_port + +subroutine PMPI_Open_port(info, port_name, ierror) + integer, intent(in) :: info + character(len=*), intent(out) :: port_name + integer, intent(out) :: ierror +end subroutine PMPI_Open_port + +end interface + + +interface PMPI_Publish_name + +subroutine PMPI_Publish_name(service_name, info, port_name, ierror) + character(len=*), intent(in) :: service_name + integer, intent(in) :: info + character(len=*), intent(in) :: port_name + integer, intent(out) :: ierror +end subroutine PMPI_Publish_name + +end interface + + +interface PMPI_Unpublish_name + +subroutine PMPI_Unpublish_name(service_name, info, port_name, ierror) + character(len=*), intent(in) :: service_name + integer, intent(in) :: info + character(len=*), intent(in) :: port_name + integer, intent(out) :: ierror +end subroutine PMPI_Unpublish_name + +end interface + + +interface PMPI_Comm_disconnect + +subroutine PMPI_Comm_disconnect(comm, ierror) + integer, intent(inout) :: comm + integer, intent(out) :: ierror +end subroutine PMPI_Comm_disconnect + +end interface + + +interface PMPI_Comm_get_parent + +subroutine PMPI_Comm_get_parent(parent, ierror) + integer, intent(out) :: parent + integer, intent(out) :: ierror +end subroutine PMPI_Comm_get_parent + +end interface + + +interface PMPI_Comm_join + +subroutine PMPI_Comm_join(fd, intercomm, ierror) + integer, intent(in) :: fd + integer, intent(out) :: intercomm + integer, intent(out) :: ierror +end subroutine PMPI_Comm_join + +end interface + + +interface PMPI_Comm_accept + +subroutine PMPI_Comm_accept(port_name, info, root, comm, newcomm& + , ierror) + character(len=*), intent(in) :: port_name + integer, intent(in) :: info + integer, intent(in) :: root + integer, intent(in) :: comm + integer, intent(out) :: newcomm + integer, intent(out) :: ierror +end subroutine PMPI_Comm_accept + +end interface + + +interface PMPI_Comm_connect + +subroutine PMPI_Comm_connect(port_name, info, root, comm, newcomm& + , ierror) + character(len=*), intent(in) :: port_name + integer, intent(in) :: info + integer, intent(in) :: root + integer, intent(in) :: comm + integer, intent(out) :: newcomm + integer, intent(out) :: ierror +end subroutine PMPI_Comm_connect + +end interface + + +interface PMPI_Comm_spawn + +subroutine PMPI_Comm_spawn(command, argv, maxprocs, info, root, & + comm, intercomm, array_of_errcodes, ierror) + character(len=*), intent(in) :: command + character(len=*), dimension(*), intent(in) :: argv + integer, intent(in) :: maxprocs + integer, intent(in) :: info + integer, intent(in) :: root + integer, intent(in) :: comm + integer, intent(out) :: intercomm + integer, dimension(*), intent(out) :: array_of_errcodes + integer, intent(out) :: ierror +end subroutine PMPI_Comm_spawn + +end interface + + +interface PMPI_Comm_spawn_multiple + +subroutine PMPI_Comm_spawn_multiple(count, array_of_commands, array_of_argv, array_of_maxprocs, array_of_info, & + root, comm, intercomm, array_of_errcodes, ierror) + integer, intent(in) :: count + character(len=*), dimension(*), intent(in) :: array_of_commands + character(len=*), dimension(count,*), intent(in) :: array_of_argv + integer, dimension(*), intent(in) :: array_of_maxprocs + integer, dimension(*), intent(in) :: array_of_info + integer, intent(in) :: root + integer, intent(in) :: comm + integer, intent(out) :: intercomm + integer, dimension(*), intent(out) :: array_of_errcodes + integer, intent(out) :: ierror +end subroutine PMPI_Comm_spawn_multiple + +end interface + + +interface PMPI_Mprobe + +subroutine PMPI_Mprobe(source, tag, comm, message, status, ierror) + include 'mpif-config.h' + integer, intent(in) :: source + integer, intent(in) :: tag + integer, intent(in) :: comm + integer, intent(out) :: message + integer, dimension(MPI_STATUS_SIZE), intent(out) :: status + integer, intent(out) :: ierror +end subroutine PMPI_Mprobe + +end interface + + +interface PMPI_Improbe + +subroutine PMPI_Improbe(source, tag, comm, flag, message, status, ierror) + include 'mpif-config.h' + integer, intent(in) :: source + integer, intent(in) :: tag + integer, intent(in) :: comm + logical, intent(out) :: flag + integer, intent(out) :: message + integer, dimension(MPI_STATUS_SIZE), intent(out) :: status + integer, intent(out) :: ierror +end subroutine PMPI_Improbe + +end interface + + +interface PMPI_Get_library_version + +subroutine PMPI_Get_library_version(version, resultlen, ierror) + character(len=*), intent(out) :: version + integer, intent(out) :: resultlen + integer, intent(out) :: ierror +end subroutine PMPI_Get_library_version + +end interface + + +interface PMPI_Comm_split_type + +subroutine PMPI_Comm_split_type(comm, split_type, key, info, newcomm, ierror) + integer, intent(in) :: comm + integer, intent(in) :: split_type + integer, intent(in) :: key + integer, intent(in) :: info + integer, intent(out) :: newcomm + integer, intent(out) :: ierror +end subroutine PMPI_Comm_split_type + +end interface + + +interface PMPI_Type_create_hindexed_block + +subroutine PMPI_Type_create_hindexed_block(count, blocklength, array_of_displacements, oldtype, newtype& + , ierror) + include 'mpif-config.h' + integer, intent(in) :: count + integer, intent(in) :: blocklength + integer(kind=MPI_ADDRESS_KIND), dimension(*), intent(in) :: array_of_displacements + integer, intent(in) :: oldtype + integer, intent(out) :: newtype + integer, intent(out) :: ierror +end subroutine PMPI_Type_create_hindexed_block + +end interface + + +interface PMPI_Dist_graph_create + +subroutine PMPI_Dist_graph_create(comm_old, n, sources, degrees, destinations, & + weights, info, reorder, comm_dist_graph, ierror) + integer, intent(in) :: comm_old + integer, intent(in) :: n + integer, dimension(n), intent(in) :: sources + integer, dimension(n), intent(in) :: degrees + integer, dimension(n), intent(in) :: destinations + integer, dimension(n), intent(in) :: weights + integer, intent(in) :: info + logical, intent(in) :: reorder + integer, intent(out) :: comm_dist_graph + integer, intent(out) :: ierror +end subroutine PMPI_Dist_graph_create + +end interface + + +interface PMPI_Dist_graph_create_adjacent + +subroutine PMPI_Dist_graph_create_adjacent(comm_old, indegree, sources, sourceweights, & + outdegree, destinations, destweights, info, reorder, & + comm_dist_graph, ierror) + integer, intent(in) :: comm_old + integer, intent(in) :: indegree + integer, dimension(indegree), intent(in) :: sources + integer, dimension(indegree), intent(in) :: sourceweights + integer, intent(in) :: outdegree + integer, dimension(outdegree), intent(in) :: destinations + integer, dimension(outdegree), intent(in) :: destweights + integer, intent(in) :: info + logical, intent(in) :: reorder + integer, intent(out) :: comm_dist_graph + integer, intent(out) :: ierror +end subroutine PMPI_Dist_graph_create_adjacent + +end interface + + +interface PMPI_Dist_graph_neighbors_count + +subroutine PMPI_Dist_graph_neighbors_count(comm, indegree, outdegree, weighted, ierror) + integer, intent(in) :: comm + integer, intent(out) :: indegree + integer, intent(out) :: outdegree + logical, intent(out) :: weighted + integer, intent(out) :: ierror +end subroutine PMPI_Dist_graph_neighbors_count + +end interface + + +interface PMPI_Dist_graph_neighbors + +subroutine PMPI_Dist_graph_neighbors(comm, maxindegree, sources, sourceweights, & + maxoutdegree, destinations, destweights, ierror) + integer, intent(in) :: comm + integer, intent(in) :: maxindegree + integer, dimension(maxindegree), intent(out) :: sources + integer, dimension(maxindegree), intent(out) :: sourceweights + integer, intent(in) :: maxoutdegree + integer, dimension(maxoutdegree), intent(out) :: destinations + integer, dimension(maxoutdegree), intent(out) :: destweights + integer, intent(out) :: ierror +end subroutine PMPI_Dist_graph_neighbors + +end interface + + +interface PMPI_Win_flush + +subroutine PMPI_Win_flush(rank, win, ierror) + integer, intent(in) :: rank + integer, intent(in) :: win + integer, intent(out) :: ierror +end subroutine PMPI_Win_flush + +end interface + + +interface PMPI_Win_flush_all + +subroutine PMPI_Win_flush_all(win, ierror) + integer, intent(in) :: win + integer, intent(out) :: ierror +end subroutine PMPI_Win_flush_all + +end interface + + +interface PMPI_Win_flush_local + +subroutine PMPI_Win_flush_local(rank, win, ierror) + integer, intent(in) :: rank + integer, intent(in) :: win + integer, intent(out) :: ierror +end subroutine PMPI_Win_flush_local + +end interface + + +interface PMPI_Win_flush_local_all + +subroutine PMPI_Win_flush_local_all(win, ierror) + integer, intent(in) :: win + integer, intent(out) :: ierror +end subroutine PMPI_Win_flush_local_all + +end interface From 18c8d67adb55a697548b4afd6dd0210daa2f105b Mon Sep 17 00:00:00 2001 From: Gilles Gouaillardet Date: Wed, 26 Oct 2016 14:59:27 +0900 Subject: [PATCH 9/9] fortran/use-mpi-tkr: fix MPI_Sizeof handling MPI_Sizeof related stuff has been moved to their own files. Remove MPI_Sizeof from Fortran interfaces when it cannot be built (e.g. stock gcc 4.8 on CentOS 7) Signed-off-by: Gilles Gouaillardet (cherry picked from commit open-mpi/ompi@bf789762a7048eb5b5ed957e5f29b7046656ce29) --- .../fortran/use-mpi-tkr/mpi-f90-interfaces.h | 564 ------------------ ompi/mpi/fortran/use-mpi-tkr/mpi.F90 | 4 + .../fortran/use-mpi-tkr/pmpi-f90-interfaces.h | 564 ------------------ 3 files changed, 4 insertions(+), 1128 deletions(-) diff --git a/ompi/mpi/fortran/use-mpi-tkr/mpi-f90-interfaces.h b/ompi/mpi/fortran/use-mpi-tkr/mpi-f90-interfaces.h index 754078372b0..64c08e8f1da 100644 --- a/ompi/mpi/fortran/use-mpi-tkr/mpi-f90-interfaces.h +++ b/ompi/mpi/fortran/use-mpi-tkr/mpi-f90-interfaces.h @@ -1351,570 +1351,6 @@ end subroutine MPI_Request_get_status end interface -interface MPI_Sizeof - -subroutine MPI_Sizeof0DCH(x, size, ierror) - character, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof0DCH - - -subroutine MPI_Sizeof0DL(x, size, ierror) - logical, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof0DL - - -subroutine MPI_Sizeof0DI1(x, size, ierror) - integer*1, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof0DI1 - - -subroutine MPI_Sizeof0DI2(x, size, ierror) - integer*2, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof0DI2 - - -subroutine MPI_Sizeof0DI4(x, size, ierror) - integer*4, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof0DI4 - - -subroutine MPI_Sizeof0DI8(x, size, ierror) - integer*8, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof0DI8 - - -subroutine MPI_Sizeof0DR4(x, size, ierror) - real*4, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof0DR4 - - -subroutine MPI_Sizeof0DR8(x, size, ierror) - real*8, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof0DR8 - - -subroutine MPI_Sizeof0DC8(x, size, ierror) - complex*8, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof0DC8 - - -subroutine MPI_Sizeof0DC16(x, size, ierror) - complex*16, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof0DC16 - - -subroutine MPI_Sizeof1DCH(x, size, ierror) - character, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof1DCH - - -subroutine MPI_Sizeof1DL(x, size, ierror) - logical, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof1DL - - -subroutine MPI_Sizeof1DI1(x, size, ierror) - integer*1, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof1DI1 - - -subroutine MPI_Sizeof1DI2(x, size, ierror) - integer*2, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof1DI2 - - -subroutine MPI_Sizeof1DI4(x, size, ierror) - integer*4, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof1DI4 - - -subroutine MPI_Sizeof1DI8(x, size, ierror) - integer*8, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof1DI8 - - -subroutine MPI_Sizeof1DR4(x, size, ierror) - real*4, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof1DR4 - - -subroutine MPI_Sizeof1DR8(x, size, ierror) - real*8, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof1DR8 - - -subroutine MPI_Sizeof1DC8(x, size, ierror) - complex*8, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof1DC8 - - -subroutine MPI_Sizeof1DC16(x, size, ierror) - complex*16, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof1DC16 - - -subroutine MPI_Sizeof2DCH(x, size, ierror) - character, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof2DCH - - -subroutine MPI_Sizeof2DL(x, size, ierror) - logical, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof2DL - - -subroutine MPI_Sizeof2DI1(x, size, ierror) - integer*1, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof2DI1 - - -subroutine MPI_Sizeof2DI2(x, size, ierror) - integer*2, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof2DI2 - - -subroutine MPI_Sizeof2DI4(x, size, ierror) - integer*4, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof2DI4 - - -subroutine MPI_Sizeof2DI8(x, size, ierror) - integer*8, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof2DI8 - - -subroutine MPI_Sizeof2DR4(x, size, ierror) - real*4, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof2DR4 - - -subroutine MPI_Sizeof2DR8(x, size, ierror) - real*8, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof2DR8 - - -subroutine MPI_Sizeof2DC8(x, size, ierror) - complex*8, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof2DC8 - - -subroutine MPI_Sizeof2DC16(x, size, ierror) - complex*16, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof2DC16 - - -subroutine MPI_Sizeof3DCH(x, size, ierror) - character, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof3DCH - - -subroutine MPI_Sizeof3DL(x, size, ierror) - logical, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof3DL - - -subroutine MPI_Sizeof3DI1(x, size, ierror) - integer*1, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof3DI1 - - -subroutine MPI_Sizeof3DI2(x, size, ierror) - integer*2, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof3DI2 - - -subroutine MPI_Sizeof3DI4(x, size, ierror) - integer*4, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof3DI4 - - -subroutine MPI_Sizeof3DI8(x, size, ierror) - integer*8, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof3DI8 - - -subroutine MPI_Sizeof3DR4(x, size, ierror) - real*4, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof3DR4 - - -subroutine MPI_Sizeof3DR8(x, size, ierror) - real*8, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof3DR8 - - -subroutine MPI_Sizeof3DC8(x, size, ierror) - complex*8, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof3DC8 - - -subroutine MPI_Sizeof3DC16(x, size, ierror) - complex*16, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof3DC16 - - -subroutine MPI_Sizeof4DCH(x, size, ierror) - character, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof4DCH - - -subroutine MPI_Sizeof4DL(x, size, ierror) - logical, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof4DL - - -subroutine MPI_Sizeof4DI1(x, size, ierror) - integer*1, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof4DI1 - - -subroutine MPI_Sizeof4DI2(x, size, ierror) - integer*2, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof4DI2 - - -subroutine MPI_Sizeof4DI4(x, size, ierror) - integer*4, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof4DI4 - - -subroutine MPI_Sizeof4DI8(x, size, ierror) - integer*8, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof4DI8 - - -subroutine MPI_Sizeof4DR4(x, size, ierror) - real*4, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof4DR4 - - -subroutine MPI_Sizeof4DR8(x, size, ierror) - real*8, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof4DR8 - - -subroutine MPI_Sizeof4DC8(x, size, ierror) - complex*8, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof4DC8 - - -subroutine MPI_Sizeof4DC16(x, size, ierror) - complex*16, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof4DC16 - - -subroutine MPI_Sizeof5DCH(x, size, ierror) - character, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof5DCH - - -subroutine MPI_Sizeof5DL(x, size, ierror) - logical, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof5DL - - -subroutine MPI_Sizeof5DI1(x, size, ierror) - integer*1, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof5DI1 - - -subroutine MPI_Sizeof5DI2(x, size, ierror) - integer*2, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof5DI2 - - -subroutine MPI_Sizeof5DI4(x, size, ierror) - integer*4, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof5DI4 - - -subroutine MPI_Sizeof5DI8(x, size, ierror) - integer*8, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof5DI8 - - -subroutine MPI_Sizeof5DR4(x, size, ierror) - real*4, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof5DR4 - - -subroutine MPI_Sizeof5DR8(x, size, ierror) - real*8, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof5DR8 - - -subroutine MPI_Sizeof5DC8(x, size, ierror) - complex*8, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof5DC8 - - -subroutine MPI_Sizeof5DC16(x, size, ierror) - complex*16, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof5DC16 - - -subroutine MPI_Sizeof6DCH(x, size, ierror) - character, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof6DCH - - -subroutine MPI_Sizeof6DL(x, size, ierror) - logical, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof6DL - - -subroutine MPI_Sizeof6DI1(x, size, ierror) - integer*1, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof6DI1 - - -subroutine MPI_Sizeof6DI2(x, size, ierror) - integer*2, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof6DI2 - - -subroutine MPI_Sizeof6DI4(x, size, ierror) - integer*4, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof6DI4 - - -subroutine MPI_Sizeof6DI8(x, size, ierror) - integer*8, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof6DI8 - - -subroutine MPI_Sizeof6DR4(x, size, ierror) - real*4, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof6DR4 - - -subroutine MPI_Sizeof6DR8(x, size, ierror) - real*8, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof6DR8 - - -subroutine MPI_Sizeof6DC8(x, size, ierror) - complex*8, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof6DC8 - - -subroutine MPI_Sizeof6DC16(x, size, ierror) - complex*16, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof6DC16 - - -subroutine MPI_Sizeof7DCH(x, size, ierror) - character, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof7DCH - - -subroutine MPI_Sizeof7DL(x, size, ierror) - logical, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof7DL - - -subroutine MPI_Sizeof7DI1(x, size, ierror) - integer*1, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof7DI1 - - -subroutine MPI_Sizeof7DI2(x, size, ierror) - integer*2, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof7DI2 - - -subroutine MPI_Sizeof7DI4(x, size, ierror) - integer*4, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof7DI4 - - -subroutine MPI_Sizeof7DI8(x, size, ierror) - integer*8, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof7DI8 - - -subroutine MPI_Sizeof7DR4(x, size, ierror) - real*4, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof7DR4 - - -subroutine MPI_Sizeof7DR8(x, size, ierror) - real*8, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof7DR8 - - -subroutine MPI_Sizeof7DC8(x, size, ierror) - complex*8, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof7DC8 - - -subroutine MPI_Sizeof7DC16(x, size, ierror) - complex*16, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine MPI_Sizeof7DC16 - -end interface - - interface MPI_Start subroutine MPI_Start(request, ierror) diff --git a/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 b/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 index c8f0f7d01e1..ab3cd7ac0b7 100644 --- a/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 +++ b/ompi/mpi/fortran/use-mpi-tkr/mpi.F90 @@ -58,4 +58,8 @@ module mpi include "pmpi-f90-file-interfaces.h" #endif +#if OMPI_FORTRAN_BUILD_SIZEOF + include "mpi-tkr-sizeof.h" +#endif + end module mpi diff --git a/ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-interfaces.h b/ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-interfaces.h index 61015130855..3f9d3291f6d 100644 --- a/ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-interfaces.h +++ b/ompi/mpi/fortran/use-mpi-tkr/pmpi-f90-interfaces.h @@ -1351,570 +1351,6 @@ end subroutine PMPI_Request_get_status end interface -interface PMPI_Sizeof - -subroutine PMPI_Sizeof0DCH(x, size, ierror) - character, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof0DCH - - -subroutine PMPI_Sizeof0DL(x, size, ierror) - logical, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof0DL - - -subroutine PMPI_Sizeof0DI1(x, size, ierror) - integer*1, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof0DI1 - - -subroutine PMPI_Sizeof0DI2(x, size, ierror) - integer*2, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof0DI2 - - -subroutine PMPI_Sizeof0DI4(x, size, ierror) - integer*4, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof0DI4 - - -subroutine PMPI_Sizeof0DI8(x, size, ierror) - integer*8, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof0DI8 - - -subroutine PMPI_Sizeof0DR4(x, size, ierror) - real*4, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof0DR4 - - -subroutine PMPI_Sizeof0DR8(x, size, ierror) - real*8, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof0DR8 - - -subroutine PMPI_Sizeof0DC8(x, size, ierror) - complex*8, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof0DC8 - - -subroutine PMPI_Sizeof0DC16(x, size, ierror) - complex*16, intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof0DC16 - - -subroutine PMPI_Sizeof1DCH(x, size, ierror) - character, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof1DCH - - -subroutine PMPI_Sizeof1DL(x, size, ierror) - logical, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof1DL - - -subroutine PMPI_Sizeof1DI1(x, size, ierror) - integer*1, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof1DI1 - - -subroutine PMPI_Sizeof1DI2(x, size, ierror) - integer*2, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof1DI2 - - -subroutine PMPI_Sizeof1DI4(x, size, ierror) - integer*4, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof1DI4 - - -subroutine PMPI_Sizeof1DI8(x, size, ierror) - integer*8, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof1DI8 - - -subroutine PMPI_Sizeof1DR4(x, size, ierror) - real*4, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof1DR4 - - -subroutine PMPI_Sizeof1DR8(x, size, ierror) - real*8, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof1DR8 - - -subroutine PMPI_Sizeof1DC8(x, size, ierror) - complex*8, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof1DC8 - - -subroutine PMPI_Sizeof1DC16(x, size, ierror) - complex*16, dimension(*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof1DC16 - - -subroutine PMPI_Sizeof2DCH(x, size, ierror) - character, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof2DCH - - -subroutine PMPI_Sizeof2DL(x, size, ierror) - logical, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof2DL - - -subroutine PMPI_Sizeof2DI1(x, size, ierror) - integer*1, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof2DI1 - - -subroutine PMPI_Sizeof2DI2(x, size, ierror) - integer*2, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof2DI2 - - -subroutine PMPI_Sizeof2DI4(x, size, ierror) - integer*4, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof2DI4 - - -subroutine PMPI_Sizeof2DI8(x, size, ierror) - integer*8, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof2DI8 - - -subroutine PMPI_Sizeof2DR4(x, size, ierror) - real*4, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof2DR4 - - -subroutine PMPI_Sizeof2DR8(x, size, ierror) - real*8, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof2DR8 - - -subroutine PMPI_Sizeof2DC8(x, size, ierror) - complex*8, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof2DC8 - - -subroutine PMPI_Sizeof2DC16(x, size, ierror) - complex*16, dimension(1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof2DC16 - - -subroutine PMPI_Sizeof3DCH(x, size, ierror) - character, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof3DCH - - -subroutine PMPI_Sizeof3DL(x, size, ierror) - logical, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof3DL - - -subroutine PMPI_Sizeof3DI1(x, size, ierror) - integer*1, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof3DI1 - - -subroutine PMPI_Sizeof3DI2(x, size, ierror) - integer*2, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof3DI2 - - -subroutine PMPI_Sizeof3DI4(x, size, ierror) - integer*4, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof3DI4 - - -subroutine PMPI_Sizeof3DI8(x, size, ierror) - integer*8, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof3DI8 - - -subroutine PMPI_Sizeof3DR4(x, size, ierror) - real*4, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof3DR4 - - -subroutine PMPI_Sizeof3DR8(x, size, ierror) - real*8, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof3DR8 - - -subroutine PMPI_Sizeof3DC8(x, size, ierror) - complex*8, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof3DC8 - - -subroutine PMPI_Sizeof3DC16(x, size, ierror) - complex*16, dimension(1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof3DC16 - - -subroutine PMPI_Sizeof4DCH(x, size, ierror) - character, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof4DCH - - -subroutine PMPI_Sizeof4DL(x, size, ierror) - logical, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof4DL - - -subroutine PMPI_Sizeof4DI1(x, size, ierror) - integer*1, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof4DI1 - - -subroutine PMPI_Sizeof4DI2(x, size, ierror) - integer*2, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof4DI2 - - -subroutine PMPI_Sizeof4DI4(x, size, ierror) - integer*4, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof4DI4 - - -subroutine PMPI_Sizeof4DI8(x, size, ierror) - integer*8, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof4DI8 - - -subroutine PMPI_Sizeof4DR4(x, size, ierror) - real*4, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof4DR4 - - -subroutine PMPI_Sizeof4DR8(x, size, ierror) - real*8, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof4DR8 - - -subroutine PMPI_Sizeof4DC8(x, size, ierror) - complex*8, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof4DC8 - - -subroutine PMPI_Sizeof4DC16(x, size, ierror) - complex*16, dimension(1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof4DC16 - - -subroutine PMPI_Sizeof5DCH(x, size, ierror) - character, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof5DCH - - -subroutine PMPI_Sizeof5DL(x, size, ierror) - logical, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof5DL - - -subroutine PMPI_Sizeof5DI1(x, size, ierror) - integer*1, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof5DI1 - - -subroutine PMPI_Sizeof5DI2(x, size, ierror) - integer*2, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof5DI2 - - -subroutine PMPI_Sizeof5DI4(x, size, ierror) - integer*4, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof5DI4 - - -subroutine PMPI_Sizeof5DI8(x, size, ierror) - integer*8, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof5DI8 - - -subroutine PMPI_Sizeof5DR4(x, size, ierror) - real*4, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof5DR4 - - -subroutine PMPI_Sizeof5DR8(x, size, ierror) - real*8, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof5DR8 - - -subroutine PMPI_Sizeof5DC8(x, size, ierror) - complex*8, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof5DC8 - - -subroutine PMPI_Sizeof5DC16(x, size, ierror) - complex*16, dimension(1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof5DC16 - - -subroutine PMPI_Sizeof6DCH(x, size, ierror) - character, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof6DCH - - -subroutine PMPI_Sizeof6DL(x, size, ierror) - logical, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof6DL - - -subroutine PMPI_Sizeof6DI1(x, size, ierror) - integer*1, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof6DI1 - - -subroutine PMPI_Sizeof6DI2(x, size, ierror) - integer*2, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof6DI2 - - -subroutine PMPI_Sizeof6DI4(x, size, ierror) - integer*4, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof6DI4 - - -subroutine PMPI_Sizeof6DI8(x, size, ierror) - integer*8, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof6DI8 - - -subroutine PMPI_Sizeof6DR4(x, size, ierror) - real*4, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof6DR4 - - -subroutine PMPI_Sizeof6DR8(x, size, ierror) - real*8, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof6DR8 - - -subroutine PMPI_Sizeof6DC8(x, size, ierror) - complex*8, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof6DC8 - - -subroutine PMPI_Sizeof6DC16(x, size, ierror) - complex*16, dimension(1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof6DC16 - - -subroutine PMPI_Sizeof7DCH(x, size, ierror) - character, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof7DCH - - -subroutine PMPI_Sizeof7DL(x, size, ierror) - logical, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof7DL - - -subroutine PMPI_Sizeof7DI1(x, size, ierror) - integer*1, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof7DI1 - - -subroutine PMPI_Sizeof7DI2(x, size, ierror) - integer*2, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof7DI2 - - -subroutine PMPI_Sizeof7DI4(x, size, ierror) - integer*4, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof7DI4 - - -subroutine PMPI_Sizeof7DI8(x, size, ierror) - integer*8, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof7DI8 - - -subroutine PMPI_Sizeof7DR4(x, size, ierror) - real*4, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof7DR4 - - -subroutine PMPI_Sizeof7DR8(x, size, ierror) - real*8, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof7DR8 - - -subroutine PMPI_Sizeof7DC8(x, size, ierror) - complex*8, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof7DC8 - - -subroutine PMPI_Sizeof7DC16(x, size, ierror) - complex*16, dimension(1,1,1,1,1,1,*), intent(in) :: x - integer, intent(out) :: size - integer, intent(out) :: ierror -end subroutine PMPI_Sizeof7DC16 - -end interface - - interface PMPI_Start subroutine PMPI_Start(request, ierror)