Skip to content

Instantly share code, notes, and snippets.

@bilke
Created January 2, 2020 14:03
Show Gist options
  • Save bilke/00a0b32597dd147d8a9ef08e7aa1643e to your computer and use it in GitHub Desktop.
Save bilke/00a0b32597dd147d8a9ef08e7aa1643e to your computer and use it in GitHub Desktop.
Output of python ogscm/cli.py --pm system --ompi 4.0.1 --runtime
FROM ubuntu:18.04 AS build
# Generated with ogs-container-maker 1.2.0
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
curl \
make \
tar \
wget && \
rm -rf /var/lib/apt/lists/*
# GNU compiler
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
g++ \
gcc && \
rm -rf /var/lib/apt/lists/*
# UCX version 1.5.2
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
binutils-dev \
file \
libnuma-dev \
make \
wget && \
rm -rf /var/lib/apt/lists/*
RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp https://github.com/openucx/ucx/releases/download/v1.5.2/ucx-1.5.2.tar.gz && \
mkdir -p /var/tmp && tar -x -f /var/tmp/ucx-1.5.2.tar.gz -C /var/tmp -z && \
cd /var/tmp/ucx-1.5.2 && ./configure --prefix=/usr/local/ucx --enable-optimizations --disable-logging --disable-debug --disable-assertions --disable-params-check --disable-doxygen-doc --without-cuda && \
make -j$(nproc) && \
make -j$(nproc) install && \
rm -rf /var/tmp/ucx-1.5.2.tar.gz /var/tmp/ucx-1.5.2
ENV LD_LIBRARY_PATH=/usr/local/ucx/lib:$LD_LIBRARY_PATH \
PATH=/usr/local/ucx/bin:$PATH
# PMIX version 3.1.4
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
file \
hwloc \
libevent-dev \
make \
tar \
wget && \
rm -rf /var/lib/apt/lists/*
RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp https://github.com/openpmix/openpmix/releases/download/v3.1.4/pmix-3.1.4.tar.gz && \
mkdir -p /var/tmp && tar -x -f /var/tmp/pmix-3.1.4.tar.gz -C /var/tmp -z && \
cd /var/tmp/pmix-3.1.4 && ./configure --prefix=/usr/local/pmix && \
make -j$(nproc) && \
make -j$(nproc) install && \
rm -rf /var/tmp/pmix-3.1.4.tar.gz /var/tmp/pmix-3.1.4
ENV CPATH=/usr/local/pmix/include:$CPATH \
LD_LIBRARY_PATH=/usr/local/pmix/lib:$LD_LIBRARY_PATH \
PATH=/usr/local/pmix/bin:$PATH
# SLURM PMI2 version 17.02.11
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
bzip2 \
file \
make \
perl \
tar \
wget && \
rm -rf /var/lib/apt/lists/*
RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp https://download.schedmd.com/slurm/slurm-17.02.11.tar.bz2 && \
mkdir -p /var/tmp && tar -x -f /var/tmp/slurm-17.02.11.tar.bz2 -C /var/tmp -j && \
cd /var/tmp/slurm-17.02.11 && ./configure --prefix=/usr/local/slurm-pmi2 && \
make -C contribs/pmi2 install && \
rm -rf /var/tmp/slurm-17.02.11.tar.bz2 /var/tmp/slurm-17.02.11
# OpenMPI version 4.0.1
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
bzip2 \
file \
hwloc \
libnuma-dev \
make \
openssh-client \
perl \
tar \
wget && \
rm -rf /var/lib/apt/lists/*
RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp https://www.open-mpi.org/software/ompi/v4.0/downloads/openmpi-4.0.1.tar.bz2 && \
mkdir -p /var/tmp && tar -x -f /var/tmp/openmpi-4.0.1.tar.bz2 -C /var/tmp -j && \
cd /var/tmp/openmpi-4.0.1 && ./configure --prefix=/usr/local/openmpi --disable-getpwuid --enable-orterun-prefix-by-default --without-cuda --with-pmi=/usr/local/slurm-pmi2 --with-pmix=/usr/local/pmix --without-verbs --with-ucx=/usr/local/ucx && \
make -j$(nproc) && \
make -j$(nproc) install && \
rm -rf /var/tmp/openmpi-4.0.1.tar.bz2 /var/tmp/openmpi-4.0.1
ENV LD_LIBRARY_PATH=/usr/local/openmpi/lib:$LD_LIBRARY_PATH \
PATH=/usr/local/openmpi/bin:$PATH
RUN mkdir /mnt/0 && \
echo 'plm_rsh_agent = false' >> /mnt/0/openmpi-mca-params.conf
LABEL org.opengeosys.mpi=openmpi \
org.opengeosys.mpi.version=4.0.1
# OGS base building block
# Python
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
python3 \
python3-dev && \
rm -rf /var/lib/apt/lists/*
# pip
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
python3-pip \
python3-setuptools \
python3-wheel && \
rm -rf /var/lib/apt/lists/*
RUN pip3 install virtualenv pre-commit cmake-format
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends software-properties-common && \
apt-add-repository ppa:git-core/ppa -y && \
apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
git \
git-lfs \
ninja-build && \
rm -rf /var/lib/apt/lists/*
RUN apt-get update && \
apt-get install -y dirmngr --install-recommends && \
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6B05F25D762E3157 && \
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \
git lfs install && \
mkdir -p /apps /scratch /lustre /work /projects /data
# CMake version 3.12.4
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
make \
wget && \
rm -rf /var/lib/apt/lists/*
RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp https://cmake.org/files/v3.12/cmake-3.12.4-Linux-x86_64.sh && \
mkdir -p /usr/local && \
/bin/sh /var/tmp/cmake-3.12.4-Linux-x86_64.sh --prefix=/usr/local --skip-license && \
rm -rf /var/tmp/cmake-3.12.4-Linux-x86_64.sh
ENV PATH=/usr/local/bin:$PATH
# Boost version 1.66.0
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
bzip2 \
libbz2-dev \
tar \
wget \
zlib1g-dev && \
rm -rf /var/lib/apt/lists/*
RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.bz2 && \
mkdir -p /var/tmp && tar -x -f /var/tmp/boost_1_66_0.tar.bz2 -C /var/tmp -j && \
cd /var/tmp/boost_1_66_0 && ./bootstrap.sh --prefix=/usr/local/boost --without-libraries=python && \
./b2 -j$(nproc) -q install && \
rm -rf /var/tmp/boost_1_66_0.tar.bz2 /var/tmp/boost_1_66_0
ENV LD_LIBRARY_PATH=/usr/local/boost/lib:$LD_LIBRARY_PATH
ENV BOOST_ROOT=/usr/local/boost
# Eigen version 3.3.4
# http://bitbucket.org/eigen/eigen/get/3.3.4.tar.gz
RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp http://bitbucket.org/eigen/eigen/get/3.3.4.tar.gz && \
mkdir -p /var/tmp && tar -x -f /var/tmp/3.3.4.tar.gz -C /var/tmp -z && \
mkdir -p /var/tmp/eigen-eigen-*/build && cd /var/tmp/eigen-eigen-*/build && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/eigen /var/tmp/eigen-eigen-* && \
cmake --build /var/tmp/eigen-eigen-*/build --target all -- -j$(nproc) && \
cmake --build /var/tmp/eigen-eigen-*/build --target install -- -j$(nproc) && \
rm -rf /var/tmp/eigen-eigen-* /var/tmp/3.3.4.tar.gz
ENV Eigen3_DIR=/usr/local/eigen \
Eigen3_ROOT=/usr/local/eigen
# VTK 8.2.0
# https://www.vtk.org/files/release/8.2/VTK-8.2.0.tar.gz
RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp https://www.vtk.org/files/release/8.2/VTK-8.2.0.tar.gz && \
mkdir -p /var/tmp && tar -x -f /var/tmp/VTK-8.2.0.tar.gz -C /var/tmp -z && \
mkdir -p /var/tmp/VTK-8.2.0/build && cd /var/tmp/VTK-8.2.0/build && CC=mpicc CXX=mpicxx F77=mpif77 F90=mpif90 FC=mpifort cmake -DCMAKE_INSTALL_PREFIX=/usr/local/vtk -DVTK_Group_StandAlone=OFF -DVTK_Group_Rendering=OFF -DModule_vtkIOXML=ON -D CMAKE_BUILD_TYPE=Release -D Module_vtkIOParallelXML=ON -D Module_vtkParallelMPI=ON /var/tmp/VTK-8.2.0 && \
cmake --build /var/tmp/VTK-8.2.0/build --target all -- -j$(nproc) && \
cmake --build /var/tmp/VTK-8.2.0/build --target install -- -j$(nproc) && \
rm -rf /var/tmp/VTK-8.2.0 /var/tmp/VTK-8.2.0.tar.gz
RUN echo "/usr/local/vtk/lib" >> /etc/ld.so.conf.d/hpccm.conf && ldconfig
ENV VTK_ROOT=/usr/local/vtk
# PETSc 3.11.3
# http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.11.3.tar.gz
RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.11.3.tar.gz && \
mkdir -p /var/tmp && tar -x -f /var/tmp/petsc-lite-3.11.3.tar.gz -C /var/tmp -z && \
cd /var/tmp/petsc-3.11.3 && \
sed -i -- 's/python/python3/g' configure && \
cd /var/tmp/petsc-3.11.3 && CC=mpicc CXX=mpicxx ./configure --prefix=/usr/local/petsc CC=mpicc CXX=mpicxx --CFLAGS='-O3' --CXXFLAGS='-O3' --FFLAGS='-O3' --with-debugging=no --with-fc=0 --download-f2cblaslapack=1 && \
make -j$(nproc) && \
make -j$(nproc) install && \
rm -rf /var/tmp/petsc-3.11.3 /var/tmp/petsc-lite-3.11.3.tar.gz
RUN echo "/usr/local/petsc/lib" >> /etc/ld.so.conf.d/hpccm.conf && ldconfig
ENV PETSC_DIR=/usr/local/petsc
LABEL petsc.version=3.11.3
# CVode version 2.8.2
# https://github.com/ufz/cvode/archive/2.8.2.tar.gz
RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp https://github.com/ufz/cvode/archive/2.8.2.tar.gz && \
mkdir -p /var/tmp && tar -x -f /var/tmp/2.8.2.tar.gz -C /var/tmp -z && \
mkdir -p /var/tmp/cvode-2.8.2/build && cd /var/tmp/cvode-2.8.2/build && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/cvode -D CMAKE_INSTALL_PREFIX=/usr/local/cvode -D EXAMPLES_INSTALL=OFF -D BUILD_SHARED_LIBS=OFF -D CMAKE_POSITION_INDEPENDENT_CODE=ON /var/tmp/cvode-2.8.2 && \
cmake --build /var/tmp/cvode-2.8.2/build --target all -- -j$(nproc) && \
cmake --build /var/tmp/cvode-2.8.2/build --target install -- -j$(nproc) && \
rm -rf /var/tmp/cvode-2.8.2 /var/tmp/2.8.2.tar.gz
ENV CVODE_ROOT=/usr/local/cvode
# pip
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
python3-pip \
python3-setuptools \
python3-wheel && \
rm -rf /var/lib/apt/lists/*
RUN pip3 install scif
ARG OGS_COMMIT_HASH=b926a8813c92d85f005fcac429597d659c8e0973
# SCI-F "ogs"
COPY _out/docker/ubuntu_18.04/ogs-b926a881/openmpi-4.0.1/system/cmake-d41d8cd9/ogs.scif /scif/recipes/ogs.scif
RUN scif install /scif/recipes/ogs.scif
FROM ubuntu:18.04
# pip
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
python3-pip \
python3-setuptools \
python3-wheel && \
rm -rf /var/lib/apt/lists/*
RUN pip3 install scif
# GNU compiler runtime
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
libgomp1 && \
rm -rf /var/lib/apt/lists/*
# UCX
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
libbinutils && \
rm -rf /var/lib/apt/lists/*
COPY --from=build /usr/local/ucx /usr/local/ucx
ENV LD_LIBRARY_PATH=/usr/local/ucx/lib:$LD_LIBRARY_PATH \
PATH=/usr/local/ucx/bin:$PATH
# PMIX
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
libevent-2.* \
libevent-pthreads-2.* && \
rm -rf /var/lib/apt/lists/*
COPY --from=build /usr/local/pmix /usr/local/pmix
ENV CPATH=/usr/local/pmix/include:$CPATH \
LD_LIBRARY_PATH=/usr/local/pmix/lib:$LD_LIBRARY_PATH \
PATH=/usr/local/pmix/bin:$PATH
# SLURM PMI2
COPY --from=build /usr/local/slurm-pmi2 /usr/local/slurm-pmi2
# OpenMPI
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
hwloc \
openssh-client && \
rm -rf /var/lib/apt/lists/*
COPY --from=build /usr/local/openmpi /usr/local/openmpi
ENV LD_LIBRARY_PATH=/usr/local/openmpi/lib:$LD_LIBRARY_PATH \
PATH=/usr/local/openmpi/bin:$PATH
# OGS base building block
# Python
RUN apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
python3 && \
rm -rf /var/lib/apt/lists/*
RUN mkdir -p /apps /scratch /lustre /work /projects
# Boost
COPY --from=build /usr/local/boost /usr/local/boost
ENV LD_LIBRARY_PATH=/usr/local/boost/lib:$LD_LIBRARY_PATH
# VTK 8.2.0
COPY --from=build /usr/local/vtk /usr/local/vtk
RUN echo "/usr/local/vtk/lib" >> /etc/ld.so.conf.d/hpccm.conf && ldconfig
ENV VTK_ROOT=/usr/local/vtk
# PETSc 3.11.3
COPY --from=build /usr/local/petsc /usr/local/petsc
RUN echo "/usr/local/petsc/lib" >> /etc/ld.so.conf.d/hpccm.conf && ldconfig
ENV PETSC_DIR=/usr/local/petsc
LABEL petsc.version=3.11.3
%appenv ogs
export PATH=/scif/apps/ogs/bin:$PATH
%apphelp ogs
OpenGeoSys build from repo ufz/ogs, branch master
%appinstall ogs
mkdir -p /scif/apps/ogs && cd /scif/apps/ogs
GIT_LFS_SKIP_SMUDGE=1 git clone --branch master https://github.com/ufz/ogs src
(cd src && git reset --hard b926a8813c92d85f005fcac429597d659c8e0973)
(cd src && git fetch --tags)
mkdir -p /scif/apps/ogs/build && cd /scif/apps/ogs/build && CC=mpicc CXX=mpicxx F77=mpif77 F90=mpif90 FC=mpifort cmake -DCMAKE_INSTALL_PREFIX=/scif/apps/ogs -DOGS_USE_CVODE=ON -G Ninja -DCMAKE_INSTALL_PREFIX=/scif/apps/ogs -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=OFF -DOGS_USE_PETSC=ON /scif/apps/ogs/src
cmake --build /scif/apps/ogs/build --target install -- -j4
rm -rf /scif/apps/ogs/build
rm -rf /scif/apps/ogs/src
%applabels ogs
cmake_args ' -DOGS_USE_CVODE=ON -G Ninja -DCMAKE_INSTALL_PREFIX=/scif/apps/ogs -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=OFF -DOGS_USE_PETSC=ON'
version ufz/ogs@master (b926a8813c92d85f005fcac429597d659c8e0973)
%apprun ogs
exec ogs "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment