3.2.10. Minor Corrections


Up: MPI-1.0 and MPI-1.1 Clarifications Next: Miscellany Previous: Clarification of MPI_PROBE and MPI_IPROBE

The following corrections to MPI-1.1 are (all page and line numbers are for the June 12, 1995 version without changebars):

  • Page 11, line 36 reads
    MPI_ADDRESS
    but should read
    MPI_ADDRESS_TYPE

  • Page 19, lines 1--2 reads
    for (64 bit) C integers declared to be of type longlong int
    but should read
    for C integers declared to be of type long long

  • Page 40, line 48 should have the following text added:


    [] Advice to users.

    To prevent problems with the argument copying and register optimization done by Fortran compilers, please note the hints in subsections ``Problems Due to Data Copying and Sequence Association,'' and ``A Problem with Register Optimization'' in Section A Problem with Register Optimization of the MPI-2 Standard, . ( End of advice to users.)

  • Page 41, lines 16--18 reads
    A empty status is a status which is set to return tag = MPI_ANY_TAG, source = MPI_ANY_SOURCE, and is also internally configured so that calls to MPI_GET_COUNT and MPI_GET_ELEMENTS return count = 0.
    but should read
    A empty status is a status which is set to return tag = MPI_ANY_TAG, source = MPI_ANY_SOURCE, error = MPI_SUCCESS, and is also internally configured so that calls to MPI_GET_COUNT and MPI_GET_ELEMENTS return count = 0 and MPI_TEST_CANCELLED returns false.

  • Page 52, lines 46--48 read

    100            CALL MPI_RECV(i, 1, MPI_INTEGER, 0, 0, status, ierr) 
              ELSE 
    200            CALL MPI_RECV(x, 1, MPI_REAL, 1, 0, status, ierr) 
    
    but should read

    100            CALL MPI_RECV(i, 1, MPI_INTEGER, 0, 0, comm, status, ierr) 
              ELSE 
    200            CALL MPI_RECV(x, 1, MPI_REAL, 1, 0, comm, status, ierr) 
    
  • Page 53, lines 18--23 read

    100                CALL MPI_RECV(i, 1, MPI_INTEGER, MPI_ANY_SOURCE, 
                                     0, status, ierr) 
                  ELSE 
    200                CALL MPI_RECV(x, 1, MPI_REAL, MPI_ANY_SOURCE, 
                                     0, status, ierr) 
    
    but should read

    100                CALL MPI_RECV(i, 1, MPI_INTEGER, MPI_ANY_SOURCE, 
                                     0, comm, status, ierr) 
                  ELSE 
    200                CALL MPI_RECV(x, 1, MPI_REAL, MPI_ANY_SOURCE, 
                                     0, comm, status, ierr) 
    

  • Page 59, line 3 should have the following text added:


    [] Advice to users.

    To prevent problems with the argument copying and register optimization done by Fortran compilers, please note the hints in subsections ``Problems Due to Data Copying and Sequence Association,'' and ``A Problem with Register Optimization'' in Section A Problem with Register Optimization of the MPI-2 Standard, . ( End of advice to users.)

  • Page 59, lines 42--45 read
    int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
    int dest, int sendtag, void *recvbuf, int recvcount,
    MPI_Datatype recvtype, int source, MPI_Datatype recvtag,
    MPI_Comm comm, MPI_Status *status)
    but should read
    int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
    int dest, int sendtag, void *recvbuf, int recvcount,
    MPI_Datatype recvtype, int source, int recvtag,
    MPI_Comm comm, MPI_Status *status)

  • Page 60, line 3 reads
    SOURCE, RECV TAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR
    but should read
    SOURCE, RECVTAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR

  • Page 70, line 16 should have the following text added:


    [] Advice to users.

    To prevent problems with the argument copying and register optimization done by Fortran compilers, please note the hints in subsections ``Problems Due to Data Copying and Sequence Association,'' and ``A Problem with Register Optimization'' in Section A Problem with Register Optimization of the MPI-2 Standard, . ( End of advice to users.)

  • Page 71, line 10 reads
    and do not affect the the content of a message
    but should read
    and do not affect the content of a message

  • Page 74, lines 39--45 read
    A datatype may specify overlapping entries. The use of such a datatype in a receive operation is erroneous. (This is erroneous even if the actual message received is short enough not to write any entry more than once.)

    A datatype may specify overlapping entries. If such a datatype is used in a receive operation, that is, if some part of the receive buffer is written more than once by the receive operation, then the call is erroneous.

    The first part was an MPI-1.1 addition. The second part overlaps with it. The old text will be removed so it now reads
    A datatype may specify overlapping entries. The use of such a datatype in a receive operation is erroneous. (This is erroneous even if the actual message received is short enough not to write any entry more than once.)

  • Page 75, line 24 should have the following text added:
    The datatype argument should match the argument provided by the receive call that set the status variable.

  • Page 85, line 36 reads
    ``specified by outbuf and outcount''
    but should read
    ``specified by outbuf and outsize.''

  • Page 90, line 3 reads
    MPI_Pack_size(count, MPI_CHAR, &k2);
    but should read
    MPI_Pack_size(count, MPI_CHAR, comm, &k2);

  • Page 90, line 10 reads
    MPI_Pack(chr, count, MPI_CHAR, &lbuf, k, &position, comm);
    but should read
    MPI_Pack(chr, count, MPI_CHAR, lbuf, k, &position, comm);

  • Page 97, line 41 reads

    but should read

  • Page 109, lines 26--27 and page 110, lines 28--29 reads
    The jth block of data sent from each process is received by every process and placed in the jth block of the buffer recvbuf.
    but should read
    The block of data sent from the jth process is received by every process and placed in the jth block of the buffer recvbuf.

  • Page 117, lines 22--23 reads
    MPI provides seven such predefined datatypes.
    but should read
    MPI provides nine such predefined datatypes.

  • Page 121, line 1 reads

    FUNCTION USER_FUNCTION( INVEC(*), INOUTVEC(*), LEN, TYPE) 
    
    but should read

    SUBROUTINE USER_FUNCTION(INVEC, INOUTVEC, LEN, TYPE) 
    

  • Page 122, lines 35--36 read
    MPI_OP_FREE( op)
    [ IN op] operation (handle)
    but should read
    MPI_OP_FREE( op)
    [ INOUT op] operation (handle)

  • Page 125, line 1 reads
    CALL MPI_ALLREDUCE(sum, c, n, MPI_REAL, MPI_SUM, 0, comm, ierr)
    but should read
    CALL MPI_ALLREDUCE(sum, c, n, MPI_REAL, MPI_SUM, comm, ierr)

  • Page 141, lines 27--27 read

    [ IN ranges] an array of integer triplets, of the form (first rank, last rank, stride) indicating ranks in group of processes to be included in newgroup
    but should read

    [ IN ranges] a one-dimensional array of integer triplets, of the form (first rank, last rank, stride) indicating ranks in group of processes to be included in newgroup

  • Page 142, line 10 reads

    [ IN n] number of elements in array ranks (integer)
    but should read

    [ IN n] number of triplets in array ranges (integer)

  • Page 194, lines 30--31 reads
    to the greatest possible, extent,
    but should read
    to the greatest possible extent,

  • Page 194, line 48 reads
    MPI_ERRHANDLER_CREATE(FUNCTION, HANDLER, IERROR)
    but should read
    MPI_ERRHANDLER_CREATE(FUNCTION, ERRHANDLER, IERROR)

  • Page 195, line 15 should have the following text added:
    In the Fortran language, the user routine should be of the form:


    SUBROUTINE HANDLER_FUNCTION(COMM, ERROR_CODE, .....) 
    INTEGER COMM, ERROR_CODE 
    

    [] Advice to users.

    Users are discouraged from using a Fortran HANDLER_FUNCTION since the routine expects a variable number of arguments. Some Fortran systems may allow this but some may fail to give the correct result or compile/link this code. Thus, it will not, in general, be possible to create portable code with a Fortran HANDLER_FUNCTION. ( End of advice to users.)

  • Page 196, lines 1--2 reads
    MPI_ERRHANDLER_FREE( errhandler )
    [ IN errhandler] MPI error handler (handle)
    but should read
    MPI_ERRHANDLER_FREE( errhandler )
    [ INOUT errhandler] MPI error handler (handle)

  • Page 197, line 25 should have added:

    An MPI error class is a valid MPI error code. Specifically, the values defined for MPI error classes are valid MPI error codes.

  • Page 201, line 28 reads
    ...of different language bindings is is done ....
    but should read
    ...of different language bindings is done ....

  • Page 203, line 1 reads
    MPI_PCONTROL(level)
    but should read
    MPI_PCONTROL(LEVEL)

  • Page 210, line 44 reads
    MPI_PENDING
    but should read
    MPI_ERR_PENDING

  • Page 211, line 44 reads
    MPI_DOUBLE_COMPLEX
    but should be moved to Page 212, line 22 since it is an optional Fortran datatype.

  • Page 212, add new lines of text at line 22 and line 25 to read:
    etc.
    Thus, the text will now read:

    /* optional datatypes (Fortran) */ 
    MPI_INTEGER1 
    MPI_INTEGER2 
    MPI_INTEGER4 
    MPI_REAL2 
    MPI_REAL4 
    MPI_REAL8 
    etc. 
    

    /* optional datatypes (C) */ MPI_LONG_LONG_INT etc.

  • Page 213, line 28. The following text should be added:

    /* Predefined functions in C and Fortran */ 
    MPI_NULL_COPY_FN 
    MPI_NULL_DELETE_FN 
    MPI_DUP_FN 
    

  • Page 213, line 41. Add the line
    MPI_Errhandler 
    

  • Page 214, line 9 reads

    FUNCTION USER_FUNCTION( INVEC(*), INOUTVEC(*), LEN, TYPE) 
    
    but should read

    SUBROUTINE USER_FUNCTION( INVEC, INOUTVEC, LEN, TYPE) 
    

  • Page 214, lines 14 and 15 read

    PROCEDURE COPY_FUNCTION(OLDCOMM, KEYVAL, EXTRA_STATE, 
                   ATTRIBUTE_VAL_IN, ATTRIBUTE_VAL_OUT, FLAG, IERR) 
    
    but should read

    SUBROUTINE COPY_FUNCTION(OLDCOMM, KEYVAL, EXTRA_STATE, 
                   ATTRIBUTE_VAL_IN, ATTRIBUTE_VAL_OUT, FLAG, IERR) 
    

  • Page 214, line 21 reads

    PROCEDURE DELETE_FUNCTION(COMM, KEYVAL, ATTRIBUTE_VAL, EXTRA_STATE, IERR) 
    
    but should read

    SUBROUTINE DELETE_FUNCTION(COMM, KEYVAL, ATTRIBUTE_VAL, EXTRA_STATE, IERR) 
    

  • Page 214, line 23 should have the following text added:
    The handler-function for error handlers should be declared like this:


    SUBROUTINE HANDLER_FUNCTION(COMM, ERROR_CODE, .....) 
    INTEGER COMM, ERROR_CODE 
    

  • Page 216, lines 4--7 read
    int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
    int dest, int sendtag, void *recvbuf, int recvcount,
    MPI_Datatype recvtype, int source, MPI_Datatype recvtag,
    MPI_Comm comm, MPI_Status *status)
    but should read
    int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
    int dest, int sendtag, void *recvbuf, int recvcount,
    MPI_Datatype recvtype, int source, int recvtag,
    MPI_Comm comm, MPI_Status *status)

  • Page 220, lines 19--20 reads
    int double MPI_Wtime(void)
    int double MPI_Wtick(void)
    but should read
    double MPI_Wtime(void)
    double MPI_Wtick(void)

  • Page 222, line 34 reads
    INTEGER REQUEST, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR
    but should read
    INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR

  • Page 222, line 38 reads
    INTEGER REQUEST, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR
    but should read
    INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR

  • Page 227, lines 19--20 reads
    MPI_INTERCOMM_MERGE(INTERCOMM, HIGH, INTRACOMM, IERROR)
    INTEGER INTERCOMM, INTRACOMM, IERROR
    but should read
    MPI_INTERCOMM_MERGE(INTERCOMM, HIGH, NEWINTRACOMM, IERROR)
    INTEGER INTERCOMM, NEWINTRACOMM, IERROR

  • Page 228, line 46 reads
    MPI_ERRHANDLER_CREATE(FUNCTION, HANDLER, IERROR)
    but should read
    MPI_ERRHANDLER_CREATE(FUNCTION, ERRHANDLER, IERROR)

  • Page 229, line 33 reads
    MPI_PCONTROL(level)
    but should read
    MPI_PCONTROL(LEVEL)




Up: MPI-1.0 and MPI-1.1 Clarifications Next: Miscellany Previous: Clarification of MPI_PROBE and MPI_IPROBE


Return to MPI-2 Standard Index

MPI-2.0 of July 18, 1997
HTML Generated on August 11, 1997