Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fortran errata: Clarify where TYPE(MPI_Status) type must be defined #298

Closed
jsquyres opened this issue Jul 16, 2020 · 2 comments
Closed
Labels
chap-bindings Language Bindings Chapter Committee errata Errata items for the previous MPI Standard passed final vote Passed the final formal vote wg-fortran Fortran Working Group

Comments

@jsquyres
Copy link
Member

jsquyres commented Jul 16, 2020

Problem

The all-caps Fortran binding listed in MPI-3.1 p658 for MPI_Status_f2f08() and MPI_Status_f082f() imply that the Fortran type TYPE(MPI_Status) must be available in both the mpi module and mpif.h.

Upon discussion in the Fortran WG, and supported by other text in the standard, it was decided that the intent was actually to:

  1. Only define those all-caps functions in the mpi module (not in the mpif.h header file)
  2. And therefore only make TYPE(MPI_Status) be available in the mpi module (not in the mpif.h header file).

This problem exists in both MPI-3.x and MPI-4.x (we will need 2 PRs).

Proposal

This errata adds clarification:

  • Adds a text line that specifically states that the MPI_Status_f2f08() and MPI_Status_f082f() routines are only available in Fortran via the mpi and mpi_f08 modules.
  • Adds annotation to the all-caps Fortran bindings indicating that it is only intended for the mpi module.
  • Adds an equivalent annotation in the Annex where these bindings are listed.

Impact on Implementations

Implementations can remove the MPI_Status_f*08* routines and the declaration for TYPE(MPI_Status) from mpif.h.

In reality, neither current versions of Open MPI nor MPICH actually define TYPE(MPI_Status) in mpif.h or the mpi module. 😲 This issue came up when Open MPI discovered their oversight and was discussing how to implement the missing functions (see open-mpi/ompi#7762).

Impact on Users

Joy and good fortune to all who can now easily understand from which interfaces these functions are available.

References

See discussions on the MPI Fortran WG mailing list here: https://lists.mpi-forum.org/pipermail/mpiwg-fortran/2020-July/003554.html.

Summary (from Rolf R.):

In MPI-3.1:

  • page 607 lines 18-24 require these types and the overloaded operators .EQ./.NE. for mpi_f08 module
  • page 609 lines 34-36 require these types and the overloaded operators .EQ./.NE. for mpi module
  • there is no such text on page 611-612 on mpif.h

And page 802 lines 9-15 also Show that it was never intented to add these types and routines to old mpif.h.

@jsquyres jsquyres added errata Errata items for the previous MPI Standard mpi-4.0 wg-fortran Fortran Working Group chap-bindings Language Bindings Chapter Committee labels Jul 16, 2020
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 22, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 22, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 22, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 22, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 22, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 22, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 23, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 24, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 24, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 25, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 25, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 25, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 26, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 26, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 26, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 26, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 26, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 26, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 26, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Jul 26, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
@RolfRabenseifner
Copy link

I just reviewed:
Corresponding v4.x pull request: mpi-forum/mpi-standard#255
Latest PDF (30 July 2020): mpi40-fortran-status-errata-9defff98.pdf
Corresponding v3.x pull request: mpi-forum/mpi-standard#262
Latest PDF (30 July 2020): mpi3x-fortran-status-errata-1901a4ee.pdf
Correct and complete.

@wesbland wesbland added the passed first vote Passed the first formal vote label Aug 24, 2020
@wesbland
Copy link
Member

This passed an errata vote on 2020-08-19.

https://www.mpi-forum.org/meetings/2020/08/votes

@wesbland wesbland removed the passed first vote Passed the first formal vote label Aug 24, 2020
@wesbland wesbland added the passed final vote Passed the final formal vote label Aug 24, 2020
ggouaillardet added a commit to ggouaillardet/ompi that referenced this issue Sep 8, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
jsquyres pushed a commit to ggouaillardet/ompi that referenced this issue Sep 9, 2020
Only in C bindings:
 - MPI_Status_c2f08()
 - MPI_Status_f082c()

In all bindings but mpif.h
 - MPI_Status_f082f()
 - MPI_Status_f2f08()

and the PMPI_* related subroutines

As initially inteded by the MPI forum, the Fortran to/from Fortran 2008
conversion subtoutines are *not* implemented in the mpif.h bindings.
See the discussion at mpi-forum/mpi-issues#298

Refs. open-mpi#1475

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
@wesbland wesbland closed this as completed Oct 7, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
chap-bindings Language Bindings Chapter Committee errata Errata items for the previous MPI Standard passed final vote Passed the final formal vote wg-fortran Fortran Working Group
Projects
None yet
Development

No branches or pull requests

3 participants