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