Skip to content

Instantly share code, notes, and snippets.

@cgmb
Last active July 13, 2022 22:50
Show Gist options
  • Save cgmb/919fee1e06dc6727d29a92ba663c40b0 to your computer and use it in GitHub Desktop.
Save cgmb/919fee1e06dc6727d29a92ba663c40b0 to your computer and use it in GitHub Desktop.
Build ROCm 5.2.0 on Ubuntu 20.04
#!/usr/bin/env bash
# Build ROCm 5.2.0 on Ubuntu 20.04
set -exuo pipefail
apt-get -qq update
apt-get -qq upgrade
apt-get -qq install build-essential cmake wget
WORKSPACE=$HOME # where to download and build the sources
ARCH=gfx1030 # https://llvm.org/docs/AMDGPUUsage.html
# llvm-amdgpu
cd "$WORKSPACE"
apt-get -qq install python3
wget -qO- https://github.com/RadeonOpenCompute/llvm-project/archive/refs/tags/rocm-5.2.0.tar.gz | tar xz
cd llvm-project-rocm-5.2.0
cmake -Sllvm -Bbuild -DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_PROJECTS="clang;lld;clang-tools-extra;compiler-rt" \
-DLLVM_TARGETS_TO_BUILD="AMDGPU;X86" \
-DCMAKE_INSTALL_PREFIX=/opt/rocm/llvm
make -j16 -C build
make -C build install
# rocm-cmake
cd "$WORKSPACE"
wget -qO- https://github.com/RadeonOpenCompute/rocm-cmake/archive/refs/tags/rocm-5.2.0.tar.gz | tar xz
cd rocm-cmake-rocm-5.2.0
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/opt/rocm
make -j16 -C build
make -C build install
# rocm-device-libs
cd "$WORKSPACE"
wget -qO- https://github.com/RadeonOpenCompute/ROCm-Device-Libs/archive/refs/tags/rocm-5.2.0.tar.gz | tar xz
cd ROCm-Device-Libs-rocm-5.2.0
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=/opt/rocm/llvm/bin/clang \
-DCMAKE_INSTALL_PREFIX=/opt/rocm
make -j16 -C build
make -C build install
# roct-thunk-interface
cd "$WORKSPACE"
apt-get -qq install libnuma-dev pkg-config libdrm-dev zlib1g-dev libudev-dev
wget -qO- https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/archive/refs/tags/rocm-5.2.0.tar.gz | tar xz
cd ROCT-Thunk-Interface-rocm-5.2.0
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=/opt/rocm \
-DCMAKE_INSTALL_PREFIX=/opt/rocm
make -j16 -C build
make -C build install
# rocr-runtime
cd "$WORKSPACE"
apt-get -qq install libelf-dev xxd
wget -qO- https://github.com/RadeonOpenCompute/ROCR-Runtime/archive/refs/tags/rocm-5.2.0.tar.gz | tar xz
cd ROCR-Runtime-rocm-5.2.0
cmake -Ssrc -Bbuild \
-DCMAKE_PREFIX_PATH=/opt/rocm \
-DCMAKE_INSTALL_PREFIX=/opt/rocm
make -j16 -C build
make -C build install
# rocminfo
cd "$WORKSPACE"
apt-get -qq install kmod python3
wget -qO- https://github.com/RadeonOpenCompute/rocminfo/archive/refs/tags/rocm-5.2.0.tar.gz | tar xz
cd rocminfo-rocm-5.2.0
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=/opt/rocm \
-DCMAKE_INSTALL_PREFIX=/opt/rocm
make -j16 -C build
make -C build install
# comgr
cd "$WORKSPACE"
wget -qO- https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/archive/refs/tags/rocm-5.2.0.tar.gz | tar xz
cd ROCm-CompilerSupport-rocm-5.2.0
cmake -Slib/comgr -Bbuild -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=/opt/rocm/llvm \
-DCMAKE_INSTALL_PREFIX=/opt/rocm
make -j16 -C build
make -C build install
# hip
cd "$WORKSPACE"
apt-get -qq install mesa-common-dev
wget -qO- https://github.com/ROCm-Developer-Tools/hipamd/archive/refs/tags/rocm-5.2.0.tar.gz | tar xz
wget -qO- https://github.com/ROCm-Developer-Tools/ROCclr/archive/refs/tags/rocm-5.2.0.tar.gz | tar xz
wget -qO- https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/refs/tags/rocm-5.2.0.tar.gz | tar xz
wget -qO- https://github.com/ROCm-Developer-Tools/HIP/archive/refs/tags/rocm-5.2.0.tar.gz | tar xz
cd hipamd-rocm-5.2.0
# 0001-fix-cmake-minimum-version.patch
patch -p1 << 'EOF'
--- a/CMakeLists.txt 2022-05-23 22:01:05.000000000 -0600
+++ b/CMakeLists.txt 2022-07-09 14:24:16.519487276 -0600
@@ -17,7 +17,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-cmake_minimum_required(VERSION 3.16.8)
+cmake_minimum_required(VERSION 3.16)
project(hip)
# sample command for hip-rocclr runtime, you'll need to have rocclr built
--- a/hip-backward-compat.cmake 2022-07-09 23:37:37.819852741 -0600
+++ b/hip-backward-compat.cmake 2022-07-09 23:37:40.735938582 -0600
@@ -17,7 +17,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-cmake_minimum_required(VERSION 3.16.8)
+cmake_minimum_required(VERSION 3.16)
set(HIP_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
set(HIP_WRAPPER_DIR ${HIP_BUILD_DIR}/wrapper_dir)
EOF
# 0002-fix-build-from-tarball.patch
patch -p1 << 'EOF'
--- a/CMakeLists.txt 2022-05-23 22:01:05.000000000 -0600
+++ b/CMakeLists.txt 2022-07-09 14:24:16.519487276 -0600
@@ -140,6 +140,8 @@
endif()
else()
# FIXME: Some parts depend on this being set.
+ set(HIP_VERSION_BUILD_ID 0)
+ set(HIP_VERSION_BUILD_NAME "")
set(HIP_PACKAGING_VERSION_PATCH "0")
endif()
@@ -182,8 +184,10 @@
set (HIP_LIB_VERSION_MINOR ${HIP_VERSION_MINOR})
if (${ROCM_PATCH_VERSION} )
set (HIP_LIB_VERSION_PATCH ${ROCM_PATCH_VERSION})
-else ()
+elseif (DEFINED HIP_VERSION_GITHASH)
set (HIP_LIB_VERSION_PATCH ${HIP_VERSION_PATCH}-${HIP_VERSION_GITHASH})
+else ()
+ set (HIP_LIB_VERSION_PATCH ${HIP_VERSION_PATCH})
endif ()
set (HIP_LIB_VERSION_STRING "${HIP_LIB_VERSION_MAJOR}.${HIP_LIB_VERSION_MINOR}.${HIP_LIB_VERSION_PATCH}")
if (DEFINED ENV{ROCM_RPATH})
EOF
mkdir build
cd build
cmake -S.. -B. -DCMAKE_BUILD_TYPE=Release \
-DHIP_COMMON_DIR="$WORKSPACE/HIP-rocm-5.2.0" \
-DAMD_OPENCL_PATH="$WORKSPACE/ROCm-OpenCL-Runtime-rocm-5.2.0" \
-DROCCLR_PATH="$WORKSPACE/ROCclr-rocm-5.2.0" \
-DCMAKE_PREFIX_PATH="/opt/rocm;/opt/rocm/llvm" \
-DCMAKE_INSTALL_PREFIX=/opt/rocm
make -j16
make install
apt-get -qq install perl file # used for hipcc
# rocrand (with tests)
cd "$WORKSPACE"
apt-get -qq install gfortran git libgtest-dev
wget -qO- https://github.com/ROCmSoftwarePlatform/rocRAND/archive/refs/tags/rocm-5.2.0.tar.gz | tar xz
cd rocRAND-rocm-5.2.0
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc \
-DBUILD_HIPRAND=OFF \
-DBUILD_TEST=ON \
-DBUILD_BENCHMARK=ON \
-DAMDGPU_TARGETS=$ARCH \
-DCMAKE_INSTALL_PREFIX=/opt/rocm
make -j16 -C build
make -C build test
make -C build install
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment