[Mpi-21] MPI-2.1 April 1 document comments

Jeff Squyres jsquyres at [hidden]
Mon Apr 7 13:18:32 CDT 2008



While reading the April 1 MPI-2.1 document for C++ and chapter 13  
issues, I itemized a list of other issues that I found.  Some may want  
to be pushed off to 2.2 (I have noted all of these with "--> This will  
require a vote") -- I leave these up to the Forum to decide -- but  
others should be fixed in 2.1.

Enjoy.

-----

April 7 2008
Comments on MPI-2.1 April 1, 2008 document

(notation: pX.Y = page X, line Y)

Overall
=======

- Frontage numbering is still roman numerals -- I thought we agreed to
   have the physical and PDF page numbers agree.

- Some function pointer typedefs are "_function", others are "_fn"
   We should be consistent throughout the text.

Intro chapter
=============

- p5.2: Two open source MPI implementations are cited that are no
   longer relevant.  This entire sentence should be removed.  Indeed,
   the language in the overall paragraph is forward-looking -- it
   should probably be re-worked to be in the present tense.

- p6.46: Chapter 13 discusses Fortran issues (not Fortran 90 issues),
   and also discusses language interoperability issues.

- p7.11: Looks like a broken LaTeX reference.

Terms and Conventions
=====================

- p9.40-10.10: The C and Fortran language neutral name do not include
   the prefix "MPI_", but the C++ bindings include the prefix "MPI::".
   Shouldn't the C/Fortran bindings be "MPI_CLASS_ACTION_SUBSET"
   (etc.)?

- p10.35: due to the decision from last meeting (sort out the
   IN/OUT/INOUT mess in MPI-2.2), the language should be softened in
   this paragraph and the full paragraph following this one (because
   they contradict each other).  Specifically, I propose changing:

   10.35: Thus, in C++, IN aguments are either references...
   to
          Thus, in C++, IN arguments are usually either references...

- p11.22: "Fortran in this document refers to Fortran 90".  For
   MPI-2.1, it is probably suitable to leave this, but we might want to
   make a statement (footnote or parenthetical) that it is expected to
   be updated in future MPI spec revisions.

Point-to-Point Communication
============================

- p66.33: Why is the request argument to the C bindings MPI_CANCEL
   take a pointer?  The language neutral binding is IN, and the C++
   binding is const.  This seems to be a contradiction.
   --> This cannot be changed easily because every MPI implementation
       uses (MPI_Request *) as the type.

- p83.29: extra space: "( int count,"

- p92.43: mising "const" before "void* location".  Adding "const"
   will not break any user codes or MPI implementations.
   --> This will require a vote.

- p95.47-48: remove "const" before lb an extent arguments.
   Removing "const" will not break any user codes or MPI
   implementations.
   --> This will require a vote.

Collective Communications
=========================

- p123.32: "relaxed" uses quote marks in the wrong direction

- p123.27: should say "MPI-1" instead of "MPI-1.2"

Groups, Contexts, and Communicators
===================================

- p186.5: Descriptions for the C++ bindings need to be included here,
   since they are different than the C bindings.  The text from 13.1.7
   would seem to be sufficient.

- p214.32: Missing "const" before "void* attribute_val_in" (datatype
   callback argument is const)
   --> This will require a vote.

- p214.36: Delete function comm argument should be const (?)
   --> This will require a vote.

- p219.5: Missing "const" before "void* attribute_val_in" (datatype
   callback argument is const)
   --> This will require a vote.

- p219.9: Delete function win argument should be const (?)
   --> This will require a vote.

- p221.44: Delete function type argument should be const (?)
   --> This will require a vote.

MPI Environmental Management
============================

- p248.3: Earlier in the document, references are made to v1.3.  Is
   that not a valid tuple to return from MPI_GET_VERSION?

- p249.45: Remove duplicate C++ binding

- p254.21: Remove erroneous MPI::Intracomm::Create C++ binding

- p255.2: First argument (comm handle reference) to errhandler
   function should be const.
   --> This will require a vote.

- p256.27: First argument (win handle reference) to errhandler
   function should be const.
   --> This will require a vote.

- p257.41: First argument (file handle reference) to errhandler
   function should be const.
   --> This will require a vote.

- p258.39: Delete duplicate C++ binding

- p259.13: Delete duplicate C++ binding

- p260.36-43: First letter of description should be capitolized to be
   consistent with rest of list.

- p261.42: Delete duplicate C++ binding

- p263.21-23: Delete duplicate C++ bindings

- p264.22: Delete duplicate C++ binding

- p267.24: Delete duplicate C++ binding

- p267.42: Delete duplicate C++ binding

Process Creation and Management
===============================

- p288.11: Function should be const.
   --> This will require a vote.

- p288.15: Function should be const.
   --> This will require a vote.

External Interfaces
===================

- p344.39: Arguments of query_fn, free_fn, and cancel_fn need to have
   *'s.  This is a consistency issue (the rest of the standard uses
   "*" for function pointer parameters), not a correctness issue --
   works both ways.  Should not break any user code or MPI
   implementations.

