Actions

MPI

From Montana Tech High Performance Computing

Revision as of 10:58, 18 September 2017 by Bdeng (talk | contribs) (Created page with "BeoMPI (based on MPICH) is the default Message Passing Interface (MPI) on the system. MPICH2[http://www.mcs.anl.gov/research/projects/mpich2/], MVAPICH2[http://mvapich.cse.ohi...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

BeoMPI (based on MPICH) is the default Message Passing Interface (MPI) on the system. MPICH2[1], MVAPICH2[2], and OpenMPI[3] are available and easily selected with the env-modules package that allow users to change their environment variables from predefined files (currently only the gnu compiler is loaded). To see what modules are available:

module avail

and to load a module:

module load mpich2/gnu

MPICH2 does not use the InfiniBand (IB) Network, but MVAPICH2 does. Our preliminary benchmarking tests show the best performance with MVAPICH2.

Once the MPI environment is set, the corresponding mpicc and mpif90 are available. These wrappers use the gnu 4.8.5 compilers distributed with the Centos 7.3 are in /usr/bin.

Note OpenMPI will use IB with the mca flag:

mpirun --mca btl openib,sm,self -np ....

Example

To compile a C program call mpiprog.c using MPICH2:

module load mpich2/gnu
mpicc mpiprog.c -o mpiprog

To run using torque create a script mpijob with:

#!/bin/bash
#PBS -l nodes=2:ppn=32
#PBS -N MPIJob
#PBS -d /home/mtech/username
#PBS -S /bin/bash
#PBS -m e
#PBS -M username@mtech.edu
#PBS -l walltime=01:00:00

module load mpich2/gnu
mpirun -np 64 --hostfile $PBS_NODEFILE mpiprog

Then submit to moab

msub mpijob