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

first batch of corrections



Dear group,

     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.

Regards,
Rusty

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


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. ______________________________________________________________________

       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.

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

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. ______________________________________________________________________

       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. ______________________________________________________________________

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);


______________________________________________________________________