Skip to content

Commit

Permalink
Update dockerfile and jenkins for Trilinos 13.2
Browse files Browse the repository at this point in the history
  • Loading branch information
sethrj committed Aug 19, 2022
1 parent e7b0568 commit 2f783d2
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 45 deletions.
5 changes: 3 additions & 2 deletions .jenkins
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ pipeline {
dir('build') {
sh '''
cmake \
-GNinja \
-D CMAKE_INSTALL_PREFIX=$FORTRILINOS_DIR \
-D CMAKE_BUILD_TYPE=Debug \
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache \
Expand All @@ -39,7 +40,7 @@ pipeline {
-D ForTrilinos_EXAMPLES=ON \
..
'''
sh 'make -j8 VERBOSE=1'
sh 'ninja -v'
sh 'ctest $CTEST_OPTIONS'
}
}
Expand All @@ -49,7 +50,7 @@ pipeline {
xunit reduceLog: false, tools:[CTest(deleteOutputFiles: true, failIfNotNew: true, pattern: 'build/Testing/**/Test.xml', skipNoTestFiles: false, stopProcessingIfError: true)]
}
success {
sh 'cd build && make install'
sh 'cd build && ninja install'
sh 'rm -rf test_install && mkdir -p test_install'
dir('test_install') {
sh 'cp -r ../example/test-installation .'
Expand Down
60 changes: 17 additions & 43 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,75 +1,50 @@
# Build command:
# $ docker build -t aprokop/fortrilinos-stack:latest -f Dockerfile .
ARG BASE=nvidia/cuda:11.0.3-devel-ubuntu18.04
# $ docker build -t sethrj/fortrilinos-stack:latest -f Dockerfile .
ARG BASE=nvidia/cuda:11.2.2-devel-ubuntu20.04
FROM $BASE

ARG NPROC=8

RUN if test ${NV_CUDA_LIB_VERSION}; then apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub; fi

# Avoid tzdata dialog
ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -yq \
RUN apt-get -yqq update && apt-get install -yq \
autoconf \
bc \
build-essential \
ca-certificates \
ccache \
curl \
environment-modules \
gawk \
gfortran \
g++ \
git \
lcov \
libatlas-base-dev \
libbz2-dev \
python2.7-dev \
tmux \
unzip \
libssl-dev \
mpich \
ninja-build \
python3-dev \
valgrind \
vim \
wget \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

# Install CMake
ENV CMAKE_DIR=/opt/cmake
RUN CMAKE_VERSION=3.23.3 && \
CMAKE_URL=https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION} && \
CMAKE_SCRIPT=cmake-${CMAKE_VERSION}-Linux-x86_64.sh && \
CMAKE_SHA256=cmake-${CMAKE_VERSION}-SHA-256.txt && \
RUN CMAKE_URL=https://github.com/Kitware/CMake/releases/download/v3.23.3/cmake-3.23.3.tar.gz && \
CMAKE_ARCHIVE=cmake.tar.gz && \
SCRATCH_DIR=/scratch && mkdir -p ${SCRATCH_DIR} && cd ${SCRATCH_DIR} && \
wget --quiet ${CMAKE_URL}/${CMAKE_SHA256} && \
wget --quiet ${CMAKE_URL}/${CMAKE_SHA256}.asc && \
wget --quiet ${CMAKE_URL}/${CMAKE_SCRIPT} && \
grep ${CMAKE_SCRIPT} ${CMAKE_SHA256} | sha256sum --check && \
wget --quiet ${CMAKE_URL} --output-document=${CMAKE_ARCHIVE} && \
mkdir -p ${CMAKE_DIR} && \
sh ${CMAKE_SCRIPT} --skip-license --prefix=${CMAKE_DIR} && \
tar -xf ${CMAKE_ARCHIVE} --strip-components=1 && \
./bootstrap --prefix=${CMAKE_DIR} --generator=Ninja && \
ninja install && \
rm -rf ${SCRATCH_DIR}
ENV PATH=${CMAKE_DIR}/bin:$PATH

# Install OpenMPI
ENV OPENMPI_DIR=/opt/openmpi
RUN OPENMPI_VERSION=4.1.4 && \
OPENMPI_VERSION_SHORT=$(echo "$OPENMPI_VERSION" | cut -d. -f1,2) && \
OPENMPI_SHA256=92912e175fd1234368c8730c03f4996fe5942e7479bb1d10059405e7f2b3930d && \
OPENMPI_URL=https://download.open-mpi.org/release/open-mpi/v${OPENMPI_VERSION_SHORT}/openmpi-${OPENMPI_VERSION}.tar.bz2 && \
OPENMPI_ARCHIVE=openmpi-${OPENMPI_VERSION}.tar.bz2 && \
SCRATCH_DIR=/scratch && mkdir -p ${SCRATCH_DIR} && cd ${SCRATCH_DIR} && \
wget --quiet ${OPENMPI_URL} --output-document=${OPENMPI_ARCHIVE} && \
echo "${OPENMPI_SHA256} ${OPENMPI_ARCHIVE}" | sha256sum --check && \
mkdir -p openmpi && \
tar -xf ${OPENMPI_ARCHIVE} -C openmpi --strip-components=1 && \
mkdir -p build && cd build && \
../openmpi/configure --prefix=${OPENMPI_DIR} ${CUDA_OPTIONS} CFLAGS=-w && \
make -j${NPROCS} install && \
rm -rf ${SCRATCH_DIR}
ENV PATH=${OPENMPI_DIR}/bin:$PATH

# Workaround for Kokkos to find libcudart
ENV LD_LIBRARY_PATH=/usr/local/cuda/targets/x86_64-linux/lib:${LD_LIBRARY_PATH}

# Install Trilinos
ENV TRILINOS_DIR=/opt/trilinos
RUN TRILINOS_VERSION=13-2-0 && \
Expand All @@ -81,14 +56,13 @@ RUN TRILINOS_VERSION=13-2-0 && \
tar -xf ${TRILINOS_ARCHIVE} -C trilinos --strip-components=1 && \
mkdir -p build && cd build && \
cmake \
-G Ninja \
-D CMAKE_BUILD_TYPE=RelWithDebInfo \
-D BUILD_SHARED_LIBS=ON \
\
-D CMAKE_INSTALL_PREFIX=${TRILINOS_DIR} \
\
-D TPL_ENABLE_Boost=OFF \
-D TPL_ENABLE_CUDA=ON \
-D TPL_ENABLE_CUDA=OFF \
-D TPL_ENABLE_DLlib=OFF \
-D TPL_ENABLE_MPI=ON \
\
Expand Down Expand Up @@ -129,6 +103,6 @@ RUN TRILINOS_VERSION=13-2-0 && \
-D Tpetra_ENABLE_DEPRECATED_CODE=OFF \
\
../trilinos && \
make -j${NPROC} install && \
ninja -j${NPROC} install && \
rm -rf ${SCRATCH_DIR}
ENV TRILINOS_DIR=/opt/trilinos

0 comments on commit 2f783d2

Please sign in to comment.