Skip to content

Add ROCM in U24 images #31

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jan 13, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/workflows/image_creator.yml
Original file line number Diff line number Diff line change
@@ -156,6 +156,8 @@ jobs:
type=raw, gcc-13_minimal_latest
type=raw, clang-18_minimal_latest
type=raw, clang-18_minimal_{{date 'YYYYMMDD'}}
type=raw, clang-19_minimal_latest
type=raw, clang-19_minimal_{{date 'YYYYMMDD'}}

- name: Create manifest list and push
if: ${{ inputs.minimal_version }}
@@ -288,14 +290,19 @@ jobs:
type=raw, gcc_full_latest
type=raw, clang_full_latest
type=raw, cuda_full_latest
type=raw, rocm_full_latest
type=raw, gcc-14_full_latest
type=raw, gcc-14_full_{{date 'YYYYMMDD'}}
type=raw, gcc-13_full_latest
type=raw, gcc-13_full_{{date 'YYYYMMDD'}}
type=raw, clang-18_full_latest
type=raw, clang-18_full_{{date 'YYYYMMDD'}}
type=raw, clang-19_full_latest
type=raw, clang-19_full_{{date 'YYYYMMDD'}}
type=raw, cuda-126_full_latest
type=raw, cuda-126_full_{{date 'YYYYMMDD'}}
type=raw, rocm-631_full_latest
type=raw, rocm-631_full_{{date 'YYYYMMDD'}}

- name: Create manifest list and push
working-directory: /tmp/digests
26 changes: 24 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -5,8 +5,10 @@ This branch contains the workflow and dockerfiles to create
images with Ubuntu 24.04 and:
- GCC 14
- GCC 13
- CLang 19
- CLang 18
- CUDA 12.6 (full only)
- ROCM 6.3.1 (full/AMD64 only)

