Skip to content

Instantly share code, notes, and snippets.

@cgmb
Created January 31, 2023 18:40
Show Gist options
  • Save cgmb/948455f2ab1f7132815c6fe5200bce38 to your computer and use it in GitHub Desktop.
Save cgmb/948455f2ab1f7132815c6fe5200bce38 to your computer and use it in GitHub Desktop.
Build ROCm for Ubuntu 20.04
#!/usr/bin/env bash
# Build rocBLAS for ROCm 5.4.2 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=gfx906:xnack- # 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.4.2.tar.gz | tar xz
cd llvm-project-rocm-5.4.2
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.4.2.tar.gz | tar xz
cd rocm-cmake-rocm-5.4.2
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.4.2.tar.gz | tar xz
cd ROCm-Device-Libs-rocm-5.4.2
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.4.2.tar.gz | tar xz
cd ROCT-Thunk-Interface-rocm-5.4.2
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.4.2.tar.gz | tar xz
cd ROCR-Runtime-rocm-5.4.2
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.4.2.tar.gz | tar xz
cd rocminfo-rocm-5.4.2
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.4.2.tar.gz | tar xz
cd ROCm-CompilerSupport-rocm-5.4.2
# 0001-fix-comgr-cmake-minimum-version.patch
patch -p1 << 'EOF'
diff --git a/lib/comgr/comgr-backward-compat.cmake b/lib/comgr/comgr-backward-compat.cmake
index c9053ea..f63f590 100644
--- a/lib/comgr/comgr-backward-compat.cmake
+++ b/lib/comgr/comgr-backward-compat.cmake
@@ -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(COMGR_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
set(COMGR_WRAPPER_DIR ${COMGR_BUILD_DIR}/wrapper_dir)
EOF
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 python3 python3-pip
pip3 install CppHeaderParser
wget -qO- https://github.com/ROCm-Developer-Tools/hipamd/archive/refs/tags/rocm-5.4.2.tar.gz | tar xz
wget -qO- https://github.com/ROCm-Developer-Tools/ROCclr/archive/refs/tags/rocm-5.4.2.tar.gz | tar xz
wget -qO- https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/refs/tags/rocm-5.4.2.tar.gz | tar xz
wget -qO- https://github.com/ROCm-Developer-Tools/HIP/archive/refs/tags/rocm-5.4.2.tar.gz | tar xz
cd ROCm-OpenCL-Runtime-rocm-5.4.2
# 0002-fix-opencl-cmake-minimum-version.patch
patch -p1 << 'EOF'
diff --git a/opencl-backward-compat.cmake b/opencl-backward-compat.cmake
index e159924..0c9e8fd 100644
--- a/opencl-backward-compat.cmake
+++ b/opencl-backward-compat.cmake
@@ -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(OPENCL ${PROJECT_NAME})
set(OPENCL_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
EOF
cd ..
cd HIP-rocm-5.4.2
# 0003-fix-hip-cmake-minimum-version.patch
patch -p1 << 'EOF'
diff --git a/tests/catch/CMakeLists.txt b/tests/catch/CMakeLists.txt
index e2924a56..5456f57b 100644
--- a/tests/catch/CMakeLists.txt
+++ b/tests/catch/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.16.8)
+cmake_minimum_required(VERSION 3.16)
# to skip the simple compiler test
set(CMAKE_C_COMPILER_WORKS 1)
diff --git a/tests/catch/packaging/hip-tests.txt b/tests/catch/packaging/hip-tests.txt
index f934130e..e43c5d29 100644
--- a/tests/catch/packaging/hip-tests.txt
+++ b/tests/catch/packaging/hip-tests.txt
@@ -18,7 +18,7 @@
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# 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(tests)
MACRO(SUBDIRLIST result curdir)
EOF
cd ..
cd hipamd-rocm-5.4.2
# 0004-fix-hipamd-cmake-minimum-version.patch
patch -p1 << 'EOF'
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 86b0c34f..9c1635cc 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -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)
include(GNUInstallDirs)
diff --git a/hip-backward-compat.cmake b/hip-backward-compat.cmake
index 7d1468a4..38c7b907 100644
--- a/hip-backward-compat.cmake
+++ b/hip-backward-compat.cmake
@@ -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)
diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt
index 8484795d..bea6a39b 100644
--- a/packaging/CMakeLists.txt
+++ b/packaging/CMakeLists.txt
@@ -18,7 +18,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 components for HIP
if(HIP_CATCH_TEST EQUAL "1")
diff --git a/packaging/hip-tests.txt b/packaging/hip-tests.txt
index 1ca6031f..e798178d 100644
--- a/packaging/hip-tests.txt
+++ b/packaging/hip-tests.txt
@@ -18,7 +18,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_catch_tests)
include(GNUInstallDirs)
EOF
mkdir -p build
cd build
cmake -S.. -B. -DCMAKE_BUILD_TYPE=Release \
-DHIP_COMMON_DIR="$WORKSPACE/HIP-rocm-5.4.2" \
-DAMD_OPENCL_PATH="$WORKSPACE/ROCm-OpenCL-Runtime-rocm-5.4.2" \
-DROCCLR_PATH="$WORKSPACE/ROCclr-rocm-5.4.2" \
-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
# rocblas
cd "$WORKSPACE"
apt-get -qq install gfortran libmsgpack-dev python3 python3-pip python3-virtualenv python3.9-venv python3-yaml python3-msgpack
wget -qO- https://github.com/ROCmSoftwarePlatform/rocBLAS/archive/refs/tags/rocm-5.4.2.tar.gz | tar xz
wget -qO- https://github.com/ROCmSoftwarePlatform/Tensile/archive/refs/tags/rocm-5.4.2.tar.gz | tar xz
cd rocBLAS-rocm-5.4.2
# 0005-fix-rocblas-cmake-minimum-version.patch
patch -p1 << 'EOF'
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 75ea27d6..fffeb71d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,7 +20,7 @@
#
# ########################################################################
-cmake_minimum_required( VERSION 3.16.8 )
+cmake_minimum_required( VERSION 3.16 )
# This has to be initialized before the project() command appears
diff --git a/clients/CMakeLists.txt b/clients/CMakeLists.txt
index ae78b491..49db8553 100755
--- a/clients/CMakeLists.txt
+++ b/clients/CMakeLists.txt
@@ -20,7 +20,7 @@
#
# ########################################################################
-cmake_minimum_required( VERSION 3.16.8 )
+cmake_minimum_required( VERSION 3.16 )
add_definitions(-D_ROCBLAS_INTERNAL_BFLOAT16_)
EOF
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc \
-DAMDGPU_TARGETS=$ARCH \
-DTensile_TEST_LOCAL_PATH="$WORKSPACE/Tensile-rocm-5.4.2" \
-DTensile_LOGIC=asm_full \
-DTensile_CODE_OBJECT_VERSION=V3 \
-DTensile_SEPARATE_ARCHITECTURES=ON \
-DTensile_LAZY_LIBRARY_LOADING=ON \
-DTensile_LIBRARY_FORMAT=msgpack \
-DRUN_HEADER_TESTING=OFF \
-DCMAKE_INSTALL_PREFIX=/opt/rocm
make -j16 -C build
make -C build install
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment