Skip to content
Snippets Groups Projects
Select Git revision
  • 20a0c828e3a5bcae98d2b504050ed168973fbf64
  • main default protected
  • archer
  • llvm13
4 results

Dockerfile

Blame
  • Dockerfile 2.49 KiB
    ARG MPI_FLAVOR=mpich
    
    FROM debian:12 AS base
    ARG LLVM_VERSION=14
    
    ENV DEBIAN_FRONTEND=noninteractive
    ENV TZ=Europe/Berlin
    ENV PATH=/opt/must/bin:$PATH
    
    RUN apt-get update && apt-get -y -qq --no-install-recommends install \
        build-essential \
        && rm -rf /var/lib/apt/lists/*
    
    RUN apt-get update \
        && apt-get -y -qq --no-install-recommends install \
        cmake \
        curl \
        binutils-dev \
        make \
        automake \
        autotools-dev \
        autoconf \
        libtool \
        zlib1g \
        zlib1g-dev \
        libatomic1 \
        libfabric-dev \
        libxml2-dev \
        python3 \
        python3-pip \
        python3-venv \
        gfortran \
        gcc \
        g++ \
        git \
        graphviz \
        libgtest-dev \
        clang-${LLVM_VERSION} \
        libomp-${LLVM_VERSION}-dev \
        clang-format-${LLVM_VERSION} \
        llvm-${LLVM_VERSION} \
        lldb-${LLVM_VERSION} \
        ninja-build \
        vim \
        openssh-client \
        gdb \
        wget \
        googletest \
        && apt-get -yq clean \
        && rm --recursive --force /var/lib/apt/lists/*
    
    # Ensure that correct LLVM toolset is used
    RUN ln -s /usr/bin/FileCheck-${LLVM_VERSION} /usr/bin/FileCheck
    RUN ln -s /usr/bin/clang-${LLVM_VERSION} /usr/bin/clang
    RUN ln -s /usr/bin/clang++-${LLVM_VERSION} /usr/bin/clang++
    RUN ln -s /usr/bin/clang-format-${LLVM_VERSION} /usr/bin/clang-format
    
    ENV CC=clang
    ENV CXX=clang++
    
    
    FROM base AS base-mpich
    RUN apt-get update \
        && apt-get -y -qq --no-install-recommends install \
        mpich \
        libmpich-dev \
        && apt-get -yq clean \
        && rm --recursive --force /var/lib/apt/lists/*
    
    ENV MPICH_CC=clang
    ENV MPICH_CXX=clang++
    
    
    FROM base AS base-openmpi
    RUN apt-get update \
        && apt-get -y -qq --no-install-recommends install \
        openmpi-bin \
        libopenmpi-dev \
        && apt-get -yq clean \
        && rm --recursive --force /var/lib/apt/lists/*
    
    ENV OMPI_CC=clang
    ENV OMPI_CXX=clang++
    
    
    FROM base-${MPI_FLAVOR} AS final
    ARG MUST_VERSION=1.9.2
    # Build and install MUST
    RUN mkdir -p /opt/must/
    RUN wget https://hpc.rwth-aachen.de/must/files/MUST-v${MUST_VERSION}.tar.gz && \
        tar -xf MUST-v${MUST_VERSION}.tar.gz && cd MUST-v${MUST_VERSION} && \
        mkdir build && \
        cd build && \
        CC=clang CXX=clang++ MPICH_CC=clang MPICH_CXX=clang++ OMPI_CC=clang OMPI_CXX=clang \
          cmake .. -DCMAKE_INSTALL_PREFIX=/opt/must -DUSE_BACKWARD=ON -DENABLE_FORTRAN=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo && \
        make install -j8 install-prebuilds && \
        rm /MUST-v${MUST_VERSION}.tar.gz && \
        rm -r -f /MUST-v${MUST_VERSION}
    
    
    # Run as non-privileged user
    RUN useradd -ms /bin/bash user
    USER user