Two available architectures:
- AMD64
@@ -40,14 +42,18 @@ source /root/scripts/use_gcc-13.sh
source /root/scripts/use_gcc-14.sh
```
```bash
# To use default clang/clang++ (Clang 18):
# To use default clang/clang++ (Clang 19):
source /root/scripts/use_clang.sh
```
```bash
# To use clang/clang++ 18:
source /root/scripts/use_clang-18.sh
```
```bash
# To use clang/clang++ 19:
source /root/scripts/use_clang-19.sh
```
```bash
# To use OpenMPI:
source /root/scripts/use_openmpi.sh
```
@@ -63,10 +69,26 @@ source /root/scripts/use_mpich.sh
source /root/scripts/use_cuda.sh
```
```bash
# To use CUDA 126:
# To use CUDA 12.6:
source /root/scripts/use_cuda-126.sh
```
```bash
# To use default ROCM:
source /root/scripts/use_rocm.sh
```
```bash
# To use ROCM 6.3.1:
source /root/scripts/use_rocm-631.sh
```
```bash
# To use default Clang to compile CUDA part:
source /root/scripts/use_clang_cuda.sh
```
```bash
# To use Clang 19 to compile CUDA part:
source /root/scripts/use_clang-19_cuda.sh
```
```bash
# To use Clang 18 with toolchain GCC 13:
# (usefull to build cuda code with clang)
source /root/scripts/use_clang-18-wtc-gcc-13.sh
6 changes: 4 additions & 2 deletions dockerfiles/doc/Dockerfile
Original file line number Diff line number Diff line change
@@ -9,6 +9,8 @@ ARG TZ=Europe/Paris
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

RUN apt-get update -y \
RUN apt-get update \
&& apt-get install -y texlive-full graphviz python3-sphinx python3-breathe python3-exhale doxygen \
&& rm -rf /var/lib/apt/lists/*
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /var/cache/* \
&& rm -rf /var/log/*
57 changes: 18 additions & 39 deletions dockerfiles/full/Dockerfile
Original file line number Diff line number Diff line change
@@ -8,45 +8,6 @@ ARG TZ=Europe/Paris
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

# On installe les packages pour compiler Arcane.
# À noter que CUDA 12.6 est compatible uniquement avec g++-13 max et clang-18 max.
RUN apt-get update -y \
&& apt-get install -y --no-install-recommends \
googletest libgtest-dev \
swig \
libhypre-dev \
libpetsc-real-dev \
libtrilinos-teuchos-dev libtrilinos-epetra-dev \
libtrilinos-tpetra-dev libtrilinos-kokkos-dev libtrilinos-ifpack2-dev \
libtrilinos-ifpack-dev libtrilinos-amesos-dev libtrilinos-galeri-dev \
libtrilinos-xpetra-dev libtrilinos-epetraext-dev \
libtrilinos-triutils-dev libtrilinos-thyra-dev \
libtrilinos-kokkos-kernels-dev libtrilinos-rtop-dev \
libtrilinos-isorropia-dev libtrilinos-belos-dev \
libtrilinos-ifpack-dev libtrilinos-anasazi-dev \
libtrilinos-amesos2-dev libtrilinos-shards-dev libtrilinos-muelu-dev \
libtrilinos-intrepid2-dev libtrilinos-teko-dev libtrilinos-sacado-dev \
libtrilinos-stratimikos-dev libtrilinos-shylu-dev \
libtrilinos-zoltan-dev libtrilinos-zoltan2-dev \
libtrilinos-aztecoo-dev libtrilinos-ml-dev \
dpkg-dev \
valgrind \
pd-bsaylor \
libosmesa6-dev \
libptscotch-dev \
libexpat1-dev \
libudunits2-dev \
libbz2-dev \
liblz4-dev \
libpapi-dev \
libarchive-dev \
libotf2-trace-dev \
\
&& rm -rf /var/lib/apt/lists/*

#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

# Copie des scripts de construction d'image.
COPY build_scripts/ /root/build_scripts/

@@ -56,6 +17,12 @@ COPY scripts/ /root/scripts/
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

# Installation des packages avec apt.
RUN /root/build_scripts/full_apt.sh

#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

# Installation de IceT.
RUN /root/build_scripts/icet.sh

@@ -70,6 +37,18 @@ ENV LD_LIBRARY_PATH="/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

# Création de clang-19_cuda.
RUN /root/build_scripts/clang-19_cuda.sh

#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

# Installation de ROCM.
RUN /root/build_scripts/rocm.sh

#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

# Installation de AdaptiveCPP.
RUN /root/build_scripts/adaptivecpp.sh

8 changes: 5 additions & 3 deletions dockerfiles/full/build_scripts/adaptivecpp.sh
Original file line number Diff line number Diff line change
@@ -19,9 +19,9 @@ apt-get update
apt-get -y install \
libboost-fiber-dev \
libboost-context-dev \
libomp-18-dev \
llvm-18-dev \
libclang-18-dev
libomp-19-dev \
llvm-19-dev \
libclang-19-dev

cmake \
-S .. \
@@ -38,4 +38,6 @@ cmake --build . --target install
# Cleanup
cd /
rm -rf /var/lib/apt/lists/*
rm -rf /var/cache/*
rm -rf /var/log/*
rm -rf /tmp/*
12 changes: 12 additions & 0 deletions dockerfiles/full/build_scripts/clang-19_cuda.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/sh
set -e

# Script permettant de créer un launcher de clang++-19 pour compiler
# les parties CUDA avec Clang.
# Cela permet de compiler Arcane avec une autre version de Clang
# pour les fichiers c++ classiques facilement.

#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

update-alternatives --install /usr/bin/clang++_cuda clang++_cuda /usr/bin/clang++-19 92
6 changes: 5 additions & 1 deletion dockerfiles/full/build_scripts/cuda.sh
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ if [ "$ARCH" = "x86_64" ]; then
elif [ "$ARCH" = "aarch64" ]; then
ARCH_A="sbsa"
else
exit 1;
exit 1
fi

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/${ARCH_A}/cuda-keyring_1.1-1_all.deb
@@ -37,10 +37,14 @@ apt-get -y install \
cuda-toolkit-12-6-config-common \
libcurand-dev-12-6

/usr/local/cuda/bin/nvcc --version

#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

# Cleanup
cd /
rm -rf /var/lib/apt/lists/*
rm -rf /var/cache/*
rm -rf /var/log/*
rm -rf /tmp/*
47 changes: 47 additions & 0 deletions dockerfiles/full/build_scripts/full_apt.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/bin/sh
set -e

# On installe les packages pour compiler Arcane.

#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

apt-get update
apt-get install -y --no-install-recommends \
googletest libgtest-dev \
swig \
libhypre-dev \
libpetsc-real-dev \
libtrilinos-teuchos-dev libtrilinos-epetra-dev \
libtrilinos-tpetra-dev libtrilinos-kokkos-dev libtrilinos-ifpack2-dev \
libtrilinos-ifpack-dev libtrilinos-amesos-dev libtrilinos-galeri-dev \
libtrilinos-xpetra-dev libtrilinos-epetraext-dev \
libtrilinos-triutils-dev libtrilinos-thyra-dev \
libtrilinos-kokkos-kernels-dev libtrilinos-rtop-dev \
libtrilinos-isorropia-dev libtrilinos-belos-dev \
libtrilinos-ifpack-dev libtrilinos-anasazi-dev \
libtrilinos-amesos2-dev libtrilinos-shards-dev libtrilinos-muelu-dev \
libtrilinos-intrepid2-dev libtrilinos-teko-dev libtrilinos-sacado-dev \
libtrilinos-stratimikos-dev libtrilinos-shylu-dev \
libtrilinos-zoltan-dev libtrilinos-zoltan2-dev \
libtrilinos-aztecoo-dev libtrilinos-ml-dev \
dpkg-dev \
valgrind \
pd-bsaylor \
libosmesa6-dev \
libptscotch-dev \
libexpat1-dev \
libudunits2-dev \
libbz2-dev \
liblz4-dev \
libpapi-dev \
libarchive-dev \
libotf2-trace-dev

#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

# Cleanup
rm -rf /var/lib/apt/lists/*
rm -rf /var/cache/*
rm -rf /var/log/*
43 changes: 43 additions & 0 deletions dockerfiles/full/build_scripts/rocm.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/bin/sh
set -e

# Script permettant d'installer ROCM.

#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

# Initialisation
cd /tmp
ARCH=`uname -m`

if [ "$ARCH" = "x86_64" ]; then
ARCH_A="amd64"
elif [ "$ARCH" = "aarch64" ]; then
exit 0
else
exit 1
fi

UBUNTU_NAME="noble"
ROCM_VERSION="6.3.1"

mkdir --parents --mode=0755 /etc/apt/keyrings
wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | gpg --dearmor | tee /etc/apt/keyrings/rocm.gpg > /dev/null
echo "deb [arch=${ARCH_A} signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/amdgpu/${ROCM_VERSION}/ubuntu ${UBUNTU_NAME} main" | tee /etc/apt/sources.list.d/amdgpu.list
echo "deb [arch=${ARCH_A} signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/${ROCM_VERSION} ${UBUNTU_NAME} main" | tee --append /etc/apt/sources.list.d/rocm.list
echo 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' | tee /etc/apt/preferences.d/rocm-pin-600

apt-get update
apt-get install -y rocm-hip-runtime-dev rocprim-dev roctracer-dev rocm-core

hipcc --version

#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

# Cleanup
cd /
rm -rf /var/lib/apt/lists/*
rm -rf /var/cache/*
rm -rf /var/log/*
rm -rf /tmp/*
6 changes: 4 additions & 2 deletions dockerfiles/full/build_scripts/vtk.sh
Original file line number Diff line number Diff line change
@@ -9,13 +9,13 @@ set -e
# VTK est trop long à compiler sur les machines GH/qemu/ARM64.
ARCH=`uname -m`
if [ "$ARCH" = "aarch64" ]; then
apt-get update -y
apt-get update
apt-get install -y libvtk9-dev
rm -rf /var/lib/apt/lists/*
exit 0
fi

apt-get update -y
apt-get update
apt-get install -y mesa-common-dev mesa-utils

# Initialisation
@@ -44,4 +44,6 @@ cmake --build /tmp/build --target install
# Cleanup
cd /
rm -rf /var/lib/apt/lists/*
rm -rf /var/cache/*
rm -rf /var/log/*
rm -rf /tmp/*
1 change: 1 addition & 0 deletions dockerfiles/full/scripts/default_alternatives_full.sh
Original file line number Diff line number Diff line change
@@ -10,3 +10,4 @@ echo "Define default alternatives (full image)"
echo "---------------------------------------------------------------------------"

. /root/scripts/use_cuda-126.sh
. /root/scripts/use_rocm-631.sh
15 changes: 15 additions & 0 deletions dockerfiles/full/scripts/use_clang-19_cuda.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/sh

# Script permettant de configurer CLang 19 de manière à pouvoir compiler les
# parties CUDA avec Clang.

#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

echo "---------------------------------------------------------------------------"
echo "Configure Clang and CUDA to compile .cu with clang++-19"
echo "---------------------------------------------------------------------------"

. /root/scripts/use_cuda-126.sh

update-alternatives --set clang++_cuda /usr/bin/clang++-19
10 changes: 10 additions & 0 deletions dockerfiles/full/scripts/use_clang_cuda.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/sh

# Script permettant de configurer CLang de manière à pouvoir compiler les
# parties CUDA avec Clang.

#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

. /root/scripts/use_clang-19_cuda.sh

Loading