Skip to content

Commit

Permalink
added container to build traccc/SYCL for AMD GPU backend on Alma9 (#126)
Browse files Browse the repository at this point in the history
  • Loading branch information
flg authored Nov 12, 2024
1 parent 6dc2f5f commit d1d6061
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 0 deletions.
1 change: 1 addition & 0 deletions .github/workflows/build-images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ jobs:
- ubuntu2404_rocm_oneapi
- ubuntu2404_oneapi
- alma9-base
- alma9_rocm_oneapi
- alma9_cuda_oneapi
steps:
- uses: actions/checkout@v4
Expand Down
48 changes: 48 additions & 0 deletions alma9_rocm_oneapi/Dockerfile
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
7 changes: 7 additions & 0 deletions alma9_rocm_oneapi/oneapi.repo
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
7 changes: 7 additions & 0 deletions alma9_rocm_oneapi/rocm.repo
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
30 changes: 30 additions & 0 deletions alma9_rocm_oneapi/setenv.sh
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

0 comments on commit d1d6061

Please sign in to comment.