Select Git revision
ubuntu-openmpi.def
ubuntu-openmpi.def 5.66 KiB
Bootstrap: debootstrap
MirrorURL: http://us.archive.ubuntu.com/ubuntu
OSVersion: bionic
%labels
APPLICATION_NAME ubuntu + openmpi
APPLICATION_VERSION 18.04 + 3.1.4
APPLICATION_URL https://www.open-mpi.org/
SINGULARITY_VERSION 2.6.1
SINGULARITY_IMAGE_SIZE 2048
AUTHOR_NAME Marty Kandes
AUTHOR_EMAIL mkandes@sdsc.edu
LAST_UPDATED 20200227
%setup
%environment
# Set system locale
export LC_ALL=C
# Set paths to OpenMPI binaries and libraries
export PATH="/opt/openmpi-3.1.4/bin:${PATH}"
export LD_LIBRARY_PATH="/opt/openmpi-3.1.4/lib:${LD_LIBRARY_PATH}"
# Set paths to OSU Microbenchmarks binaries
export PATH="/opt/omb-5.6.2/collective:${PATH}"
export PATH="/opt/omb-5.6.2/one-sided:${PATH}"
export PATH="/opt/omb-5.6.2/pt2pt:${PATH}"
export PATH="/opt/omb-5.6.2/startup:${PATH}"
# Set default miniconda environment
export PATH="/opt/miniconda3/bin:${PATH}"
%post -c /bin/bash
# Set system locale
export LC_ALL=C
# Install system metapackages
apt-get -y install ubuntu-standard
apt-get -y install ubuntu-server
# Add repositories
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION} main"
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION} universe"
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION} multiverse"
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION} restricted"
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-updates main"
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-updates universe"
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-updates multiverse"
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-updates restricted"
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-backports main"
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-backports universe"
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-backports multiverse"
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-backports restricted"
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-security main"
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-security universe"
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-security multiverse"
add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-security restricted"
# Upgrade all packages to their latest versions
apt-get -y update && apt-get -y upgrade
# Install common packages from 'main'
apt-get -y install autoconf
apt-get -y install automake
apt-get -y install build-essential
apt-get -y install cmake
apt-get -y install libtool
apt-get -y install gfortran
apt-get -y install pkg-config
apt-get -y install wget
apt-get -y install zip
# Install expect to automate responses for interactive build questions
apt-get -y install expect
# Use /tmp to store temporary files within the container during the
# bootstraping process
cd /tmp
# Install miniconda3
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh -b -p /opt/miniconda3
# Install basic drivers for user space access to Ethernet, RDMA,
# and Infiniband. See https://community.mellanox.com/docs/DOC-2431
apt-get -y install dkms
apt-get -y install infiniband-diags
apt-get -y install libibverbs-dev
apt-get -y install ibacm
apt-get -y install librdmacm-dev
apt-get -y install libmlx4-dev
apt-get -y install libmlx5-dev
apt-get -y install mstflint
apt-get -y install libibcm-dev
apt-get -y install libibmad-dev
apt-get -y install libibumad-dev
apt-get -y install opensm
apt-get -y install srptools
# Install additional tools
apt-get -y install ibutils
apt-get -y install ibverbs-utils
apt-get -y install rdmacm-utils
apt-get -y install perftest
apt-get -y install numactl
apt-get -y install libnuma-dev
# Install libnl
apt-get -y install libnl-3-200
apt-get -y install libnl-route-3-200
apt-get -y install libnl-route-3-dev
apt-get -y install libnl-utils
# Install OpenMPI dependencies
apt-get -y install zlib1g-dev
# Download, build, and install OpenMPI
wget https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-3.1.4.tar.gz
tar -xzvf openmpi-3.1.4.tar.gz
cd openmpi-3.1.4
./configure --prefix=/opt/openmpi-3.1.4
make all install
# Set paths to OpenMPI binaries and libraries
export PATH="/opt/openmpi-3.1.4/bin:${PATH}"
export LD_LIBRARY_PATH="/opt/openmpi-3.1.4/lib:${LD_LIBRARY_PATH}"
cd /tmp
w
# Download, build, and install OSU Microbenchmarks
wget http://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-5.6.2.tar.gz
tar -xzvf osu-micro-benchmarks-5.6.2.tar.gz
cd osu-micro-benchmarks-5.6.2
./configure --prefix='/opt/omb-5.6.2' CC='mpicc' CXX='mpicxx'
make
make install
# Reorganize OSU Microbenchmarks directory structure
cd /opt/omb-5.6.2
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
# Set paths to OSU Microbenchmarks binaries
export PATH="/opt/omb-5.6.2/collective:${PATH}"
export PATH="/opt/omb-5.6.2/one-sided:${PATH}"
export PATH="/opt/omb-5.6.2/pt2pt:${PATH}"
export PATH="/opt/omb-5.6.2/startup:${PATH}"
# Clean up /tmp directory
cd /tmp
rm Miniconda3-latest-Linux-x86_64.sh
rm *.deb
rm -rf openmpi-3.1.4*
rm -rf osu-micro-benchmarks-5.6.2*
# Update database for mlocate
updatedb
%files
%runscript
%test