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

The Embiggenment ("BigCount") -- Errata #327

Closed
tonyskjellum opened this issue Nov 4, 2020 · 3 comments
Closed

The Embiggenment ("BigCount") -- Errata #327

tonyskjellum opened this issue Nov 4, 2020 · 3 comments
Assignees
Labels
errata Errata items for the previous MPI Standard wg-large-counts Large Counts Working Group
Milestone

Comments

@tonyskjellum
Copy link

tonyskjellum commented Nov 4, 2020

Problem

Fixes several small issues with the accepted large-count API (cf, Ticket #137 )

Proposal

Fix small issues as specified in the changes to text, mentioned next.

Changes to the Text

  1. the change bar latex macros have been removed

  2. change all new function extensions from _l to _c and the text "

  • an underscore followed by a lower-case L " has been removed, where
    used
  1. addition of the following sentence in Section 2.5.8: "Even though
    the \type{MPI_Count} type is large enough to encode address
    locations, \type{MPI_Count} type shall not be used to represent
    an \mpitermni{absolute address}\mpitermindex{addresses!absolute}."

  2. delete the following sentence that was repeated: "The support
    for large count and displacement in Fortran is available when using
    newer \MPI/ Fortran bindings \code{(USE mpi_f08)}."

  3. embiggen MPI_TYPE_GET_ENVELOPE and MPI_TYPE_GET_CONTENTS

  4. change error class from MPI_ERR_VALUE_TOO_LARGE to MPI_ERR_TYPE
    for functions MPI_TYPE_GET_ENVELOPE and MPI_TYPE_GET_CONTENTS

  5. addition of separate MPI_Op_create_c and MPI_Register_datarep_c functions for F08 bindings

The following text has been added to the I/O chapter to indicate this feature:

\mpifunc{MPI_Datarep_conversion_function} also supports large
count types in separate additional \MPI/ procedures in C (suffixed
with the ``_c'') and interface polymorphism in Fortran when using
\code{USE mpi_f08}.

The following text has been added to the collective chapter to indicate this feature:

When calling any reduction or prefix scan \MPI/ procedure with a
user-defined MPI operator, the type of the \mpiarg{count} parameter
in the call to the reduction or prefix scan \MPI/ procedure does
not need to be identical to the type of the \mpiarg{len} parameter
in the user function associated with the user-defined \MPI/ operator.
If the \mpiarg{count} parameter has a type of \ctype{int} in C or
\ftype{INTEGER} in Fortran and the \mpiarg{len} parameter has a
type of \type{MPI_COUNT}, then \MPI/ will perform the appropriate
widening type conversion of the \mpiarg{len} parameter. If the
\mpiarg{count} parameter has a type of \type{MPI_COUNT} and the
\mpiarg{len} parameter has a type of \ctype{int} in C or \ftype{INTEGER}
in Fortran, then \MPI/ will perform the appropriate narrowing type
conversion of the \mpiarg{len} parameter. If this narrowing
conversion would result in truncation of the \mpiarg{len} value,
then \MPI/ will call the user function multiple times with a sequence of
values for \mpiarg{len} that sum to the value of \mpiarg{count}.

We also added this text to the collective chapter:
\mpifunc{MPI_User_function} also supports large count types in
separate additional \MPI/ procedures in C (suffixed with the ``_c'')
and interface polymorphism in Fortran when using \code{USE mpi_f08}.

  1. following text changes in Section 18.2:

(a) replace "The following were used prior to MPI-4.0:" with "The
following types, which were used prior to MPI-4.0, have been deemed
too small to hold values that applications wish to use:" and remove
the sentence "These types have been deemed too small to hold values
that applications wish to use." in the next paragraph

(b) addition of "(e.g., in constructors of MPI datatypes that can be used with files)"
to the end of third bullet

(c) addition of the following new text (with any variations): For
the large count versions of three datatype constructors,
MPI_TYPE_CREATE_HINDEXED, MPI_TYPE_CREATE_HINDEXED_BLOCK, and
MPI_TYPE_CREATE_STRUCT, absolute addresses shall not be used to
specify byte displacements since the parameter is of type MPI_COUNT
instead of type MPI_AINT (see Section 2.5.8).

We added this text to the Datatypes chapter:
For the large count versions of three datatype constructors with explicit addresses,
\mpifunc{MPI_TYPE_CREATE_HINDEXED}, \mpifunc{MPI_TYPE_CREATE_HINDEXED_BLOCK}, and
\mpifunc{MPI_TYPE_CREATE_STRUCT}, absolute addresses shall not be used to
specify byte displacements since the parameter is of type MPI_COUNT
instead of type \type{MPI_AINT}.

(d) addition of "MPI_Offset for parameters that represent byte displacement in files, " in the C bindings description

(e) addition of "INTEGER(KIND=MPI_OFFSET_KIND) for parameters that
represent byte displacement in files, " in the Fortran bindings
description

  1. Addition of the text to add an exception for the two explicit "_c" functions in F08:

It is erroneous to directly invoke the "_c" specific procedures in
the Fortran mpi_f08 module with the exception of the following
procedures: MPI_Op_create_c and MPI_Register_datarep_c.

Impact on Implementations

Clarifies certain aspects of implementation APIs, but we are making these pre-standard.

Impact on Users

None, part of new standardization correction.

References

Original ticket : #137
PR: https://github.com/mpi-forum/mpi-standard/pull/268
PDF: mpi40-report-ticket137-711c32c-6Nov2020.pdf
Annotated PDF: mpi40-report-ticket137-711c32c-6Nov2020-highlighted.pdf

@tonyskjellum tonyskjellum added the errata Errata items for the previous MPI Standard label Nov 4, 2020
@tonyskjellum tonyskjellum added this to the 2020-12 milestone Nov 4, 2020
@dholmes-epcc-ed-ac-uk dholmes-epcc-ed-ac-uk added mpi-4.0 wg-large-counts Large Counts Working Group labels Nov 4, 2020
@RolfRabenseifner
Copy link

RC40 Sect. 6.9.5, page 230, line 5 reads

MPI_REDUCE_LOCAL. The user-defined ...

but should read

MPI_REDUCE_LOCAL. In the case of Fortran mpi_f08, the large count version needs to be called explicitely as MPI_Op_create_c (i.e., with _c) because interface polymorphism cannot be used to differentiate between the two different user callback prototypes with their different type signatures. The use-defined ..

@dholmes-epcc-ed-ac-uk
Copy link
Member

Minor tweaks:

MPI_REDUCE_LOCAL. In the case of Fortran mpi_f08, the large count version shall be called explicitly as \mpifunc{MPI_Op_create_c} (i.e., with the \mpicode{_c} suffix) because interface polymorphism cannot be used to differentiate between the two different user callback prototypes with their different type signatures. The user-defined ..

@wesbland
Copy link
Member

2020-12-08 No-No vote results

Yes No Abstain Missed Result
29 0 1 0 Passed

@wesbland wesbland closed this as completed Jan 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
errata Errata items for the previous MPI Standard wg-large-counts Large Counts Working Group
Projects
None yet
Development

No branches or pull requests

5 participants