ARG BASE=nvidia/cuda:11.1.1-devel-ubuntu20.04 FROM $BASE RUN apt-get update && apt-get install -y \ bc \ git \ wget \ ccache \ python3 \ libelf-dev \ g++-multilib \ && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* ARG NPROC=8 RUN KEYDUMP_URL=https://cloud.cees.ornl.gov/download && \ KEYDUMP_FILE=keydump && \ wget --quiet ${KEYDUMP_URL}/${KEYDUMP_FILE} && \ wget --quiet ${KEYDUMP_URL}/${KEYDUMP_FILE}.sig && \ gpg --import ${KEYDUMP_FILE} && \ gpg --verify ${KEYDUMP_FILE}.sig ${KEYDUMP_FILE} && \ rm ${KEYDUMP_FILE}* ARG CMAKE_VERSION=3.27.7 ENV CMAKE_DIR=/opt/cmake RUN 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 && \ wget --quiet ${CMAKE_URL}/${CMAKE_SHA256} && \ wget --quiet ${CMAKE_URL}/${CMAKE_SHA256}.asc && \ wget --quiet ${CMAKE_URL}/${CMAKE_SCRIPT} && \ gpg --verify ${CMAKE_SHA256}.asc ${CMAKE_SHA256} && \ grep -i ${CMAKE_SCRIPT} ${CMAKE_SHA256} | sed -e s/linux/Linux/ | sha256sum --check && \ mkdir -p ${CMAKE_DIR} && \ sh ${CMAKE_SCRIPT} --skip-license --prefix=${CMAKE_DIR} && \ rm ${CMAKE_SCRIPT} ENV PATH=${CMAKE_DIR}/bin:$PATH ARG LLVM_VERSION=llvmorg-17.0.3 ENV LLVM_DIR=/opt/llvm RUN LLVM_URL=https://github.com/llvm/llvm-project/archive &&\ LLVM_ARCHIVE=${LLVM_VERSION}.tar.gz &&\ SCRATCH_DIR=/scratch && mkdir -p ${SCRATCH_DIR} && cd ${SCRATCH_DIR} && \ wget --quiet ${LLVM_URL}/${LLVM_ARCHIVE} && \ mkdir llvm-project && \ tar -xf ${LLVM_ARCHIVE} -C llvm-project --strip-components=1 && \ cd llvm-project && \ mkdir build && cd build && \ cmake \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=$LLVM_DIR \ -DCMAKE_C_COMPILER=gcc \ -DCMAKE_CXX_COMPILER=g++ \ -DLLVM_ENABLE_PROJECTS="clang" \ -DLLVM_ENABLE_RUNTIMES="openmp" \ -DCLANG_OPENMP_NVPTX_DEFAULT_ARCH=sm_70 \ -DLIBOMPTARGET_NVPTX_COMPUTE_CAPABILITIES=70 \ ../llvm && \ make -j${NPROC} && \ make install && \ rm -rf ${SCRATCH_DIR} ENV PATH=${LLVM_DIR}/bin:$PATH ENV LD_LIBRARY_PATH=${LLVM_DIR}/lib:$LD_LIBRARY_PATH