This release of MPI-2 derives from MPICH-2 and implements the MPI-2 standard, except for spawn support. It also implements the MPI 1.2 standard, as documented by the MPI Forum in the spring 1997 release of MPI: A Message Passing Interface Standard.
The Message-Passing Interface (MPI) supports parallel programming across a network of computer systems through a technique known as message passing. The goal of the MPI Forum, simply stated, is to develop a widely used standard for writing message-passing programs. MPI establishes a practical, portable, efficient, and flexible standard for message passing that makes use of the most attractive features of a number of existing message passing systems, rather than selecting one of them and adopting it as the standard.
MPI is a specification (like C or Fortran) that has a number of implementations.
Other sources of MPI information include the man pages for MPI library functions and the following URLs:
http://www-unix.mcs.anl.gov/mpi/index.html http://www-unix.mcs.anl.gov/mpi/mpich2 http://www.mpi-forum.org/ |
To invoke the PGI compiler for all applications, including MPI applications, use either the cc, CC, ftn, or f77 command. If you invoke a compiler directly by using a command such as mpicc, the resulting executable will not run on a Cray XT3 system.
There is a name conflict between stdio.h and the MPI C++ binding in relation to the names SEEK_SET, SEEK_CUR, and SEEK_END. If your application does not reference these names, you can work around this conflict by using the compiler flag -DMPICH_IGNORE_CXX_SEEK. If your application does require these names, as defined by MPI, undefine the names (#undef SEEK_SET, for example) prior to including mpi.h. Alternatively, if the application requires the stdio.h naming, your application should include mpi.h before stdio.h or the iostream routine.
The following MPI-2 features are not supported: thread safety and dynamic process management.
The following process-creation commands are not supported and if used, will generate aborts at runtime:
MPI_CLOSE_PORT and MPI_OPEN_PORT
MPI_COMM_ACCEPT
MPI_COMM_CONNECT and MPI_COMM_DISCONNECT
MPI_COMM_SPAWN and MPI_COMM_SPAWN_MULTIPLE
MPI_COMM_GET_ATTR - with attribute MPI_UNIVERSE_SIZE
MPI_COMM_GET_PARENT
MPI_LOOKUP_NAME
MPI_PUBLISH_NAME and MPI_UNPUBLISH_NAME
The MPI_LONG_DOUBLE data type is not supported.
Environment variables have predefined values. You can change some variables to achieve particular performance objectives; others are required values for standard-compliant programs.
Note: The use of some of the following environment variables assumes knowledge of Portals. For more information about Portals, see the Cray XT Series Programming Environment User's Guide.
Flow-controlled versions of the MPICH_ALLTOALLV and MPICH_ALLTOALLW MPI operations are enabled. Currently, the algorithm is only implemented for intra-communicators and by default the algorithm is enabled when the size of the communicator is greater than 120.
The values chosen are conservative settings that should not exhaust the number of Seastar CAM entries that control remote DMA. Software retry is needed when there is exhaustion of CAM entries.
Note: This algorithm also applies to medium size (greater than 256 but less than 32768 bytes) MPI_ALLTOALL MPI operations.
| MPICH_ALLTOALLVW_FCSIZE | Sets the size of the communicator. | |
| MPICH_ALLTOALLVW_SENDWIN | Set the send window size. When flow control is enabled, send and receive windows are established that can allow up to 80 Isend operations. | |
| MPICH_ALLTOALLVW_RECVWIN | Set the receive window size. When flow control is enabled, send and receive windows are established that can allow up to 100 Irecv operations. |