Hprc banner tamu.png

Difference between revisions of "Ada:Compile:MPI"

From TAMU HPRC
Jump to: navigation, search
Line 1: Line 1:
 
== MPI Code ==
 
== MPI Code ==
  
The table below shows the commands to compile mpi programs. These commands are basically wrapper scripts that call the respective intel compilers with additional linker flags\
+
There are currently two MPI stacks installed on ADA; OpenMPI and Intel MPI. The recommended MPI stack for software development is the IntelMPI software stack and most of this section will focus on this MPI stack.
. Any intel compiler flag will also work when using the wrappers below.
+
 
The following table shows the wrapper compiler names used by Intel MPI. These wrappers will invoke the underlying compilers with the appropriate compiler and linker flags for Intel MPI. Any arguments not recognized by the wrappers will be passed to the underlying Intel compilers. See each wrapper's man page for more information.
+
=== Compiling MPI Code ===
 +
 
 +
To compile MPI code a MPI compiler wrapper is used. The wrapper will call the appropriate underlying compiler with additional linker flags specific for MPI programs. The Intel MPI software stack has wrappers for Intel compilers as well as wrappers for gnu compilers. Any argument not recognized by the wrapper will be passed to the underlying compiler. Therefore, any valid compiler flag (Intel or gnu) will also work when using the mpi wrappers
 +
 
 +
The following table shows the most commonly used mpi wrapper compiler names used by Intel MPI.  
  
  
Line 39: Line 43:
 
|mpif90
 
|mpif90
 
|gfortran
 
|gfortran
 +
|Fortran
 
|mpif90 <compiler_flags> prog.f90
 
|mpif90 <compiler_flags> prog.f90
 
|}
 
|}

Revision as of 15:57, 1 December 2014

MPI Code

There are currently two MPI stacks installed on ADA; OpenMPI and Intel MPI. The recommended MPI stack for software development is the IntelMPI software stack and most of this section will focus on this MPI stack.

Compiling MPI Code

To compile MPI code a MPI compiler wrapper is used. The wrapper will call the appropriate underlying compiler with additional linker flags specific for MPI programs. The Intel MPI software stack has wrappers for Intel compilers as well as wrappers for gnu compilers. Any argument not recognized by the wrapper will be passed to the underlying compiler. Therefore, any valid compiler flag (Intel or gnu) will also work when using the mpi wrappers

The following table shows the most commonly used mpi wrapper compiler names used by Intel MPI.


MPI wrapper Compiler Language Example
mpiicc icc C mpiicc <compiler_flags> prog.c
mpicc gcc C mpicc <compiler_flags> prog.c
mpiicpc icpc C++ mpiicpcp <compiler_flags> prog.cpp
mpicxx g++ C++ mpicxx <compiler_flags> prog.cpp
mpiifort ifort Fortran mpiifort <compiler_flags> prog.f90
mpif90 gfortran Fortran mpif90 <compiler_flags> prog.f90

To see complete compiler command when calling the wrapper functions above use the **-show** flag:

 -bash-4.1$ mpiifort -show 
ifort -I/software/easybuild/software/impi/4.1.3.049/intel64/include -I/software/easybuild/software/impi/4.1.3.049/intel64/include 
-L/software/easybuild/software/impi/4.1.3.049/intel64/lib -Xlinker --enable-new-dtags -Xlinker -rpath -Xlinker 
/software/easybuild/software/impi/4.1.3.049/intel64/lib -Xlinker -rpath -Xlinker -/opt/intel/mpi-rt/4.1 -lmpigf -lmpi -lmpigi -ldl -lrt -lpthread`