[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

vote on first batch of corrections for MPI 2.1




Dear group,

     I believe we can now proceed to a vote on the first batch of corrections.
I think that the email discussion got us to a point where people can cast a
single vote on the whole batch.  Please vote yes or no.  Please be sure
that each organization casts only one vote.  I will post the votes in a couple
of days, make one attempt to round up any missing votes, and then declare this
first batch decided on.  If it is defeated, we will of course have to break it
up into subpieces and try again.  I hope we can move forward, and intend to 
try to move things along a little more briskly than in this first cycle.

I have modified the original list very slightly based on the discussion, and
postponed one item.  The list of corrections below has an annotation line at
the beginning if there has been any change since I first sent this out.  You
can find my comments by looking for "- Rusty".

For those who joined a little late, here was my original message, with
pointers to the correct version of the standard to use when reading the
corrections, and a pointer to the web site.

|      Here is the first batch of proposed corrections to MPI 2.0.  It
| contains mainly typos and obvious errors that should not be very
| controviersial.  Items 1-14 are from the official errata that has been
| posted for a while; Items 15-20 are things in a similar vein that have come
| by email since the errata were posted.  If an item has "Mail discussing"
| with it, it means that you can see the mail that has been posted to
| mpi-comments by going to the web page for the mpi-2.1 effort at
| www.mpi-forum.org/mpi1_2 and clicking on the link to mail for that item.
| 
| I suggest that you equip yourself for the upcoming work by downloading the
| postscript version of the MPI 2.0 Standard from http://www.mpi-forum.org.
| Get the postscript version rather than the HTML version because the
| postscript version has the line numbers referred to below.
| 
| Please begin reviewing these, and post discussion to this list,
| mpi-21@mpi-forum.org.  I would like to do the voting at the end of the week
| if sufficient discussion has taken place.

=========================================================================


All page and line numbers are for the official version of the MPI-2 document
available from the MPI Forum home page at
http://www.mpi-forum.org.

1. ______________________________________________________________________
   ( This first item generated the most discussion, but the discussion 
     seemed to converge on adopting this change.  The last five words
     of clarification were added by Marc, and I have added them to the
     proposal, since they just help clarify the issue. - Rusty)

       Page 24, lines 20-21 read 

       MPI_FINALIZE is collective on MPI_COMM_WORLD.

       but should read 

       MPI_FINALIZE is collective over all connected processes. If no
       processes were spawned, accepted or connected then this means over
       MPI_COMM_WORLD; otherwise it is collective over the union of all
       processes that have been and continue to be connected, as explained in
       Section 5.5.4.

2. ______________________________________________________________________

       Page 27, line 26 reads 

       must be added to line 3 of page 54.

       but should read 

       must be added to line 3 of page 52. 

3. ______________________________________________________________________

       Page 69, lines 14-15 read 

       MPI::Datatype MPI::Datatype::Resized(const MPI::Aint lb, const
       MPI::Aint extent) const

       but should read 

       MPI::Datatype MPI::Datatype::Create_resized(const MPI::Aint lb, const
       MPI::Aint extent) const

3.5______________________________________________________________________
   ( This was added by Hubert Ritzdorf.  It was not on the original list,
     but is in exactly the same spirit as that list.  - Rusty)

       Page 79,  Line 11 says

       MPI_UNPACK_EXTERNAL (datarep, inbuf, incount, datatype, outbuf, outsize,
       position)

       It should be

       MPI_UNPACK_EXTERNAL (datarep, inbuf, insize, position, outbuf, outcount,
       datatype)

4. ______________________________________________________________________

       Page 94, line 29 reads 

       are the original sets of of processes.

       but should read 

       are the original sets of processes. 

5. ______________________________________________________________________

       Page 162, lines 43--44 curently read

       The ``in place'' option for intracommunicators is specified by passing
       the value MPI_IN_PLACE to the argument sendbuf at the root.

       but should read

       The ``in place'' option for intracommunicators is specified by passing
       the value MPI_IN_PLACE to the argument sendbuf at all processes.

6. ______________________________________________________________________
   ( Dick Treumann suggested that we postpone this until we tackle the 
     harder problem with the bindings for ALLTOALLW, but since the change
     proposed here is just for the language-independent definition, I think
     we can go ahead and approve this correction.  The correction is to
     identify some of the arguments as arrays where they should be so
     identified.  This is independent of the "Aint" binding problem, which
     we will address in the next batch of corrections.  - Rusty)

       Page 165, lines 4--22 read 

       [ IN sendcounts] integer array equal to the group size specifying the
       number of elements to send to each processor (integer)

       [ IN sdispls] integer array (of length group size). Entry j specifies
       the displacement in bytes (relative to sendbuf) from which to take the
       outgoing data destined for process j

       [ IN sendtypes] array of datatypes (of length group size). Entry j
       specifies the type of data to send to process j (handle)

       [ OUT recvbuf] address of receive buffer (choice) 

       [ IN recvcounts] integer array equal to the group size specifying the
       number of elements that can be received from each processor (integer)

       [ IN rdispls] integer array (of length group size). Entry i specifies
       the displacement in bytes (relative to recvbuf) at which to place the
       incoming data from process i

       [ IN recvtypes] array of datatypes (of length group size). Entry i
       specifies the type of data received from process i (handle)

       but should read 

       [ IN sendcounts] integer array equal to the group size specifying the
       number of elements to send to each processor (array of integers)

       [ IN sdispls] integer array (of length group size). Entry j specifies
       the displacement in bytes (relative to sendbuf) from which to take the
       outgoing data destined for process j (array of integers)

       [ IN sendtypes] array of datatypes (of length group size). Entry j
       specifies the type of data to send to process j (array of handles)

       [ OUT recvbuf] address of receive buffer (choice) 

       [ IN recvcounts] integer array equal to the group size specifying the
       number of elements that can be received from each processor (array of
       integers)

       [ IN rdispls] integer array (of length group size). Entry i specifies
       the displacement in bytes (relative to recvbuf) at which to place the
       incoming data from process i (array of integers)

       [ IN recvtypes] array of datatypes (of length group size). Entry i
       specifies the type of data received from process i (array of handles)

7. ______________________________________________________________________

       Page 250, line 8 reads 

       with 15 exponent bits, bias = +10383, 112 fraction bits,

       but should read 

       with 15 exponent bits, bias = +16383, 112 fraction bits, 

8. ______________________________________________________________________

       Page 273, line 24 reads 

         void Send(void* buf, int count, const MPI::Datatype& type,  

       but should read 

         void Send(const void* buf, int count, const MPI::Datatype& type,  

9. ______________________________________________________________________

       Page 332, lines 23-24 read 

       MPI::Datatype MPI::Datatype::Resized(const MPI::Aint lb, const
       MPI::Aint extent) const

       but should read 

       MPI::Datatype MPI::Datatype::Create_resized(const MPI::Aint lb, const
       MPI::Aint extent) const

10. ______________________________________________________________________

       Page 354, line 17 reads 

       void Get_version(int& version, int& subversion); 

       but should read 

       void Get_version(int& version, int& subversion) 

11. ______________________________________________________________________

       Page 354, lines 25-30 read 

       Exception::Exception(int error_code); 
       int Exception::Get_error_code() const; 
       int Exception::Get_error_class() const; 
       const char* Exception::Get_error_string() const; 

       but should read 

       Exception::Exception(int error_code) 
       int Exception::Get_error_code() const 
       int Exception::Get_error_class() const 
       const char* Exception::Get_error_string() const 

12. ______________________________________________________________________

       Page 357, line 24 reads 

       MPI_CART_RANK Cartcomm Get_rank  int rank

       but should read 

       MPI_CART_RANK Cartcomm Get_cart_rank  int rank

13. ______________________________________________________________________

       Page 359, line 27 reads 

       MPI_TOPO_TEST  Comm  Get_topo       int status

       but should read 

       MPI_TOPO_TEST  Comm  Get_topology   int status


14. ______________________________________________________________________

o  MPI_MAX_NAME_STRING 

       Mail discussing 

       Proposed text: 

              Page 60, line 1 reads
              char name[MPI_MAX_NAME_STRING];
              but should read
              char name[MPI_MAX_OBJECT_NAME]; 

15. ______________________________________________________________________

o  Converting handlers for MPI_Errhandler 

       No mail, but MPI_Errhandler_f2c and MPI_Errhandler_c2f are missing from
       the list of functions to convert handlers.

       Proposed text:

              Page 51, after line 43, add
              MPI_Errhandler MPI_Errhandler_f2c(MPI_Fint errhandler)
              MPI_Fint MPI_Errhandler_c2f(MPI_Errhandler errhandler) 

              These were overlooked. 

16. ______________________________________________________________________

o  MPI_LONG_LONG_INT and MPI_LONG_LONG 

       Mail discussing 

       Proposed text: 

              Page 251, Line 18 reads 

                      MPI_LONG_LONG             8

              but should read 

                      MPI_LONG_LONG_INT         8

              In addition, the type MPI_LONG_LONG should be added as an
              optional type; it is a synonym for MPI_LONG_LONG_INT.

17. ______________________________________________________________________

o  MPI_MODE_SEQUENTIAL 

       Mail discussing 

       Proposed text: 

              Page 230, after line 17, change

              If MPI_MODE_SEQUENTIAL mode was specified when the file was
              opened, it is erroneous to call the routines in this section.

              to

              If MPI_MODE_SEQUENTIAL mode was specified when the file was
              opened, it is erroneous to call the routines in this section,
              with the exception of MPI_FILE_GET_BYTE_OFFSET.

18. ______________________________________________________________________
    ( It is agreed that this one need more fleshing out and more discussion
      and a more complete fix.  So your vote does *not* apply to item 18.
      Rolf Rabenseifner's mail about this will be saved for when we tackle
      new basic datatype issues in general.  - Rusty)


o  C++ and Fortran Complex 

       Mail discussing 

       This needs more discussion. The problem is that some of the C++
       datatypes have no easily defined counterparts in C or Fortran. The
       minimum fix is really a clarification that says that there is no
       interlanguage support for the C++ complex types.

       Proposed text: 

              Page 276, after line 4, add

              Advice to users.
	      Most but not all datatypes in each language have corresponding
              datatypes in other languages. For example, there is no C or
              Fortran counterpart to the MPI::BOOL or the the MPI::COMPLEX,
              MPI::DOUBLE_COMPLEX, or MPI:LONG_DOUBLE_COMPLEX.
              End of advice to users.

       Extending the C++ datatypes to C and Fortran needs to include MPI::BOOL
       as well as the complex types, and should define what the equivalent
       types are in C and Fortran. The real issue here is the MPI:F_COMPLEX
       and completing the list of such routines.

19. ______________________________________________________________________

o  Call by reference in C++ example 

       Mail discussing 

       Proposed text: 

              Page 53, line 7, change

              void cpp_lib_call(MPI::Comm& cpp_comm);

              to 

              void cpp_lib_call(MPI::Comm cpp_comm);

20. ______________________________________________________________________

o  Miscellaneous minor C++ problems

       Mail discussing 

       Proposed text: 

              Page 116, line 31, reads 

              void MPI::Win::Get(const void *origin_addr, int origin_count,
              const MPI::Datatype& origin_datatype, int target_rank, MPI::Aint
              target_disp, int target_count, const MPI::Datatype&
              target_datatype) const

              but should read 

              void MPI::Win::Get(void *origin_addr, int origin_count, const
              MPI::Datatype& origin_datatype, int target_rank, MPI::Aint
              target_disp, int target_count, const MPI::Datatype&
              target_datatype) const


       Proposed text: 

              Page 204, line 30 reads

              bool MPI::Win::Get_attr(const MPI::Win&win, int win_keyval,
              void* attribute_val) const

              but should read

              bool MPI::Win::Get_attr(int win_keyval, void* attribute_val) const 


       Proposed text: 

              Page 346, line 16 reads

              // Type: MPI::Errhandler

              but should read 

              // Type: const MPI::Errhandler


       Proposed text: 

              Page 253, lines 22-24 read

              typedef MPI::Datarep_conversion_function(void* userbuf,
              MPI::Datatype& datatype, int count, void* filebuf, MPI::Offset
              position, void* extra_state);

              but should read 

              typedef void MPI::Datarep_conversion_function(void* userbuf,
              MPI::Datatype& datatype, int count, void* filebuf, MPI::Offset
              position, void* extra_state);


______________________________________________________________________