Chapter 1. Introduction
Prev |  | Next

## Chapter 1. Introduction

Message Passing Toolkit (MPT) for Linux and IRIX 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.

- Logically shared, distributed memory (SHMEM) data-passing routines. SHMEM is a distributed, shared memory (SHMEM) library that consists of a set of SGI-proprietary message-passing library routines. These routines help distributed applications efficiently share data between cooperating processes. The model is based on multiple processes having separate address spaces, with the SHMEM-provided ability for one process to access data in another process' address space without interrupting the other process. SHMEM is not a standard like MPI, so SHMEM applications developed on other vendors' hardware might or might not work with the SGI SHMEM implementation.

This chapter provides an overview of the MPI software that is included in the toolkit. This overview includes a description of the MPI-2 Standard features that are provided, a description of the basic components of MPI, and a description of the basic features of MPI. Subsequent chapters address the following topics:

- Chapter 2, “Getting Started”

- Chapter 3, “Programming with SGI MPI”

- Chapter 4, “Debugging MPI Applications”

- Chapter 5, “Profiling MPI Applications”

- Chapter 6, “Run-time Tuning”

- Chapter 7, “Troubleshooting and Frequently Asked Questions”

## MPI Overview

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 on Linux systems and IRIX systems. The MPI Standard is documented online at the following address:

    http://www.mcs.anl.gov/mpi

### MPI-2 Standard Compliance

The SGI MPI implementation is compliant with the 1.0, 1.1, and 1.2 versions of the MPI Standard specification. In addition, the following MPI-2 features (with section numbers from the MPI-2 Standard specification) are provided:

Feature | Section
MPI-2 parallel I/O | 9
A subset of MPI-2 one-sided communication routines (`put`/`get` model) | 6
MPI `spawn` functionality (IRIX only) | 5.3
`MPI_Alloc_mem`/`MPI_Free_mem` | 4.11
Transfer of handles | 4.12.4
MPI-2 replacements for deprecated MPI-1 functions | 4.14.1
Support for thread safety (IRIX only) | 8.7
Extended language bindings for C++ (IRIX/Linux) and partial Fortran 90 support (IRIX only) | 10.1, 10.2.4
Generalized requests | 4.5.2
New attribute caching functions | 8.8

### MPI Components

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(1)` command.

Profiling support is included in the `libmpi.so` libraries. Profiling support replaces all `MPI_Xxx` prototypes and function names with `PMPI_Xxx` entry points.

### MPI Features

The SGI MPI implementation offers a number of significant features that make it the preferred implementation to use on SGI hardware:

- Memory placement within IRIX ccNUMA hosts is handled automatically by the library

- Data transfer optimizations for NUMAlink, including single-copy data transfer

- 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 SHMEM (LIBSMA)

- High performance communication support for partitioned systems via XPMEM

- Thread safety on IRIX systems

Prev | Table of Contents | Next
About This Manual |  | Chapter 2. Getting Started