diff --git a/NEWS b/NEWS index e71d5cf20c5..5c41e9ee59a 100644 --- a/NEWS +++ b/NEWS @@ -53,6 +53,21 @@ included in the vX.Y.Z section and be denoted as: (** also appeared: A.B.C) -- indicating that this item was previously included in release version vA.B.C. +2.0.2 -- TBD +----------------------- + +- The following backwards-incompatible changes to the Fortran API were + made. They were made because Open MPI's Fortran bindings for these + were incorrect; any MPI applications using them were therefore also + erroneous, and not subject to backwards compatibility constraints. + - All Fortran bindings: + - The type of MPI_DISPLACEMENT_CURRENT was changed from INTEGER to + INTEGER(KIND=MPI_OFFSET_KIND) + - Fortran "use mpi" module: + - MPI_File_wr_at_all_begin -> MPI_File_write_at_all_begin + - MPI_File_read_ord_begin -> MPI_File_read_ordered_begin + + 2.0.1 -- 2 September 2016 ----------------------- 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 000e1cc869b..c52532af108 100755 --- a/ompi/include/mpif-values.pl +++ b/ompi/include/mpif-values.pl @@ -86,6 +86,7 @@ sub write_file { #---------------------------------------------------------------------------- my $handles; +my $lhandles; $handles->{MPI_COMM_WORLD} = 0; $handles->{MPI_COMM_SELF} = 1; @@ -398,7 +399,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; #---------------------------------------------------------------------------- @@ -421,6 +424,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 @@ -431,26 +436,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"); #---------------------------------------------------------------------------- @@ -478,6 +489,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 @@ -502,6 +515,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"; 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 bc5d667bd4e..b48f9dc2070 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 @@ -1002,27 +1002,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 @@ -1467,7 +1467,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 @@ -1477,13 +1477,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 @@ -1493,7 +1493,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 diff --git a/ompi/mpi/man/man3/MPI_Info_get_nkeys.3in b/ompi/mpi/man/man3/MPI_Info_get_nkeys.3in index 735e5db2832..bad0c34ee7e 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 1137337e52d..11c9291914a 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