Intel® MPI Library Developer Guide for Linux* OS

ID 768728
Date 10/31/2024
Public
Document Table of Contents

Running an MPI Program

Before running an MPI program, place it to a shared location and make sure it is accessible from all cluster nodes. Alternatively, you can have a local copy of your program on all the nodes. In this case, make sure the paths to the program match.

Run the MPI program using the mpirun command. The command line syntax is as follows:

$ mpirun -n <number-of-processes> -ppn <processes-per-node> -f <hostfile> ./myprog

For example:

$ mpirun -n 4 -ppn 2 -f hosts  ./myprog

In the command line above:

  • -n sets the number of MPI processes to launch; if the option is not specified, the process manager pulls the host list from a job scheduler, or uses the number of cores on the machine.
  • -ppn sets the number of processes to launch on each node; if the option is not specified, processes are assigned to the physical cores on the first node; if the number of cores is exceeded, the next node is used.
  • -f specifies the path to the host file listing the cluster nodes; alternatively, you can use the -hosts option to specify a comma-separated list of nodes; if hosts are not specified, the local node is used.
  • myprog is the name of your MPI program.

The mpirun command is a wrapper around the mpiexec.hydra command, which invokes the Hydra process manager. Consequently, you can use all mpiexec.hydra options with the mpirun command.

For the list of all available options, run mpirun with the -help option, or see section mpiexec.hydra in the Intel® MPI Library Developer Reference.

NOTE:
The commands mpirun and mpiexec.hydra are interchangeable. However, you are recommended to use the mpirun command for the following reasons:
  • You can specify all mpiexec.hydra options with the mpirun command.
  • The mpirun command detects if the MPI job is submitted from within a session allocated using a job scheduler like PBS Pro* or LSF*. Thus, you are recommended to use mpirun when an MPI program is running under a batch scheduler or job manager.