From 982bfc4775ab620e04d663ba67ae4c5aab3f6e17 Mon Sep 17 00:00:00 2001
From: Marty Kandes <mkandes@sdsc.edu>
Date: Sun, 1 Aug 2021 15:47:19 +0000
Subject: [PATCH] Add CentOS 7.7 + CUDA 11.0 + OpenMPI 3.1.6/4.0.5 def files

As mentioned in a recent commit, an Expanse user required a much older
GCC compiler for their code, but also still wanted to run the code
across multiple nodes with full Infiniband support. This code also
required a CUDA-enabled version of OpenMPI. As such, these additional
definition files were created to support their CUDA requirement.
Infiniband support was tested with the OMB containers also included here.

Again, please note that CentOS 7.7 has been deprecated and should only
be used in limited circumstances when necessary. In this case, Mellanox
does not provide an OFED version matching the one we have on Expanse for
the latest versions of CentOS 7.
---
 README.md                                     |   4 +-
 .../Singularity.centos-7.7.1908-cuda-11.0     | 169 ++++++++++++++++++
 ...ty.centos-7.7.1908-cuda-11.0-openmpi-3.1.6 | 137 ++++++++++++++
 ...ty.centos-7.7.1908-cuda-11.0-openmpi-4.0.5 | 137 ++++++++++++++
 .../Singularity.centos-7.7.1908-openmpi-4.0.5 | 137 ++++++++++++++
 ....7-centos-7.7.1908-cuda-11.0-openmpi-3.1.6 | 122 +++++++++++++
 ...rity.omb-5.7-centos-7.7.1908-openmpi-3.1.6 |   4 +-
 ...rity.omb-5.7-centos-7.7.1908-openmpi-4.0.5 | 112 ++++++++++++
 8 files changed, 818 insertions(+), 4 deletions(-)
 create mode 100644 definition-files/centos/Singularity.centos-7.7.1908-cuda-11.0
 create mode 100644 definition-files/centos/Singularity.centos-7.7.1908-cuda-11.0-openmpi-3.1.6
 create mode 100644 definition-files/centos/Singularity.centos-7.7.1908-cuda-11.0-openmpi-4.0.5
 create mode 100644 definition-files/centos/Singularity.centos-7.7.1908-openmpi-4.0.5
 create mode 100644 definition-files/omb/Singularity.omb-5.7-centos-7.7.1908-cuda-11.0-openmpi-3.1.6
 create mode 100644 definition-files/omb/Singularity.omb-5.7-centos-7.7.1908-openmpi-4.0.5

diff --git a/README.md b/README.md
index 48b8e34..a115cb0 100644
--- a/README.md
+++ b/README.md
@@ -57,8 +57,8 @@ University of California, San Diego
 
 ## Version
 
-1.7.6
+1.7.9
 
 ## Last Updated
 
