Message Passing Toolkit (MPT) is a software package that supports interprocess data exchange for applications that use concurrent, cooperating processes on a single host or on multiple hosts. Data exchange is done through message passing, which is the use of library calls to request data delivery from one process to another or between groups of processes.
The MPT package contains the following components and the appropriate accompanying documentation:
Message Passing Interface (MPI). MPI is a standard specification for a message passing interface, allowing portable message passing programs in Fortran and C languages. MPI is the dominant programming model on large scale HPC systems and clusters today. MPT supports version 2.2 of the MPI standard specification.
The SHMEM™ programming model. SHMEM is a partitioned global address space (PGAS) programming model that presents distributed processes with symmetric arrays that are accessible via PUT and GET operations from other processes. The SGI SHMEM programming model is the basis for the OpenSHMEM™ programming model specification which is being developed by the Open Source Software Solutions multi-vendor working group.
SGI MPT is highly optimized for all SGI hardware platforms. The SGI Performance Suite 1.x Start Here lists all current SGI software and hardware manuals and can be found on the SGI Technical Publications Library at: http://docs.sgi.com.
This chapter provides an overview of the MPI software that is included in the toolkit. It includes descriptions of the MPI standard compliance, the basic components of MPI, and the basic features of MPI. Subsequent chapters address the following topics:
MPI was created by the Message Passing Interface Forum (MPIF). MPIF is not sanctioned or supported by any official standards organization. Its goal was to develop a widely used standard for writing message passing programs.
SGI supports implementations of MPI that are released as part of the Message Passing Toolkit. The MPI Standard is documented online at the following address:http://www.mcs.anl.gov/mpi
The MPI library is provided as a dynamic shared object (DSO) (a file with a name that ends in .so). The basic components that are necessary for using MPI are the libmpi.so library, the include files, and the mpirun command.
Profiling support is included in the libmpi.so library. Profiling support replaces all MPI_Xxx prototypes and function names with PMPI_Xxx entry points.
The SGI MPI implementation offers a number of significant features that make it the preferred implementation to use on SGI hardware:
Data transfer optimizations for NUMAlink where available, including single-copy data transfer
Multi-rail InfiniBand support to take full advantage of the multiple InfiniBand fabrics available on SGI® ICE™ systems
Use of hardware fetch operations (fetchops), where available, for fast synchronization and lower latency for short messages
Optimized MPI-2 one-sided commands
Interoperability with the SHMEM (LIBSMA) programming model
High performance communication support for partitioned systems via XPMEM