mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-28 14:15:19 -04:00
103 lines
3.8 KiB
Text
103 lines
3.8 KiB
Text
#
|
|
# This file was created by generate_dockerfiles.py.
|
|
# Usage: docker build -f ./Dockerfile.test_intel-psmp ../../
|
|
#
|
|
|
|
FROM intel/oneapi-hpckit:2021.4-devel-ubuntu18.04
|
|
|
|
ENV PATH=/opt/intel/oneapi/compiler/2021.4.0/linux/bin/intel64:/opt/intel/oneapi/mpi/2021.4.0/bin:${PATH}
|
|
ENV LD_LIBRARY_PATH=/opt/intel/oneapi/mpi/2021.4.0/lib/release:/opt/intel/oneapi/mpi/2021.4.0/lib:/opt/intel/oneapi/mpi/2021.4.0/libfabric/lib:/opt/intel/oneapi/mkl/2021.4.0/lib/intel64:/opt/intel/oneapi/compiler/2021.4.0/linux/compiler/lib/intel64_lin:${LD_LIBRARY_PATH}
|
|
ENV MKLROOT=/opt/intel/oneapi/mkl/2021.4.0
|
|
ENV I_MPI_ROOT=/opt/intel/oneapi/mpi/2021.4.0
|
|
ENV FI_PROVIDER_PATH='/opt/intel/oneapi/mpi/2021.4.0/libfabric/lib/prov'
|
|
# Install requirements for the toolchain.
|
|
WORKDIR /opt/cp2k-toolchain
|
|
COPY ./tools/toolchain/install_requirements*.sh ./
|
|
RUN ./install_requirements.sh ubuntu
|
|
|
|
# Install the toolchain.
|
|
RUN mkdir scripts
|
|
COPY ./tools/toolchain/scripts/VERSION \
|
|
./tools/toolchain/scripts/parse_if.py \
|
|
./tools/toolchain/scripts/tool_kit.sh \
|
|
./tools/toolchain/scripts/common_vars.sh \
|
|
./tools/toolchain/scripts/signal_trap.sh \
|
|
./tools/toolchain/scripts/get_openblas_arch.sh \
|
|
./scripts/
|
|
COPY ./tools/toolchain/install_cp2k_toolchain.sh .
|
|
RUN ./install_cp2k_toolchain.sh \
|
|
--with-intel \
|
|
--with-intelmpi \
|
|
--with-libint=no \
|
|
--with-elpa=no \
|
|
--with-quip=no \
|
|
--with-spfft=no \
|
|
--with-sirius=no \
|
|
--dry-run
|
|
|
|
# Dry-run leaves behind config files for the followup install scripts.
|
|
# This breaks up the lengthy installation into smaller docker build steps.
|
|
COPY ./tools/toolchain/scripts/stage0/ ./scripts/stage0/
|
|
RUN ./scripts/stage0/install_stage0.sh && rm -rf ./build
|
|
|
|
COPY ./tools/toolchain/scripts/stage1/ ./scripts/stage1/
|
|
RUN ./scripts/stage1/install_stage1.sh && rm -rf ./build
|
|
|
|
COPY ./tools/toolchain/scripts/stage2/ ./scripts/stage2/
|
|
RUN ./scripts/stage2/install_stage2.sh && rm -rf ./build
|
|
|
|
COPY ./tools/toolchain/scripts/stage3/ ./scripts/stage3/
|
|
RUN ./scripts/stage3/install_stage3.sh && rm -rf ./build
|
|
|
|
COPY ./tools/toolchain/scripts/stage4/ ./scripts/stage4/
|
|
RUN ./scripts/stage4/install_stage4.sh && rm -rf ./build
|
|
|
|
COPY ./tools/toolchain/scripts/stage5/ ./scripts/stage5/
|
|
RUN ./scripts/stage5/install_stage5.sh && rm -rf ./build
|
|
|
|
COPY ./tools/toolchain/scripts/stage6/ ./scripts/stage6/
|
|
RUN ./scripts/stage6/install_stage6.sh && rm -rf ./build
|
|
|
|
COPY ./tools/toolchain/scripts/stage7/ ./scripts/stage7/
|
|
RUN ./scripts/stage7/install_stage7.sh && rm -rf ./build
|
|
|
|
COPY ./tools/toolchain/scripts/stage8/ ./scripts/stage8/
|
|
RUN ./scripts/stage8/install_stage8.sh && rm -rf ./build
|
|
|
|
COPY ./tools/toolchain/scripts/arch_base.tmpl \
|
|
./tools/toolchain/scripts/generate_arch_files.sh \
|
|
./scripts/
|
|
RUN ./scripts/generate_arch_files.sh && rm -rf ./build
|
|
|
|
# TODO: Remove --mpiranks=1, see github.com/cp2k/cp2k/issues/2103
|
|
|
|
# Install CP2K using local.psmp.
|
|
WORKDIR /opt/cp2k
|
|
COPY ./Makefile .
|
|
COPY ./src ./src
|
|
COPY ./exts ./exts
|
|
COPY ./tools/build_utils ./tools/build_utils
|
|
RUN /bin/bash -c " \
|
|
mkdir -p arch && \
|
|
ln -vs /opt/cp2k-toolchain/install/arch/local.psmp ./arch/ && \
|
|
echo 'Compiling cp2k...' && \
|
|
source /opt/cp2k-toolchain/install/setup && \
|
|
( make -j ARCH=local VERSION=psmp &> /dev/null || true ) && \
|
|
( [ ! -f ./exe/local/cp2k.psmp ] || ldd ./exe/local/cp2k.psmp | grep -q libmpi )"
|
|
COPY ./data ./data
|
|
COPY ./tests ./tests
|
|
COPY ./tools/regtesting ./tools/regtesting
|
|
|
|
# Run regression tests.
|
|
ARG TESTOPTS="--mpiranks=1"
|
|
COPY ./tools/docker/scripts/test_regtest.sh ./
|
|
RUN /bin/bash -o pipefail -c " \
|
|
TESTOPTS="${TESTOPTS}" \
|
|
./test_regtest.sh 'local' 'psmp' |& tee report.log && \
|
|
rm -rf regtesting"
|
|
|
|
# Output the report if the image is old and was therefore pulled from the build cache.
|
|
CMD cat $(find ./report.log -mmin +10) | sed '/^Summary:/ s/$/ (cached)/'
|
|
ENTRYPOINT []
|
|
|
|
#EOF
|