Last active
July 13, 2022 22:50
-
-
Save cgmb/919fee1e06dc6727d29a92ba663c40b0 to your computer and use it in GitHub Desktop.
Build ROCm 5.2.0 on Ubuntu 20.04
This file contains hidden or 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 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