-Friday, July 23rd, 2021
+Sunday, August 1st, 2021
diff --git a/definition-files/centos/Singularity.centos-7.7.1908-cuda-11.0 b/definition-files/centos/Singularity.centos-7.7.1908-cuda-11.0
new file mode 100644
index 0000000..f293be6
--- /dev/null
+++ b/definition-files/centos/Singularity.centos-7.7.1908-cuda-11.0
@@ -0,0 +1,169 @@
+Bootstrap: localimage
+From: centos-7.7.1908.sif
+
+%labels
+
+    APPLICATION_NAME centos + cuda
+    APPLICATION_VERSION 7.7.1908 + 11.0
+    APPLICATION_URL https://docs.nvidia.com/cuda
+
+    AUTHOR_NAME Marty Kandes
+    AUTHOR_EMAIL mkandes@sdsc.edu
+
+    LAST_UPDATED 20210727
+
+%setup
+
+%environment
+
+    # Location of NVIDIA/CUDA repositories
+    export CUDA_ROOT_URL='http://developer.download.nvidia.com/compute'
+    export CUDA_DISTRO='rhel7'
+    export CUDA_ARCH='x86_64'
+    export CUDA_REPO_URL="${CUDA_ROOT_URL}/cuda/repos/${CUDA_DISTRO}/${CUDA_ARCH}"
+    export CUDA_GPG_PUBKEY='7fa2af80.pub'
+
+    # Set NVIDIA driver and CUDA versions
+    export CUDA_DRIVER_MAJOR='460'
+    export CUDA_DRIVER_MINOR='32'
+    export CUDA_DRIVER_REVISION='03'
+    export CUDA_DRIVER_VERSION="${CUDA_DRIVER_MAJOR}.${CUDA_DRIVER_MINOR}.${CUDA_DRIVER_REVISION}"
+    export CUDA_MAJOR='11'
+    export CUDA_MINOR='0'
+    export CUDA_REVISION='2'
+    export CUDA_VERSION="${CUDA_MAJOR}.${CUDA_MINOR}"
+    export CUDNN_MAJOR='8'
+    export CUDNN_MINOR='1'
+    export CUDNN_REVISION='0.77'
+    export CUDNN_VERSION="${CUDNN_MAJOR}.${CUDNN_MINOR}.${CUDNN_REVISION}"
+    export NCCL_MAJOR='2'
+    export NCCL_MINOR='8'
+    export NCCL_REVISION='4'
+    export NCCL_VERSION="${NCCL_MAJOR}.${NCCL_MINOR}.${NCCL_REVISION}"
+
+    # Set paths to CUDA binaries and libraries
+    export CUDA_HOME="/usr/local/cuda-${CUDA_VERSION}"
+    export PATH="${CUDA_HOME}/bin${PATH:+:${PATH}}"
+    export LD_LIBRARY_PATH="${CUDA_HOME}/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
+
+%post -c /bin/bash
+
+    # Set operating system mirror URL
+    export MIRRORURL='https://vault.centos.org/7.7.1908/os/x86_64'
+
+    # Set operating system version
+    export OSVERSION='7'
+
+    # Set system locale
+    export LC_ALL=C
+
+    # Update all software packages to their latest versions
+    yum -y check-update && yum -y update
+
+    # Location of NVIDIA/CUDA repositories
+    export CUDA_ROOT_URL='http://developer.download.nvidia.com/compute'
+    export CUDA_DISTRO='rhel7'
+    export CUDA_ARCH='x86_64'
+    export CUDA_REPO_URL="${CUDA_ROOT_URL}/cuda/repos/${CUDA_DISTRO}/${CUDA_ARCH}"
+    export CUDA_GPG_PUBKEY='7fa2af80.pub'
+
+    # Set NVIDIA driver and CUDA versions             
+    export CUDA_DRIVER_MAJOR='460'                    
+    export CUDA_DRIVER_MINOR='32'                     
+    export CUDA_DRIVER_REVISION='03'                  
+    export CUDA_DRIVER_VERSION="${CUDA_DRIVER_MAJOR}.${CUDA_DRIVER_MINOR}.${CUDA_DRIVER_REVISION}"                                    
+    export CUDA_MAJOR='11'                            
+    export CUDA_MINOR='0'                             
+    export CUDA_REVISION='2'                          
+    export CUDA_VERSION="${CUDA_MAJOR}.${CUDA_MINOR}"
+    export CUDNN_MAJOR='8'
+    export CUDNN_MINOR='1'
+    export CUDNN_REVISION='0.77'
+    export CUDNN_VERSION="${CUDNN_MAJOR}.${CUDNN_MINOR}.${CUDNN_REVISION}"
+    export NCCL_MAJOR='2'
+    export NCCL_MINOR='8'
+    export NCCL_REVISION='4'
+    export NCCL_VERSION="${NCCL_MAJOR}.${NCCL_MINOR}.${NCCL_REVISION}"
+
+    # Set paths to CUDA binaries and libraries
+    export CUDA_HOME="/usr/local/cuda-${CUDA_VERSION}"
+    export PATH="${CUDA_HOME}/bin${PATH:+:${PATH}}"
+    export LD_LIBRARY_PATH="${CUDA_HOME}/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
+
+    # Install NVIDIA package dependencies
+    yum -y install xorg-x11-server-Xorg
+    yum -y install xorg-x11-server-common
+    yum -y install xorg-x11-apps
+    yum -y install xorg-x11-utils
+    yum -y install xorg-x11-xauth
+    yum -y install xorg-x11-xkb-utils
+    yum -y install cmake
+    yum -y install make
+    yum -y install dkms
+    yum -y install kernel-headers
+    yum -y install glibc-devel
+    yum -y install glibc-headers
+    yum -y install glibc-utils
+    yum -y install libwayland-client
+    yum -y install libwayland-server
+    yum -y install pkgconfig
+    yum -y install libvdpau
+    yum -y install libva-vdpau-driver
+    yum -y install atk
+    yum -y install atk-devel
+    yum -y install cairo
+    yum -y install cairo-devel
+    yum -y install cairo-gobject
+    yum -y install cairo-gobject-devel
+    yum -y install cairo-tools
+    yum -y install fontconfig
+    yum -y install fontconfig-devel
+    yum -y install gdk-pixbuf2
+    yum -y install gdk-pixbuf2-devel
+    yum -y install gtk3
+    yum -y install gtk3-devel
+    yum -y install gtk2
+    yum -y install gtk2-devel
+    yum -y install jansson
+    yum -y install freeglut
+    yum -y install freeglut-devel
+    yum -y install libX11
+    yum -y install libX11-devel
+    yum -y install libX11-common
+    yum -y install libXmu
+    yum -y install libXmu-devel
+    yum -y install libXi
+    yum -y install libXi-devel
+    yum -y install mesa-libGLU
+    yum -y install mesa-libGLU-devel
+    yum -y install java-latest-openjdk
+    yum -y install java-latest-openjdk-devel
+
+    yum -y install grubby
+    yum -y install libtirpc
+    yum -y install ocl-icd
+    yum -y install opencl-filesystem
+    yum -y install vulkan-filesystem
+
+    cd /tmp
+
+    # Download local installer rpm and then install NVIDIA driver and 
+    # CUDA toolkit meta-packages
+    wget http://developer.download.nvidia.com/compute/cuda/11.0.2/local_installers/cuda-repo-rhel7-11-0-local-11.0.2_450.51.05-1.x86_64.rpm
+    rpm -i cuda-repo-rhel7-11-0-local-11.0.2_450.51.05-1.x86_64.rpm
+    yum -y install nvidia-driver-latest-dkms
+    yum -y install cuda
+    yum -y install cuda-drivers
+
+    # Cleanup
+    package-cleanup -q --leaves | xargs -l1 yum -y remove
+    yum -y clean all
+
+    # Update database for mlocate
+    updatedb
+
+%files
+
+%runscript
+
+%test
diff --git a/definition-files/centos/Singularity.centos-7.7.1908-cuda-11.0-openmpi-3.1.6 b/definition-files/centos/Singularity.centos-7.7.1908-cuda-11.0-openmpi-3.1.6
new file mode 100644
index 0000000..5b93666
--- /dev/null
+++ b/definition-files/centos/Singularity.centos-7.7.1908-cuda-11.0-openmpi-3.1.6
@@ -0,0 +1,137 @@
+Bootstrap: localimage
+From: centos-7.7.1908-cuda-11.0.sif
+
+%labels
+
+    APPLICATION_NAME centos + cuda + openmpi
+    APPLICATION_VERSION 7.7.1908 + 11.0 + 3.1.6
+    APPLICATION_URL https://www.open-mpi.org
+
+    AUTHOR_NAME Marty Kandes
+    AUTHOR_EMAIL mkandes@sdsc.edu
+
+    LAST_UPDATED 20210727
+
+%setup
+
+%environment
+
+    # Set Mellanox OFED version, operating system, and hardware platform
+    export MLNX_ROOT_URL='http://www.mellanox.com/downloads/ofed'
+    export MLNX_OFED_VERSION='4.7-3.2.9.0'
+    export MLNX_OS_VERSION='rhel7.7'
+    export MLNX_PLATFORM='x86_64'
+
+    # Set OpenMPI major, minor, and revision numbers, root and
+    # installation directories
+    export OMPI_ROOT_URL='https://download.open-mpi.org/release/open-mpi'
+    export OMPI_MAJOR='3'
+    export OMPI_MINOR='1'
+    export OMPI_REVISION='6'
+    export OMPI_VERSION="${OMPI_MAJOR}.${OMPI_MINOR}.${OMPI_REVISION}"
+    export OMPI_ROOT_DIR='/opt/openmpi'
+    export OMPI_INSTALL_DIR="${OMPI_ROOT_DIR}/${OMPI_VERSION}"
+
+    # Set paths to OpenMPI binaries and libraries
+    export PATH="${OMPI_INSTALL_DIR}/bin:${PATH}"
+    export LD_LIBRARY_PATH="${OMPI_INSTALL_DIR}/lib:${LD_LIBRARY_PATH}"
+
+%post -c /bin/bash
+
+    # Set operating system mirror URL
+    export MIRRORURL='https://vault.centos.org/7.7.1908/os/x86_64'
+
+    # Set operating system version
+    export OSVERSION='7'
+
+    # Set system locale
+    export LC_ALL=C
+
+    # Update all software packages to their latest versions
+    yum -y check-update && yum -y update
+
+    # Install all dependencies and/or prerequisites for Mellanox OFED
+    yum -y install perl 
+    yum -y install pciutils
+    yum -y install python
+    yum -y install gcc-gfortran
+    yum -y install libxml2-python
+    yum -y install tcsh
+    yum -y install libnl.i686
+    yum -y install libnl
+    yum -y install expat
+    yum -y install glib2
+    yum -y install tcl
+    yum -y install libstdc++
+    yum -y install bc
+    yum -y install tk
+    yum -y install gtk2
+    yum -y install atk
+    yum -y install cairo
+    yum -y install numactl
+    yum -y install pkgconfig
+    yum -y install ethtool
+
+    cd /tmp
+
+    # Set Mellanox OFED version, operating system, and hardware platform
+    export MLNX_ROOT_URL='http://www.mellanox.com/downloads/ofed'
+    export MLNX_OFED_VERSION='4.7-3.2.9.0'
+    export MLNX_OS_VERSION='rhel7.7'
+    export MLNX_PLATFORM='x86_64'
+
+    # Download and install Mellanox OFED drivers and supporting
+    # libraries for userspace access to Ethernet, RDMA, and Infiniband.
+    # https://docs.mellanox.com/pages/releaseview.action?pageId=15049785
+    wget "${MLNX_ROOT_URL}/MLNX_OFED-${MLNX_OFED_VERSION}/MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-${MLNX_OS_VERSION}-${MLNX_PLATFORM}.tgz"
+    tar -xf "MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-${MLNX_OS_VERSION}-${MLNX_PLATFORM}.tgz"
+    cd "MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-${MLNX_OS_VERSION}-${MLNX_PLATFORM}"
+    ./mlnxofedinstall --user-space-only --without-fw-update --force
+
+    cd /tmp
+
+    # Remove Mellanox OFED archive directory and tarball
+    rm -rf "MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-${MLNX_OS_VERSION}-${MLNX_PLATFORM}"
+    rm "MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-${MLNX_OS_VERSION}-${MLNX_PLATFORM}.tgz"
+
+    # Install OpenMPI dependencies
+    yum -y install zlib
+    yum -y install zlib-devel
+
+    cd /tmp
+
+    # Set OpenMPI major, minor, and revision numbers, root and
+    # installation directories
+    export OMPI_ROOT_URL='https://download.open-mpi.org/release/open-mpi'
+    export OMPI_MAJOR='3'
+    export OMPI_MINOR='1'
+    export OMPI_REVISION='6'
+    export OMPI_VERSION="${OMPI_MAJOR}.${OMPI_MINOR}.${OMPI_REVISION}"
+    export OMPI_ROOT_DIR='/opt/openmpi'
+    export OMPI_INSTALL_DIR="${OMPI_ROOT_DIR}/${OMPI_VERSION}"
+
+    # Download, build, and install OpenMPI
+    wget "${OMPI_ROOT_URL}/v${OMPI_MAJOR}.${OMPI_MINOR}/openmpi-${OMPI_VERSION}.tar.gz"
+    tar -xf "openmpi-${OMPI_VERSION}.tar.gz"
+    cd "openmpi-${OMPI_VERSION}"
+    ./configure --prefix="${OMPI_INSTALL_DIR}" --with-cuda
+    make all install
+
+    cd /tmp
+
+    # Remove OpenMPI build directory and source tarball
+    rm -rf "openmpi-${OMPI_VERSION}"
+    rm "openmpi-${OMPI_VERSION}.tar.gz"
+
+    # Cleanup
+    package-cleanup -q --leaves | xargs -l1 yum -y remove
+    yum -y clean all
+
+    # Update database for mlocate
+    updatedb
+
+%files
+
+%runscript
+
+%test
diff --git a/definition-files/centos/Singularity.centos-7.7.1908-cuda-11.0-openmpi-4.0.5 b/definition-files/centos/Singularity.centos-7.7.1908-cuda-11.0-openmpi-4.0.5
new file mode 100644
index 0000000..42bd370
--- /dev/null
+++ b/definition-files/centos/Singularity.centos-7.7.1908-cuda-11.0-openmpi-4.0.5
@@ -0,0 +1,137 @@
+Bootstrap: localimage
+From: centos-7.7.1908-cuda-11.0.sif
+
+%labels
+
+    APPLICATION_NAME centos + cuda + openmpi
+    APPLICATION_VERSION 7.7.1908 + 11.0 + 4.0.5
+    APPLICATION_URL https://www.open-mpi.org
+
+    AUTHOR_NAME Marty Kandes
+    AUTHOR_EMAIL mkandes@sdsc.edu
+
+    LAST_UPDATED 20210728
+
+%setup
+
+%environment
+
+    # Set Mellanox OFED version, operating system, and hardware platform
+    export MLNX_ROOT_URL='http://www.mellanox.com/downloads/ofed'
+    export MLNX_OFED_VERSION='4.7-3.2.9.0'
+    export MLNX_OS_VERSION='rhel7.7'
+    export MLNX_PLATFORM='x86_64'
+
+    # Set OpenMPI major, minor, and revision numbers, root and
+    # installation directories
+    export OMPI_ROOT_URL='https://download.open-mpi.org/release/open-mpi'
+    export OMPI_MAJOR='4'
+    export OMPI_MINOR='0'
+    export OMPI_REVISION='5'
+    export OMPI_VERSION="${OMPI_MAJOR}.${OMPI_MINOR}.${OMPI_REVISION}"
+    export OMPI_ROOT_DIR='/opt/openmpi'
+    export OMPI_INSTALL_DIR="${OMPI_ROOT_DIR}/${OMPI_VERSION}"
+
+    # Set paths to OpenMPI binaries and libraries
+    export PATH="${OMPI_INSTALL_DIR}/bin:${PATH}"
+    export LD_LIBRARY_PATH="${OMPI_INSTALL_DIR}/lib:${LD_LIBRARY_PATH}"
+
+%post -c /bin/bash
+
+    # Set operating system mirror URL
+    export MIRRORURL='https://vault.centos.org/7.7.1908/os/x86_64'
+
+    # Set operating system version
+    export OSVERSION='7'
+
+    # Set system locale
+    export LC_ALL=C
+
+    # Update all software packages to their latest versions
+    yum -y check-update && yum -y update
+
+    # Install all dependencies and/or prerequisites for Mellanox OFED
+    yum -y install perl 
+    yum -y install pciutils
+    yum -y install python
+    yum -y install gcc-gfortran
+    yum -y install libxml2-python
+    yum -y install tcsh
+    yum -y install libnl.i686
+    yum -y install libnl
+    yum -y install expat
+    yum -y install glib2
+    yum -y install tcl
+    yum -y install libstdc++
+    yum -y install bc
+    yum -y install tk
+    yum -y install gtk2
+    yum -y install atk
+    yum -y install cairo
+    yum -y install numactl
+    yum -y install pkgconfig
+    yum -y install ethtool
+
+    cd /tmp
+
+    # Set Mellanox OFED version, operating system, and hardware platform
+    export MLNX_ROOT_URL='http://www.mellanox.com/downloads/ofed'
+    export MLNX_OFED_VERSION='4.7-3.2.9.0'
+    export MLNX_OS_VERSION='rhel7.7'
+    export MLNX_PLATFORM='x86_64'
+
+    # Download and install Mellanox OFED drivers and supporting
+    # libraries for userspace access to Ethernet, RDMA, and Infiniband.
+    # https://docs.mellanox.com/pages/releaseview.action?pageId=15049785
+    wget "${MLNX_ROOT_URL}/MLNX_OFED-${MLNX_OFED_VERSION}/MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-${MLNX_OS_VERSION}-${MLNX_PLATFORM}.tgz"
+    tar -xf "MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-${MLNX_OS_VERSION}-${MLNX_PLATFORM}.tgz"
+    cd "MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-${MLNX_OS_VERSION}-${MLNX_PLATFORM}"
+    ./mlnxofedinstall --user-space-only --without-fw-update --force
+
+    cd /tmp
+
+    # Remove Mellanox OFED archive directory and tarball
+    rm -rf "MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-${MLNX_OS_VERSION}-${MLNX_PLATFORM}"
+    rm "MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-${MLNX_OS_VERSION}-${MLNX_PLATFORM}.tgz"
+
+    # Install OpenMPI dependencies
+    yum -y install zlib
+    yum -y install zlib-devel
+
+    cd /tmp
+
+    # Set OpenMPI major, minor, and revision numbers, root and
+    # installation directories
+    export OMPI_ROOT_URL='https://download.open-mpi.org/release/open-mpi'
+    export OMPI_MAJOR='4'
+    export OMPI_MINOR='0'
+    export OMPI_REVISION='5'
+    export OMPI_VERSION="${OMPI_MAJOR}.${OMPI_MINOR}.${OMPI_REVISION}"
+    export OMPI_ROOT_DIR='/opt/openmpi'
+    export OMPI_INSTALL_DIR="${OMPI_ROOT_DIR}/${OMPI_VERSION}"
+
+    # Download, build, and install OpenMPI
+    wget "${OMPI_ROOT_URL}/v${OMPI_MAJOR}.${OMPI_MINOR}/openmpi-${OMPI_VERSION}.tar.gz"
+    tar -xf "openmpi-${OMPI_VERSION}.tar.gz"
+    cd "openmpi-${OMPI_VERSION}"
+    ./configure --prefix="${OMPI_INSTALL_DIR}" --with-cuda
+    make all install
+
+    cd /tmp
+
+    # Remove OpenMPI build directory and source tarball
+    rm -rf "openmpi-${OMPI_VERSION}"
+    rm "openmpi-${OMPI_VERSION}.tar.gz"
+
+    # Cleanup
+    package-cleanup -q --leaves | xargs -l1 yum -y remove
+    yum -y clean all
+
+    # Update database for mlocate
+    updatedb
+
+%files
+
+%runscript
+
+%test
diff --git a/definition-files/centos/Singularity.centos-7.7.1908-openmpi-4.0.5 b/definition-files/centos/Singularity.centos-7.7.1908-openmpi-4.0.5
new file mode 100644
index 0000000..0267c05
--- /dev/null
+++ b/definition-files/centos/Singularity.centos-7.7.1908-openmpi-4.0.5
@@ -0,0 +1,137 @@
+Bootstrap: localimage
+From: centos-7.7.1908.sif
+
+%labels
+
+    APPLICATION_NAME centos + openmpi
+    APPLICATION_VERSION 7.7.1908 + 4.0.5
+    APPLICATION_URL https://www.open-mpi.org
+
+    AUTHOR_NAME Marty Kandes
+    AUTHOR_EMAIL mkandes@sdsc.edu
+
+    LAST_UPDATED 20210728
+
+%setup
+
+%environment
+
+    # Set Mellanox OFED version, operating system, and hardware platform
+    export MLNX_ROOT_URL='http://www.mellanox.com/downloads/ofed'
+    export MLNX_OFED_VERSION='4.7-3.2.9.0'
+    export MLNX_OS_VERSION='rhel7.7'
+    export MLNX_PLATFORM='x86_64'
+
+    # Set OpenMPI major, minor, and revision numbers, root and
+    # installation directories
+    export OMPI_ROOT_URL='https://download.open-mpi.org/release/open-mpi'
+    export OMPI_MAJOR='4'
+    export OMPI_MINOR='0'
+    export OMPI_REVISION='5'
+    export OMPI_VERSION="${OMPI_MAJOR}.${OMPI_MINOR}.${OMPI_REVISION}"
+    export OMPI_ROOT_DIR='/opt/openmpi'
+    export OMPI_INSTALL_DIR="${OMPI_ROOT_DIR}/${OMPI_VERSION}"
+
+    # Set paths to OpenMPI binaries and libraries
+    export PATH="${OMPI_INSTALL_DIR}/bin:${PATH}"
+    export LD_LIBRARY_PATH="${OMPI_INSTALL_DIR}/lib:${LD_LIBRARY_PATH}"
+
+%post -c /bin/bash
+
+    # Set operating system mirror URL
+    export MIRRORURL='https://vault.centos.org/7.7.1908/os/x86_64'
+
+    # Set operating system version
+    export OSVERSION='7'
+
+    # Set system locale
+    export LC_ALL=C
+
+    # Update all software packages to their latest versions
+    yum -y check-update && yum -y update
+
+    # Install all dependencies and/or prerequisites for Mellanox OFED
+    yum -y install perl 
+    yum -y install pciutils
+    yum -y install python
+    yum -y install gcc-gfortran
+    yum -y install libxml2-python
+    yum -y install tcsh
+    yum -y install libnl.i686
+    yum -y install libnl
+    yum -y install expat
+    yum -y install glib2
+    yum -y install tcl
+    yum -y install libstdc++
+    yum -y install bc
+    yum -y install tk
+    yum -y install gtk2
+    yum -y install atk
+    yum -y install cairo
+    yum -y install numactl
+    yum -y install pkgconfig
+    yum -y install ethtool
+
+    cd /tmp
+
+    # Set Mellanox OFED version, operating system, and hardware platform
+    export MLNX_ROOT_URL='http://www.mellanox.com/downloads/ofed'
+    export MLNX_OFED_VERSION='4.7-3.2.9.0'
+    export MLNX_OS_VERSION='rhel7.7'
+    export MLNX_PLATFORM='x86_64'
+
+    # Download and install Mellanox OFED drivers and supporting
+    # libraries for userspace access to Ethernet, RDMA, and Infiniband.
+    # https://docs.mellanox.com/pages/releaseview.action?pageId=15049785
+    wget "${MLNX_ROOT_URL}/MLNX_OFED-${MLNX_OFED_VERSION}/MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-${MLNX_OS_VERSION}-${MLNX_PLATFORM}.tgz"
+    tar -xf "MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-${MLNX_OS_VERSION}-${MLNX_PLATFORM}.tgz"
+    cd "MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-${MLNX_OS_VERSION}-${MLNX_PLATFORM}"
+    ./mlnxofedinstall --user-space-only --without-fw-update --force
+
+    cd /tmp
+
+    # Remove Mellanox OFED archive directory and tarball
+    rm -rf "MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-${MLNX_OS_VERSION}-${MLNX_PLATFORM}"
+    rm "MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-${MLNX_OS_VERSION}-${MLNX_PLATFORM}.tgz"
+
+    # Install OpenMPI dependencies
+    yum -y install zlib
+    yum -y install zlib-devel
+
+    cd /tmp
+
+    # Set OpenMPI major, minor, and revision numbers, root and
+    # installation directories
+    export OMPI_ROOT_URL='https://download.open-mpi.org/release/open-mpi'
+    export OMPI_MAJOR='4'
+    export OMPI_MINOR='0'
+    export OMPI_REVISION='5'
+    export OMPI_VERSION="${OMPI_MAJOR}.${OMPI_MINOR}.${OMPI_REVISION}"
+    export OMPI_ROOT_DIR='/opt/openmpi'
+    export OMPI_INSTALL_DIR="${OMPI_ROOT_DIR}/${OMPI_VERSION}"
+
+    # Download, build, and install OpenMPI
+    wget "${OMPI_ROOT_URL}/v${OMPI_MAJOR}.${OMPI_MINOR}/openmpi-${OMPI_VERSION}.tar.gz"
+    tar -xf "openmpi-${OMPI_VERSION}.tar.gz"
+    cd "openmpi-${OMPI_VERSION}"
+    ./configure --prefix="${OMPI_INSTALL_DIR}"
+    make all install
+
+    cd /tmp
+
+    # Remove OpenMPI build directory and source tarball
+    rm -rf "openmpi-${OMPI_VERSION}"
+    rm "openmpi-${OMPI_VERSION}.tar.gz"
+
+    # Cleanup
+    package-cleanup -q --leaves | xargs -l1 yum -y remove
+    yum -y clean all
+
+    # Update database for mlocate
+    updatedb
+
+%files
+
+%runscript
+
+%test
diff --git a/definition-files/omb/Singularity.omb-5.7-centos-7.7.1908-cuda-11.0-openmpi-3.1.6 b/definition-files/omb/Singularity.omb-5.7-centos-7.7.1908-cuda-11.0-openmpi-3.1.6
new file mode 100644
index 0000000..00a30c8
--- /dev/null
+++ b/definition-files/omb/Singularity.omb-5.7-centos-7.7.1908-cuda-11.0-openmpi-3.1.6
@@ -0,0 +1,122 @@
+Bootstrap: localimage
+From: ../centos/centos-7.7.1908-cuda-11.0-openmpi-3.1.6.sif
+
+%labels
+
+    APPLICATION_NAME OSU Microbenchmarks
+    APPLICATION_VERSION 5.7
+    APPLICATION_URL http://mvapich.cse.ohio-state.edu/benchmarks
+
+    AUTHOR_NAME Marty Kandes
+    AUTHOR_EMAIL mkandes@sdsc.edu
+
+    LAST_UPDATED 20210728
+
+%setup
+
+%environment
+
+    # Set OMB major and minor version numbers, root and
+    # installation directories
+    export OMB_ROOT_URL='http://mvapich.cse.ohio-state.edu/download/mvapich'
+    export OMB_MAJOR='5'
+    export OMB_MINOR='7'
+    export OMB_VERSION="${OMB_MAJOR}.${OMB_MINOR}"
+    export OMB_ROOT_DIR='/opt/omb'
+    export OMB_INSTALL_DIR="${OMB_ROOT_DIR}/${OMB_VERSION}"
+
+    # Set paths to OSU Microbenchmarks binaries
+    export PATH="${OMB_INSTALL_DIR}/collective:${PATH}"
+    export PATH="${OMB_INSTALL_DIR}/one-sided:${PATH}"
+    export PATH="${OMB_INSTALL_DIR}/pt2pt:${PATH}"
+    export PATH="${OMB_INSTALL_DIR}/startup:${PATH}"
+
+%post -c /bin/bash
+
+    # Set operating system mirror URL
+    export MIRRORURL='https://vault.centos.org/7.7.1908/os/x86_64'
+
+    # Set operating system version
+    export OSVERSION='7'
+
+    # Set system locale
+    export LC_ALL=C
+
+    # Set CUDA version
+    export CUDA_MAJOR='11'
+    export CUDA_MINOR='0'
+    export CUDA_VERSION="${CUDA_MAJOR}.${CUDA_MINOR}"
+
+    # Set paths to CUDA binaries and libraries
+    export CUDA_HOME="/usr/local/cuda-${CUDA_VERSION}"
+    export PATH="${CUDA_HOME}/bin${PATH:+:${PATH}}"
+    export LD_LIBRARY_PATH="${CUDA_HOME}/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
+
+    # Set Mellanox OFED version, operating system, and hardware platform
+    export MLNX_ROOT_URL='http://www.mellanox.com/downloads/ofed'
+    export MLNX_OFED_VERSION='4.7-3.2.9.0'
+    export MLNX_OS_VERSION='rhel7.7'
+    export MLNX_PLATFORM='x86_64'
+
+    # Set OpenMPI major, minor, and revision numbers, root and
+    # installation directories
+    export OMPI_ROOT_URL='https://download.open-mpi.org/release/open-mpi'
+    export OMPI_MAJOR='3'
+    export OMPI_MINOR='1'
+    export OMPI_REVISION='6'
+    export OMPI_VERSION="${OMPI_MAJOR}.${OMPI_MINOR}.${OMPI_REVISION}"
+    export OMPI_ROOT_DIR='/opt/openmpi'
+    export OMPI_INSTALL_DIR="${OMPI_ROOT_DIR}/${OMPI_VERSION}"
+
+    # Set paths to OpenMPI binaries and libraries
+    export PATH="${OMPI_INSTALL_DIR}/bin:${PATH}"
+    export LD_LIBRARY_PATH="${OMPI_INSTALL_DIR}/lib:${LD_LIBRARY_PATH}"
+
+    # Update all software packages to their latest versions
+    yum -y check-update && yum -y update
+
+    cd /tmp
+
+    # Set OMB major and minor version numbers, root and
+    # installation directories
+    export OMB_ROOT_URL='http://mvapich.cse.ohio-state.edu/download/mvapich'
+    export OMB_MAJOR='5'
+    export OMB_MINOR='7'
+    export OMB_VERSION="${OMB_MAJOR}.${OMB_MINOR}"
+    export OMB_ROOT_DIR='/opt/omb'
+    export OMB_INSTALL_DIR="${OMB_ROOT_DIR}/${OMB_VERSION}"
+
+    # Download, build, and install OSU Microbenchmarks
+    wget "${OMB_ROOT_URL}/osu-micro-benchmarks-${OMB_VERSION}.tar.gz"
+    tar -xf "osu-micro-benchmarks-${OMB_VERSION}.tar.gz"
+    cd "osu-micro-benchmarks-${OMB_VERSION}"
+    ./configure --prefix="${OMB_INSTALL_DIR}" CC='mpicc' CXX='mpicxx' --enable-cuda --with-cuda-include="${CUDA_HOME}/include" --with-cuda-libpath="${CUDA_HOME}/lib64"
+    make
+    make install
+
+    # Reorganize OSU Microbenchmarks directory structure
+    cd "${OMB_INSTALL_DIR}"
+    mv libexec/osu-micro-benchmarks/mpi/collective ./
+    mv libexec/osu-micro-benchmarks/mpi/one-sided ./
+    mv libexec/osu-micro-benchmarks/mpi/pt2pt ./
+    mv libexec/osu-micro-benchmarks/mpi/startup ./
+    rm -rf libexec
+
+    cd /tmp
+
+    # Remove OMB build directory and source tarball
+    rm -rf "osu-micro-benchmarks-${OMB_VERSION}"
+    rm "osu-micro-benchmarks-${OMB_VERSION}.tar.gz"
+
+    # Cleanup
+    package-cleanup -q --leaves | xargs -l1 yum -y remove
+    yum -y clean all
+
+    # Update database for mlocate
+    updatedb
+
+%files
+
+%runscript
+
+%test
diff --git a/definition-files/omb/Singularity.omb-5.7-centos-7.7.1908-openmpi-3.1.6 b/definition-files/omb/Singularity.omb-5.7-centos-7.7.1908-openmpi-3.1.6
index 6edd872..8bb29e5 100644
--- a/definition-files/omb/Singularity.omb-5.7-centos-7.7.1908-openmpi-3.1.6
+++ b/definition-files/omb/Singularity.omb-5.7-centos-7.7.1908-openmpi-3.1.6
@@ -4,13 +4,13 @@ From: ../centos/centos-7.7.1908-openmpi-3.1.6.sif
 %labels
 
     APPLICATION_NAME OSU Microbenchmarks
