Select Git revision
Singularity.ubuntu-18.04-cuda-10.2-mlnx-ofed-4.6-1.0.1.1-openmpi-3.1.4
Marty Kandes authored
Another OMB container (and its base container layers) built to assist with testing CUDA-enabled OpenMPI to help investigate a problem with multi-GPU node support in Expanse's software deployment. Again, these containers will also be used to prepare acceptance tests on Expanse for the upcoming deployment of Voyager.
Singularity.ubuntu-18.04-cuda-10.2-mlnx-ofed-4.6-1.0.1.1-openmpi-3.1.4 3.22 KiB
Bootstrap: oras
From: ghcr.io/mkandes/naked-singularity:ubuntu-18.04-cuda-10.2-mlnx-ofed-4.6-1.0.1.1
%labels
APPLICATION_NAME ubuntu + cuda + mlnx-ofed + openmpi
APPLICATION_VERSION 18.04 + 10.2 + 4.6-1.0.1.1 + 3.1.4
APPLICATION_URL https://www.open-mpi.org
AUTHOR_NAME Marty Kandes
AUTHOR_EMAIL mkandes@sdsc.edu
LAST_UPDATED 20210909
%setup
%environment
# Set OpenMPI major, minor, and revision numbers, root and
# installation directories
export OMPI_MAJOR='3'
export OMPI_MINOR='1'
export OMPI_REVISION='4'
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='http://us.archive.ubuntu.com/ubuntu'
# Set operating system version
export OSVERSION='bionic'
# Set system locale
export LC_ALL='C'
# Set debian frontend interface
export DEBIAN_FRONTEND='noninteractive'
# Set NVIDIA CUDA version
export CUDA_MAJOR='10'
export CUDA_MINOR='2'
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}}"
# Upgrade all software packages to their latest versions
apt-get -y update && apt-get -y upgrade
# Install OpenMPI dependencies
apt-get -y install zlib1g-dev
# 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='4'
export OMPI_VERSION="${OMPI_MAJOR}.${OMPI_MINOR}.${OMPI_REVISION}"
export OMPI_ROOT_DIR='/opt/openmpi'
export OMPI_INSTALL_DIR="${OMPI_ROOT_DIR}/${OMPI_VERSION}"
cd /tmp
# 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}" --enable-shared \
--disable-silent-rules --disable-builtin-atomics --enable-static \
--without-hcoll --without-psm --without-knem --without-psm2 \
--with-verbs=/usr --without-ofi --without-mxm --without-fca \
--without-xpmem --without-ucx --without-cma --without-slurm \
--without-tm --without-loadleveler --without-alps --without-lsf \
--without-sge --disable-memchecker --disable-java \
--disable-mpi-java --with-cuda --enable-mpi-cxx \
--enable-cxx-exceptions
make all install
cd /tmp
# Remove OpenMPI build directory and source tarball
rm -rf "openmpi-${OMPI_VERSION}"
rm "openmpi-${OMPI_VERSION}.tar.gz"
# Cleanup
apt-get -y autoremove --purge
apt-get -y clean
# Update database for mlocate
updatedb
%files
%runscript
%test