Parallel Programming

We support two standards: OpenMP and MPI


These classes are intended for users with some experience programming scientific applications who are current or potential users of the WSU Origin 2000.

Here are links to the material that we used in the August, 2001 OpenMP/APO class:
1) Cover Page
2) OpenMP Slide Outline
3) OpenMP Class from OSC (see OSC link at bottom)
4) OpenMP Problem Notes and Solutions
5) APO Slide Outline
6) APO Presentation: Powerpoint or HTML
7) APO Solutions
8) Glossary and References
9) OpenMP Fortran Summary
10) OpenMP C/C++ Summary

See the Documentation page for manuals and man pages.

The following classes were used at KU:

Parallel Code Compilation and Executions

From Fortran 90, HPF and Multiprocessing (Boston University):

There are different ways to compile source codes, depending on your objectives:
1.Use SGI's parallel mathematical libraries :
lego% f90 -o example -mp example.f90 -lscs_mp

2.Use loop-level parallel directives :
lego% f90 -o example -mp example.f90

Here, you must include parallel directives in example.f90 in order for parallel works to
take effect. -mp alerts the compiler that the source file contains directives. In addition,
-mp also causes mp libraries to be linked.

3.Use apo to automatically parallelize and compile code
lego% f90 -o example -apo keep example.f90

To run job interactively at the monitor with 4 processors: setenv OMP_NUM_THREADS 4 example

See also:

Using FORTRAN on the SGI Origin 2000 (KU)

Designing and Building Parallel Programs (An Online Publishing Project of Addison-Wesley Inc., Argonne National Laboratory, and the NSF Center for Research on Parallel Computation.)

Parallel Programming Workshop (Maui High Performance Computing Center)

Introduction to Parallel Processing on SGI Shared Memory Computers (Boston University)

Tutorial: OpenMP: An API for Writing Portable SMP Application Software (

Parallel Programming with OpenMP [for Origin 2000] (Ohio Supercomputer Center)

OpenMP info at SGI


Though not a standard from, here is an implementation installed on hydra.


MPI: Message Passing Interface

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:

SGI Message Passing Toolkit: Overview

SGI Message Passing Toolkit: MPI Programmers Manual

More about MPI

Further information on MPI is available from a variety of sources. The MPI Standard is available in postscript, compressed postscript, and html.

The MPI Forum website has links to all of the MPI documents, errata, and archives of the meetings of the Forum.

There are several tutorials devoted to MPI at

  • Argonne National Lab includes Guide to MPI Tutorials and Tutorial on MPI: The Message-Passing Interface
  • Indiana University LAM Team includes Tutorials
  • University of South Florida MPI Tutorials/Links
  • Lawrence Livermore National Lab Message Passing Interface (MPI)
  • Maui High Performance Computing Center Message Passing Interface (MPI)
  • If you have questions about MPI that aren't answered in the FAQ, probably the quickest way to get an answer is to post your question to the MPI newsgroup.

    There are also several other books devoted entirely or partially to MPI:

  • Parallel Programming with MPI by Peter Pacheco.
  • Using MPI by William Gropp, Ewing Lusk and Anthony Skjellum.
  • MPI: The Complete Reference by Marc Snir, Steve Otto, Steven Huss-Lederman, David Walker, and Jack Dongarra. The first edition is also available in html.
  • Designing and Building Parallel Programs by Ian Foster.