-    APPLICATION_VERSION 5.6.3
+    APPLICATION_VERSION 5.7
     APPLICATION_URL http://mvapich.cse.ohio-state.edu/benchmarks
 
     AUTHOR_NAME Marty Kandes
     AUTHOR_EMAIL mkandes@sdsc.edu
 
-    LAST_UPDATED 20210726
+    LAST_UPDATED 20210727
 
 %setup
 
diff --git a/definition-files/omb/Singularity.omb-5.7-centos-7.7.1908-openmpi-4.0.5 b/definition-files/omb/Singularity.omb-5.7-centos-7.7.1908-openmpi-4.0.5
new file mode 100644
index 0000000..2335584
--- /dev/null
+++ b/definition-files/omb/Singularity.omb-5.7-centos-7.7.1908-openmpi-4.0.5
@@ -0,0 +1,112 @@
+Bootstrap: localimage
+From: ../centos/centos-7.7.1908-openmpi-4.0.5.sif
+
+%labels
+
+    APPLICATION_NAME OSU Microbenchmarks
+    APPLICATION_VERSION 5.7
+    APPLICATION_URL http://mvapich.cse.ohio-state.edu/benchmarks
+
+    AUTHOR_NAME Marty Kandes
+    AUTHOR_EMAIL mkandes@sdsc.edu
+
+    LAST_UPDATED 20210729
+
+%setup
+
+%environment
+
+    # Set OMB major and minor version numbers, root and
+    # installation directories
+    export OMB_ROOT_URL='http://mvapich.cse.ohio-state.edu/download/mvapich'
+    export OMB_MAJOR='5'
+    export OMB_MINOR='7'
+    export OMB_VERSION="${OMB_MAJOR}.${OMB_MINOR}"
+    export OMB_ROOT_DIR='/opt/omb'
+    export OMB_INSTALL_DIR="${OMB_ROOT_DIR}/${OMB_VERSION}"
+
+    # Set paths to OSU Microbenchmarks binaries
+    export PATH="${OMB_INSTALL_DIR}/collective:${PATH}"
+    export PATH="${OMB_INSTALL_DIR}/one-sided:${PATH}"
+    export PATH="${OMB_INSTALL_DIR}/pt2pt:${PATH}"
+    export PATH="${OMB_INSTALL_DIR}/startup:${PATH}"
+
+%post -c /bin/bash
+
+    # Set operating system mirror URL
+    export MIRRORURL='https://vault.centos.org/7.7.1908/os/x86_64'
+
+    # Set operating system version
+    export OSVERSION='7'
+
+    # Set system locale
+    export LC_ALL=C
+
+    # Set Mellanox OFED version, operating system, and hardware platform
+    export MLNX_ROOT_URL='http://www.mellanox.com/downloads/ofed'
+    export MLNX_OFED_VERSION='4.7-3.2.9.0'
+    export MLNX_OS_VERSION='rhel7.7'
+    export MLNX_PLATFORM='x86_64'
+
+    # Set OpenMPI major, minor, and revision numbers, root and
+    # installation directories
+    export OMPI_ROOT_URL='https://download.open-mpi.org/release/open-mpi'
+    export OMPI_MAJOR='4'
+    export OMPI_MINOR='0'
+    export OMPI_REVISION='5'
+    export OMPI_VERSION="${OMPI_MAJOR}.${OMPI_MINOR}.${OMPI_REVISION}"
+    export OMPI_ROOT_DIR='/opt/openmpi'
+    export OMPI_INSTALL_DIR="${OMPI_ROOT_DIR}/${OMPI_VERSION}"
+
+    # Set paths to OpenMPI binaries and libraries
+    export PATH="${OMPI_INSTALL_DIR}/bin:${PATH}"
+    export LD_LIBRARY_PATH="${OMPI_INSTALL_DIR}/lib:${LD_LIBRARY_PATH}"
+
+    # Update all software packages to their latest versions
+    yum -y check-update && yum -y update
+
+    cd /tmp
+
+    # Set OMB major and minor version numbers, root and
+    # installation directories
+    export OMB_ROOT_URL='http://mvapich.cse.ohio-state.edu/download/mvapich'
+    export OMB_MAJOR='5'
+    export OMB_MINOR='7'
+    export OMB_VERSION="${OMB_MAJOR}.${OMB_MINOR}"
+    export OMB_ROOT_DIR='/opt/omb'
+    export OMB_INSTALL_DIR="${OMB_ROOT_DIR}/${OMB_VERSION}"
+
+    # Download, build, and install OSU Microbenchmarks
+    wget "${OMB_ROOT_URL}/osu-micro-benchmarks-${OMB_VERSION}.tar.gz"
+    tar -xf "osu-micro-benchmarks-${OMB_VERSION}.tar.gz"
+    cd "osu-micro-benchmarks-${OMB_VERSION}"
+    ./configure --prefix="${OMB_INSTALL_DIR}" CC='mpicc' CXX='mpicxx'
+    make
+    make install
+
+    # Reorganize OSU Microbenchmarks directory structure
+    cd "${OMB_INSTALL_DIR}"
+    mv libexec/osu-micro-benchmarks/mpi/collective ./
+    mv libexec/osu-micro-benchmarks/mpi/one-sided ./
+    mv libexec/osu-micro-benchmarks/mpi/pt2pt ./
+    mv libexec/osu-micro-benchmarks/mpi/startup ./
+    rm -rf libexec
+
+    cd /tmp
+
+    # Remove OMB build directory and source tarball
+    rm -rf "osu-micro-benchmarks-${OMB_VERSION}"
+    rm "osu-micro-benchmarks-${OMB_VERSION}.tar.gz"
+
+    # Cleanup
+    package-cleanup -q --leaves | xargs -l1 yum -y remove
+    yum -y clean all
+
+    # Update database for mlocate
+    updatedb
+
+%files
+
+%runscript
+
+%test
-- 
GitLab