Skip to content
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

Add ROCM in U22 images #32

Merged
merged 1 commit 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
3 changes: 3 additions & 0 deletions .github/workflows/image_creator.yml
Original file line number Diff line number Diff line change
@@ -284,6 +284,7 @@ jobs:
type=raw, gcc_full_latest
type=raw, clang_full_latest
type=raw, cuda_full_latest
type=raw, rocm_full_latest
type=raw, gcc-12_full_latest
type=raw, gcc-12_full_{{date 'YYYYMMDD'}}
type=raw, gcc-11_full_latest
@@ -292,6 +293,8 @@ jobs:
type=raw, clang-16_full_{{date 'YYYYMMDD'}}
type=raw, cuda-126_full_latest
type=raw, cuda-126_full_{{date 'YYYYMMDD'}}
type=raw, rocm-571_full_latest
type=raw, rocm-571_full_{{date 'YYYYMMDD'}}

- name: Create manifest list and push
working-directory: /tmp/digests
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -7,6 +7,7 @@ images with Ubuntu 22.04 and:
- GCC 11
- CLang 16
- CUDA 12.6 (full only)
- ROCM 5.7.1 (full/AMD64 only)

Two available architectures:
- AMD64
@@ -61,6 +62,14 @@ 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 5.7.1:
source /root/scripts/use_rocm-571.sh
```
49 changes: 12 additions & 37 deletions dockerfiles/full/Dockerfile
Original file line number Diff line number Diff line change
@@ -4,43 +4,6 @@ FROM ghcr.io/arcaneframework/ubuntu-2204:minimal_latest

ARG DEBIAN_FRONTEND=noninteractive
ARG TZ=Europe/Paris

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

# On installe les packages pour compiler Arcane.
RUN apt-get update -y \
&& apt-get install -y --no-install-recommends \
googletest libgtest-dev \
swig4.0 \
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 \
\
&& rm -rf /var/lib/apt/lists/*

#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
@@ -54,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

@@ -74,6 +43,12 @@ ENV LD_LIBRARY_PATH="/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

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

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

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

2 changes: 2 additions & 0 deletions dockerfiles/full/build_scripts/adaptivecpp.sh
Original file line number Diff line number Diff line change
@@ -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/*
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/ubuntu2204/${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/*
46 changes: 46 additions & 0 deletions dockerfiles/full/build_scripts/full_apt.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#!/bin/sh
set -e

# On installe les packages pour compiler Arcane.

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

apt-get update
apt-get install -y --no-install-recommends \
googletest libgtest-dev \
swig4.0 \
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

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

# 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="jammy"
ROCM_VERSION="5.7.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/*
4 changes: 3 additions & 1 deletion dockerfiles/full/build_scripts/vtk.sh
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ if [ "$ARCH" = "aarch64" ]; then
exit 0
fi

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

# Initialisation
@@ -41,4 +41,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/*
37 changes: 37 additions & 0 deletions dockerfiles/full/scripts/use_rocm-571.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/sh

# Script permettant de configurer ROCM 5.7.1.

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

echo "---------------------------------------------------------------------------"
echo "Configure ROCM-5.7.1"
echo "---------------------------------------------------------------------------"

update-alternatives --set rocm /opt/rocm-5.7.1

update-alternatives --set rocm_agent_enumerator /opt/rocm-5.7.1/bin/rocm_agent_enumerator
update-alternatives --set rocminfo /opt/rocm-5.7.1/bin/rocminfo

update-alternatives --set roc-obj /opt/rocm-5.7.1/bin/roc-obj
update-alternatives --set roc-obj-extract /opt/rocm-5.7.1/bin/roc-obj-extract
update-alternatives --set roc-obj-ls /opt/rocm-5.7.1/bin/roc-obj-ls
update-alternatives --set hipcc /opt/rocm-5.7.1/bin/hipcc
update-alternatives --set hipcc.pl /opt/rocm-5.7.1/bin/hipcc.pl
update-alternatives --set hipcc_cmake_linker_helper /opt/rocm-5.7.1/bin/hipcc_cmake_linker_helper
update-alternatives --set hipconfig /opt/rocm-5.7.1/bin/hipconfig
update-alternatives --set hipconfig.pl /opt/rocm-5.7.1/bin/hipconfig.pl
update-alternatives --set hipconvertinplace-perl.sh /opt/rocm-5.7.1/bin/hipconvertinplace-perl.sh
update-alternatives --set hipconvertinplace.sh /opt/rocm-5.7.1/bin/hipconvertinplace.sh
update-alternatives --set hipdemangleatp /opt/rocm-5.7.1/bin/hipdemangleatp
update-alternatives --set hipexamine-perl.sh /opt/rocm-5.7.1/bin/hipexamine-perl.sh
update-alternatives --set hipexamine.sh /opt/rocm-5.7.1/bin/hipexamine.sh
update-alternatives --set hipify-perl /opt/rocm-5.7.1/bin/hipify-perl
update-alternatives --set hipify-clang /opt/rocm-5.7.1/bin/hipify-clang
update-alternatives --set amdclang /opt/rocm-5.7.1/bin/amdclang
update-alternatives --set amdclang++ /opt/rocm-5.7.1/bin/amdclang++
update-alternatives --set amdflang /opt/rocm-5.7.1/bin/amdflang
update-alternatives --set amdlld /opt/rocm-5.7.1/bin/amdlld

hipcc --version
8 changes: 8 additions & 0 deletions dockerfiles/full/scripts/use_rocm.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/sh

# Script permettant de configurer ROCM.

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

. /root/scripts/use_rocm-571.sh
56 changes: 6 additions & 50 deletions dockerfiles/minimal/Dockerfile
Original file line number Diff line number Diff line change
@@ -9,56 +9,6 @@ ARG HOME="/root"
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

# On installe les packages pour compiler Arcane.
RUN apt-get update -y \
&& apt-get install -y --no-install-recommends \
apt-utils \
wget \
curl \
rsync \
build-essential \
gcc-12 g++-12 \
gcc-11 g++-11 \
gcc g++ \
make \
ccache \
ninja-build \
mold \
iputils-ping \
python3-dev \
python3-pip \
git \
gfortran \
libc6-dev \
libglib2.0-dev \
libboost-program-options-dev \
libopenblas-dev \
libxml2-dev \
libhdf5-dev \
libhdf5-openmpi-dev \
libopenmpi-dev \
libmetis-dev \
libtbb2-dev \
libunwind-dev \
ca-certificates \
dotnet6 \
jq \
\
&& update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 90 \
&& update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 90 \
&& update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-11 90 \
\
&& update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100 \
&& update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 \
&& update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-12 100 \
\
&& update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 100 \
\
&& rm -rf /var/lib/apt/lists/*

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

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

@@ -68,6 +18,12 @@ COPY scripts/ /root/scripts/
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------

# On installe les packages pour compiler Arcane.
RUN /root/build_scripts/minimal_apt.sh

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

# Installation de CMake.
RUN /root/build_scripts/cmake.sh

6 changes: 4 additions & 2 deletions dockerfiles/minimal/build_scripts/clang16.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/sh
set -e

# Script permettant de compiler et d'installer MPICH et d'installer les
# Script permettant de compiler et d'installer Clang 16 et d'installer les
# alternatives.

#---------------------------------------------------------------------------
@@ -10,7 +10,7 @@ set -e
# Initialisation
cd /tmp

apt-get update -y
apt-get update
apt-get install -y software-properties-common gnupg

wget https://apt.llvm.org/llvm.sh
@@ -26,4 +26,6 @@ update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-16 100
# Cleanup
cd /
rm -rf /var/lib/apt/lists/*
rm -rf /var/cache/*
rm -rf /var/log/*
rm -rf /tmp/*
2 changes: 1 addition & 1 deletion dockerfiles/minimal/build_scripts/cmake.sh
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@ set -e
cd /tmp
ARCH=`uname -m`

wget -O install.sh https://github.com/Kitware/CMake/releases/download/v3.30.0/cmake-3.30.0-linux-${ARCH}.sh
wget -O install.sh https://github.com/Kitware/CMake/releases/download/v3.31.4/cmake-3.31.4-linux-${ARCH}.sh
chmod u+x install.sh

./install.sh --skip-license --prefix=/usr/local
4 changes: 3 additions & 1 deletion dockerfiles/minimal/build_scripts/lima.sh
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@ set -e
cd /tmp

# Lima utilise lsb_release pour trouver le nom de la distribution.
apt-get update -y
apt-get update
apt-get install -y lsb-release

git clone -b 7.11.2 https://github.com/LIHPC-Computational-Geometry/lima lima
@@ -46,4 +46,6 @@ ninja install
# Cleanup
cd /
rm -rf /var/lib/apt/lists/*
rm -rf /var/cache/*
rm -rf /var/log/*
rm -rf /tmp/*
61 changes: 61 additions & 0 deletions dockerfiles/minimal/build_scripts/minimal_apt.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#!/bin/sh
set -e

# On installe les packages pour compiler Arcane.
# Les packages gcc g++ sont là pour éviter que d'autres les installes
# et déconfigure les alternatives déjà séléctionnées.

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

apt-get update
apt-get install -y --no-install-recommends \
apt-utils \
wget \
curl \
rsync \
build-essential \
gcc-12 g++-12 \
gcc-11 g++-11 \
gcc g++ \
make \
ccache \
ninja-build \
mold \
iputils-ping \
python3-dev \
python3-pip \
git \
gfortran \
libc6-dev \
libglib2.0-dev \
libboost-program-options-dev \
libopenblas-dev \
libxml2-dev \
libhdf5-dev \
libhdf5-openmpi-dev \
libopenmpi-dev \
libmetis-dev \
libtbb2-dev \
libunwind-dev \
ca-certificates \
dotnet6 \
jq

update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 90
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 90
update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-11 90

update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-12 100

update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 100

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

# Cleanup
rm -rf /var/lib/apt/lists/*
rm -rf /var/cache/*
rm -rf /var/log/*