Configuring the Intel Test Suite -------------------------------- I. CONFIGURATION INSTRUCTIONS ------------------------------ There are two steps to the configuration of the Intel Test Suite. 1. apply patches 2. ./configure These steps are covered in detail below. 1. Apply the patches: From the toplevel directory (MPITEST), execute patch -p2 _ - To see if the build failed for some reason .__L - Log of output .__R - Summary of results (pass/fail) Finer-grain control is possible; see the Intel User's Guide (intel-mpitest.ps) for information on using the mpitest and mpiresults scripts. ============================================================================ Comments on the tests. 1. The tests for error detection occasionly check for a particular error class (or worse, class as code) when the MPI standard does not specify a particular error class. Implementations that conform to the MPI specification may disagree with the Intel test suite. 2. Some of the tests, particularly with respect to datatype lower bounds and extents, may reflect MPI 1.0 and not MPI 1.1 or MPI 1.2 (the definition of extent changed subtly in MPI 1.1). 3. The patch file does *not* correct all known problems, particularly for systems with 64-bit pointers. See the patch file provided by Sun (sun-intel-patch.txt). 4. This is *not* an official test suite. The MPI Forum has not approved or even evaluated this test suite. This test suite is primarily intended for implementors of MPI. 5. Some of the Fortran tests do not match the corresponding C tests. In particular, the MPI_xxx_ator and MPI_xxx_rtoa tests often hang in Fortran but not in C. The source code for these tests differs between the C and Fortran versions, suggesting that bugs fixed in the C versions were not propagated to the Fortran versions. ============================================================================ Known errors in the test suite: 1. c/grp_ctxt_comm/functional/MPI_Keyval3 expects a particular error code; this conflicts with MPI 1, MPI 1.1, MPI 1.2 (see MPI 1.2 for specific text on this case). 2. c/nonblocking/functional/async and rings use the symbol 'random' which conflicts with a symbol in stdlib.h . 3. c/topo/error/MPI_Cart_create_err1 expects a particular error class 4. c/topo/error/MPI_Cart_map_err5 expects a particular error class 5. {c,fortran}/grp_ctxt_comm/functional/MPI_Comm_compare_null requires that MPI_COMM_NULL be a valid input to MPI_Comm_compare, in violation of the MPI Standard. There are others not listed here. ============================================================================ Description of the patches (these are all rolled into the one patch file) 1. Fix for tests which aborted abnormally because code tries to access buffers which are out of range or which gave erroneous results due to buffer overflow 2. Fix for tests which aborted abnormally because of IO errors due to invalid 'FORMAT' statement 3. Fix for a test which aborted abnormally because an invalid datatype argument (MPI_TYPE_NULL) was sent to MPI_COMMIT because LENGTH = 0. This will fix this error by setting LENGTH = 1 if LENGTH = 0 4. Fix for a test which aborted abnormally because of an error in the position of indices in an array 5. Fix for tests which did not abnormally abort, but gave erroneous results due to errors or inconsistencies found between the C and Fortran versions of the tests 6. Fix for libmpitestf.F which will correct 3 subroutines: MPITEST_REPORT, MPITEST_CREATE_COMMUNICATOR, and MPITEST_NUM_DATATYPES 7. Fix to write out only the significant part of the error string. While not strictly required, this is convenient when the size of MPI_MAX_ERROR_STRING is large (e.g., 512 for MPICH). 8. Use /bin/sh instead of /bin/ksh in the scripts 9. Replaced MAX_STATUS_ROW with MPI_STATUS_SIZE for 2 Fortran tests 10. Fix for c/collective/functional/MPI_collective_message/node.c to correctly get the tag upperbound. 11. Fix Fortran version of error/MPI_Scatter_err3 to be the same as the C version (path invalid sizes to both the root and non-root nodes) 12. Fix some Fortran tests to initialize LOOP_FAIL to zero.