Created
January 31, 2023 18:40
-
-
Save cgmb/948455f2ab1f7132815c6fe5200bce38 to your computer and use it in GitHub Desktop.
Build ROCm for Ubuntu 20.04
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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