Chapter 1. Overview
Prev |  | Next

## Chapter 1. Overview

The Message Passing Toolkit (MPT) for IRIX and Linux 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 1.5 package contains the following components and the appropriate accompanying documentation:

- Parallel Virtual Machine (PVM) (IRIX only)

- Message Passing Interface (MPI)

- Logically shared, distributed memory (SHMEM) data-passing routines (IRIX only)

The Message Passing Interface (MPI) is a standard specification for a message passing interface, allowing portable message passing programs in Fortran and C languages.

This chapter provides an overview of the MPI software that is included in the toolkit, a description of the basic MPI components, and a list of general steps for developing an MPI program. Subsequent chapters address the following topics:

- Building MPI applications

- Using `mpirun` to execute applications

- Thread-safe MPI

- Multiboard feature for GSN and HiPPI 800 networks

- Setting environment variables

- MPI troubleshooting and application tuning

## MPI Overview

MPI is a standard specification for a message passing interface, allowing portable message passing programs in Fortran and C languages. 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 available from the IRIS InSight library (for customers who have access to that tool), and is documented online at the following address:

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

The SGI MPT MPI implementation is compliant with the 1.0, 1.1, and 1.2 versions of the MPI standard specification. In addition, the following features from the MPI-2 standard specification are provided:

- Passing NULL arguments to `MPI_Init`.

- MPI I/O. MPT contains the ROMIO implementation of MPI I/O, in which a rich API for performing I/O in a message passing application is defined. Most of the standard-defined functionality is provided. For more information, see the `mpi_io(3)` man page.

- MPI one-sided communication (IRIX only). The `MPI_Win_create`, `MPI_Put`, `MPI_Get`, `MPI_Win_fence`, and `MPI_Win_free` routines are provided for single-host MPI jobs. For more information, see the `mpi_win(3)` man page.

- C++ bindings.

- Fortran 90 support for the `USE MPI` statement (IRIX only). Using the `USE MPI` statement instead of `INCLUDE 'mpif.h'` provides Fortran 90 programmers with parameter definitions and compile-time MPI subroutine call interface checking.

- MPI bindings for multi-threading inside an MPI process.

## 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 Program Development

To develop a program that uses MPI, you must perform the following steps:

Procedure 1-1. Steps for MPI program development

1. Add MPI function calls to your application for MPI initiation, communications, and synchronization. For descriptions of these functions, see the online man pages or Using MPI: Portable Parallel Programming with the Message-Passing Interface or the MPI standard specification.

2. Build programs for the systems that you will use, as described in Chapter 2, “Building MPI Applications”.

3. Execute your program by using the `mpirun(1)` command (see Chapter 3, “Using mpirun to Execute Applications”).

   | Note: For information on how to execute MPI programs across more than one host or how to execute MPI programs that consist of more than one executable file, see Chapter 2, “Building MPI Applications”.

Prev | Table of Contents | Next
About This Manual |  | Chapter 2. Building MPI Applications