Getting Started with Intel® MPI Library for Windows* OS

Intel® MPI Library is a multi-fabric message passing library that implements the Message Passing Interface, version 3.1 (MPI-3.1) specification. Use the library to develop applications that can run on multiple cluster interconnects.

The Intel® MPI Library has the following features:

  • Low overhead, enables analyzing large amounts of data
  • MPI tuning utility for accelerating your applications
  • Interconnect independence and flexible runtime fabric selection

Intel® MPI Library is available as a standalone product and as part of the Intel® Parallel Studio XE Cluster Edition.

Product Contents

The product comprises the following main components:

  • Runtime Environment (RTO) has the tools you need to run programs, including the Hydra process manager, supporting utilities, dynamic (.dll) libraries, and documentation.

  • Software Development Kit (SDK) includes all of the Runtime Environment components plus compilation tools, including compiler drivers such as mpiicc, include files and modules, debug libraries, program database (.pdb) files, and test codes.

Besides the SDK and RTO components, Intel® MPI Library also includes Intel® MPI Benchmarks, which enable you to measure MPI operations on various cluster architectures and MPI implementations. You can see more details in Intel® MPI Benchmarks User's Guide.

Prerequisites

Before you start using Intel® MPI Library make sure to complete the following steps:

  1. Set the environment variables: from the installation directory <installdir>\mpi\<package number>\intel64\bin, run the mpivars.bat batch file:
    > <installdir>\mpi\<package number>\intel64\bin\mpivars.bat
    where <installdir> is the Intel MPI Library installation directory (by default, C:\Program Files (x86)\IntelSWTools).
  2. Install and run the Hydra services on the compute nodes. In the command prompt, enter:
    > hydra_service -install
    > hydra_service -start
  3. Register your credentials, enter:
    > mpiexec -register

For detailed system requirements, see the System Requirements section in Release Notes.

Building and Running MPI Programs

Compiling an MPI program

If you have the developer license and have the SDK component installed, you can build your MPI programs with Intel® MPI Library. Compile the program using the appropriate compiler driver. For example, for a test program:

> mpiicc -o test.exe <installdir>\test\test.c

Running an MPI program

Execute the program using the mpiexec command. For example, for the test program:

> mpiexec -n <# of processes> test.exe 

To specify the hosts to run the program on, use the -hosts option:

> mpiexec -n <# of processes> -ppn <# of processes per node> -hosts <host1>,<host2>,...,<hostN> test.exe

Key Features

Intel® MPI Library has the following major features:

  • MPI-1, MPI-2.2 and MPI-3.1 specification conformance
  • Support for any combination of the following interconnection fabrics:
    • Shared memory
    • RDMA-capable network fabrics through DAPL*, such as InfiniBand* and Myrinet*
    • Sockets, for example, TCP/IP over Ethernet*, Gigabit Ethernet*, and other interconnects
  • (SDK only) Support for Intel® 64 architecture clusters using:
    • Intel® C++ Compiler version 14.0 and higher
    • Intel® Fortran Compiler version 14.0 and higher
    • Microsoft* Visual C++* Compilers
  • (SDK only) C, C++, Fortran* 77 and Fortran 90 language bindings
  • (SDK only) Dynamic linking

Troubleshooting

If you encounter problems when using Intel® MPI Library, go through the following general procedures to troubleshoot them:

  • Check system requirements and known issues in Release Notes.
  • Check hosts accessibility. Try to run a simple non-MPI application (for example, hostname utility) on the problem hosts with mpiexec utility. This check helps you reveal the environmental or connectivity problem (for example, unreachable hosts).
  • Run MPI application with debug information enabled. To enable the debug information, set the environment variable I_MPI_DEBUG=6. You can also set a different debug level to get more detailed information. This action helps you find out the problem component.

See more details in the Troubleshooting section of the Developer Guide.

Online Resources

For more complete information about compiler optimizations, see our Optimization Notice.