I/O
===

- p419.43: datatype argument should be const

Language Bindings
=================

- p437.18: Delete first sentence of paragraph

- p437.22: Delete "original"

- p437.24-29: Delete first and last sentences of paragraph

- p437.29: New last sentence, "See Annex A.4.19 for a function cross
   reference."

- p438.11: Delete "for MPI-1"

- p438.14-37: Join the two namespaces together and delete the
   "Additionally, the following classes defined for MPI-2:" text.
   Re-sort the class names as appropriate.

- p439.2: Delete last sentence ("To maintain ... in [23].")

- p442: Table 13.1 is redundant with Annex A.1.  However, the
   following C++ types are missing from Annex A.1:

   MPI::SIGNED_CHAR
   MPI::BOOL
   MPI::COMPLEX
   MPI::DOUBLE_COMPLEX
   MPI::LONG_DOUBLE_COMPLES

- p442: Table 13.2 is redundant with Annex A.1

- p445.5-11: These functions are not listed in Annex A

- p445.36-38: Remove this entire paragraph ("Compilers that do not
   support...").  This feature has been a part of C++ since C++98, and
   exists in all modern C++ compilers.

- p446.7-17: Declarations for the MPI::Exceptions class are missing
   from Annex A

- p448.47: Remove trailing "/" from "OUT/"

- p450.26-44: The bullet list is wholly redundant with section 2.6.2.

- p456.27-29: VOLATILE is in Fortran 200x; reword first sentence from:
       "In the longer term, the attribute VOLATILE is under
       consideration for Fortran 2000 and would give the buffer or
       variable the properties needed, but it would inhibit
       optimization of any code containing the buffer or variable."
   to
       "The VOLATILE attribute, available in later versions of Fortran,
       would give the buffer or variable the properties needed, but it
       would inhibit optimization of any code containing the buffer or
       variable."

- p459.11-15: Delete paragraph

- p462.43-45: Delete paragraph

- p463.17-18: Delete first sentence; delete "In MPI-2,"

- p467.23: There is an extra space before "MPI_FINALIZE"

- p468.16-39: None of these functions appear in Annex A (they
   should!)

- p469.41 and 44: These functions do not appear in Annex A (they
   should!)

- p470.46: Change sentence from:
       "It is important to note that all C++ objects and their
       corresponding C handles..."
   to
       "It is important to note that all C++ objects with
       corresponding C handles..."
   I.e., this sentence is referring only to C++ handles that actually
   have corresponding C handles (e.g., not
   MPI::ERRORS_THROW_EXCEPTIONS).

Profiling Interface
===================

- p481.4: Delete "const"
   --> This may require a vote.

Annex A
=======

- p494.15: s/Fortran/Fortran only

- p494.30: Missing MPI::ERRORS_THROW_EXCEPTIONS

- p495.18-19 and 33-34: MPI_BYTE and MPI_PACKED are listed in two
   separate tables.

- p495.30: MPI::COMPLEX should be MPI::F_COMPLEX

- p495.38: Looks like a blank extra 3rd column is in this table

- p495.bottom: Missing table for "C++ only" datatypes:
   MPI::BOOL
   MPI::COMPLEX
   MPI::DOUBLE_COMPLEX
   MPI::LONG_DOUBLE_COMPLEX
   MPI::SIGNED_CHAR

- p496.1: Add ", no Fortran" before the ")"

- p496.10, s/Fortran/Fortran only/

- p496.27-30: Alignment of table entries should be to the left, not
   centered.

- p544.13: Many of the prototypes for Clone() and Dup() are missing

- p547.all: Many doubles of C++ bindings; likely because of errors in
   the chapter text.

- p554.41: Do we need an empty deprecated functions section?

- p555.45-46: Forgot to mention MPI_ERRCODES_IGNORE,
   MPI_F_STATUSES_IGNORE, and MPI_F_STATUS_IGNORE

- p556.bottom: Missing prototypes for the MPI::Exceptions class


-- 
Jeff Squyres
Cisco Systems




More information about the Mpi-21 mailing list