Building MVAPICH2 for use with UPS products

  • Obtain required RPMS (in addition to those required by check-prerequisites):
    yum -y install libibumad-devel librdmacm-devel libibmad-devel hwloc-devel hwloc-plugins hwloc
  • Set up the compiler:
    setup gcc v6_3_0
  • Make a build area:
    mkdir build-e14 && cd build-e14
  • Read the quick installation instructions and the full installation instructions to see if you should add any device-specific options to the build, e.g. --with-device=ch3:psm.
  • Configure the build (adding device-specific options as necessary):
    CXXFLAGS=-std=c++14 <srcdir>/configure --prefix=/usr/local/mvapich2-2.3a --exec-prefix=/usr/local/mvapich2-2.3a/$(ups flavor)-e14 \
    --includedir=/usr/local/mvapich2-2.3a/$(ups flavor)-e14/include --enable-error-checking=all \
    --enable-error-messages=all --enable-timing=none --enable-mpit-pvars=none --enable-fast=O3,ndebug \
    --enable-fortran=all --enable-romio --enable-threads=runtime --enable-rdma-cm --disable-static \
    --disable-dependency-tracking --disable-wrapper-rpath --enable-time-type=clock_gettime --enable-debuginfo \
    --enable-versioning --disable-libxml2 --enable-g=debug --enable-hybrid
    • The setting of CXXFLAGS is necessary to ensure that C++ code compiled with mpicxx has the expected standards compliance and compatibility, even if the C++ libraries are not wanted.
    • It is insufficient to specify --exec-prefix and share non-platform-dependent files with the same prefix, because .mod files are compiler-dependent, meaning --includedir is necessary.
  • Build:
    make [-jN]
  • As root:
    cd <build-dir>
    make install
  • Repeat for as many compiler / qualifier combinations as required.
  • Finally, unwind the attached product stub tarball into your products directory. Verify that everything is consistent with version numbers, directories and qualifiers as desired, adjusting if desired.
  • Set up and test each qualified version with the attached "Hello, World!" program, as found at