-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
added container to build traccc/SYCL for AMD GPU backend on Alma9 (#126)
- Loading branch information
Showing
5 changed files
with
93 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
# Docker machinery, part of the ACTS project | ||
# | ||
# (c) 2024 CERN for the benefit of the ACTS project | ||
# | ||
# Mozilla Public License Version 2.0 | ||
|
||
FROM cern/alma9-base:latest | ||
|
||
LABEL description="CERN AlmaLinux 9 with Acts dependencies and ROCm/HIP + oneAPI" | ||
LABEL version="1" | ||
|
||
RUN dnf install -y https://linuxsoft.cern.ch/wlcg/el9/x86_64/HEP_OSlibs-9.1.0-2.el9.x86_64.rpm \ | ||
&& dnf -y clean all | ||
|
||
# Set up gcc 13. | ||
RUN dnf install -y gcc-toolset-13 | ||
|
||
# Install boost development package | ||
RUN dnf install -y boost boost-devel | ||
|
||
# Set up the ROCm repository. | ||
COPY rocm.repo /etc/yum.repos.d/rocm.repo | ||
ARG ROCM_VERSION=6.1.0 | ||
|
||
# Install ROCm/HIP: latest version supported by the CodePlay plugin | ||
RUN dnf install -y rocm-hip-runtime-devel | ||
ENV HIP_PLATFORM=amd | ||
|
||
# Set up the oneAPI repository. | ||
COPY oneapi.repo /etc/yum.repos.d/oneapi.repo | ||
|
||
# Install oneAPI. | ||
ARG ONEAPI_VERSION=2024.2 | ||
RUN dnf install -y intel-oneapi-compiler-dpcpp-cpp-${ONEAPI_VERSION} | ||
|
||
# Install the CodePlay AMD plugin on top of oneAPI. | ||
RUN ONEAPI_INSTALLED_VERSION=$(/opt/intel/oneapi/compiler/latest/bin/icpx --version | grep -oP '(?<=Intel\(R\) oneAPI DPC\+\+\/C\+\+ Compiler )[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+') && \ | ||
echo "Installing CodePlay for OneAPI ${ONEAPI_INSTALLED_VERSION}" && \ | ||
curl -SL "https://developer.codeplay.com/api/v1/products/download?product=oneapi&variant=amd&version=${ONEAPI_INSTALLED_VERSION}&filters[]=${ROCM_VERSION}&filters[]=linux" \ | ||
-o plugin.sh && \ | ||
sh plugin.sh --install-dir /opt/intel/oneapi --yes && \ | ||
rm plugin.sh | ||
|
||
# By default the environment with ROCm, OneAPI SYCL compiler, and AMD backend plugin is loaded | ||
ADD --chmod=700 setenv.sh / | ||
# Make sure it's executable | ||
RUN chmod +x /setenv.sh | ||
ENTRYPOINT /setenv.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
[oneAPI] | ||
name=Intel oneAPI repository | ||
baseurl=https://yum.repos.intel.com/oneapi | ||
enabled=1 | ||
gpgcheck=1 | ||
repo_gpgcheck=1 | ||
gpgkey=https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
[ROCm-6.1.0] | ||
name=ROCm6.1.0 | ||
baseurl=https://repo.radeon.com/rocm/el9/6.1/main | ||
enabled=1 | ||
priority=50 | ||
gpgcheck=1 | ||
gpgkey=https://repo.radeon.com/rocm/rocm.gpg.key |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
#!/usr/bin/env bash | ||
GCCDIR=/opt/rh/gcc-toolset-13/root | ||
|
||
# Set up gcc 13. | ||
source ${GCCDIR}/../enable | ||
# Set up SYCL compiler, including AMD backend. | ||
source /opt/intel/oneapi/setvars.sh --include-intel-llvm | ||
|
||
# Set up the compilers to use (with CMake). | ||
export CC="`which clang` --gcc-toolchain=${GCCDIR}" | ||
export CXX="`which clang++` --gcc-toolchain=${GCCDIR}" | ||
|
||
# Set up the compiler and its options for SYCL | ||
# gfx90a is the GPU at RAL | ||
export SYCLCXX="${CXX} -fsycl" | ||
export SYCLFLAGS="-fsycl-targets=amd_gpu_gfx90a -Xclang -opaque-pointers" | ||
|
||
# HIP_VISIBLE_DEVICES=all does not work | ||
export HIP_VISIBLE_DEVICES=0,1 | ||
|
||
# Clean | ||
unset GCCDIR | ||
|
||
# For user's convenience: | ||
export TRACCC_URL="https://github.com/acts-project/traccc" | ||
echo "git clone $TRACCC_URL" | ||
echo "cmake -S . -B buildamd -DTRACCC_BUILD_SYCL=ON -DTRACCC_USE_ROOT=OFF -DCMAKE_INSTALL_PREFIX:PATH=./installed" | ||
echo "cmake --build buildamd --target install" | ||
|
||
bash |