From ff8d951f202d073ce47ed9daa532a2b6117e7156 Mon Sep 17 00:00:00 2001 From: Stella Laurenzo Date: Mon, 13 Jan 2025 17:16:50 -0800 Subject: [PATCH 1/2] Bump to rocm 6.3.1. Key changes: * Moved llvm/ -> lib/llvm/ * libamdhip64 now depends on rocprofiler * rccl switches to clang++ vs hipcc * rccl depends on rocprofiler * Drop 6.1 patches * Setup rpaths to account for llvm move (required adding some goo for doing project interception in cmake) * Move rocr to top-level and eliminate rocm-core-libs --- .github/workflows/build_linux_packages.yml | 2 +- .github/workflows/build_python_packages.yml | 2 +- CMakeLists.txt | 127 +++++++++---- README.md | 11 +- build_tools/apply_patches.sh | 26 +-- build_tools/fetch_sources.py | 52 +++-- cmake/extensions/README.txt | 8 + cmake/extensions/clr_post.cmake | 11 ++ cmake/extensions/rocr_post.cmake | 10 + cmake/external_project_include.cmake | 33 ---- cmake/therock_external_project_include.cmake | 21 +++ cmake/therock_rpath.cmake | 27 +++ components/rocm-core-libs/CMakeLists.txt | 16 -- patches/ROCR-Runtime-intree-build.patch | 178 ------------------ .../ROCT-Thunk-Interface-header-nest.patch | 170 ----------------- .../ROCT-Thunk-Interface-link-dl-libs.patch | 13 -- patches/clr-disable-hipconfig-check.patch | 17 -- patches/clr-respect-no-versioned-soname.patch | 34 ---- ...fy-install-headers-in-include-hipify.patch | 39 ---- patches/rccl-overwrite-generated-files.patch | 20 -- patches/rocm-cmake-nocheck.patch | 13 -- ...r-for-target-out-path-when-stripping.patch | 26 --- 22 files changed, 212 insertions(+), 644 deletions(-) create mode 100644 cmake/extensions/README.txt create mode 100644 cmake/extensions/clr_post.cmake create mode 100644 cmake/extensions/rocr_post.cmake delete mode 100644 cmake/external_project_include.cmake create mode 100644 cmake/therock_external_project_include.cmake create mode 100644 cmake/therock_rpath.cmake delete mode 100644 components/rocm-core-libs/CMakeLists.txt delete mode 100644 patches/ROCR-Runtime-intree-build.patch delete mode 100644 patches/ROCT-Thunk-Interface-header-nest.patch delete mode 100644 patches/ROCT-Thunk-Interface-link-dl-libs.patch delete mode 100644 patches/clr-disable-hipconfig-check.patch delete mode 100644 patches/clr-respect-no-versioned-soname.patch delete mode 100644 patches/hipify-install-headers-in-include-hipify.patch delete mode 100644 patches/rccl-overwrite-generated-files.patch delete mode 100644 patches/rocm-cmake-nocheck.patch delete mode 100644 patches/rocm_smi_lib-use-cmake-generator-expr-for-target-out-path-when-stripping.patch diff --git a/.github/workflows/build_linux_packages.yml b/.github/workflows/build_linux_packages.yml index c7a0d85..59f73bc 100644 --- a/.github/workflows/build_linux_packages.yml +++ b/.github/workflows/build_linux_packages.yml @@ -52,7 +52,7 @@ jobs: - name: Fetch sources run: | - ./build_tools/fetch_sources.py + ./build_tools/fetch_sources.py --depth 1 # The full checkout is very large: ~16GB, 9 of which is GIT stuff. # So we delete the latter. This must be done after getting any git diff --git a/.github/workflows/build_python_packages.yml b/.github/workflows/build_python_packages.yml index d01a05d..1b1fe35 100644 --- a/.github/workflows/build_python_packages.yml +++ b/.github/workflows/build_python_packages.yml @@ -57,7 +57,7 @@ jobs: - name: Fetch sources run: | - ./build_tools/fetch_sources.py + ./build_tools/fetch_sources.py --depth 1 # The full checkout is very large: ~16GB, 9 of which is GIT stuff. # So we delete the latter. This must be done after getting any git diff --git a/CMakeLists.txt b/CMakeLists.txt index 9b11e4a..a5c6a0e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,11 +25,10 @@ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) endif() set(ROCM_MAJOR_VERSION 6) -set(ROCM_MINOR_VERSION 1) -set(ROCM_PATCH_VERSION 0) +set(ROCM_MINOR_VERSION 3) +set(ROCM_PATCH_VERSION 1) set(ROCM_VERSION - "${ROCM_MAJOR_VERSION}.${ROCM_MINOR_VERSION}.${ROCM_PATCH_VERSION}" - CACHE STRING "ROCM version") + "${ROCM_MAJOR_VERSION}.${ROCM_MINOR_VERSION}.${ROCM_PATCH_VERSION}") set(AMDGPU_TARGETS "gfx90a gfx940 gfx942 gfx1100" CACHE STRING "AMDGPU Targets") ################################################################################ @@ -49,7 +48,7 @@ set(STAGING_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/staging_install") option(ALWAYS_BUILD_SUBPROJECTS "Don't let the brittle CMake external project machinery decide if a sub-project needs to rebuild. Always run the underlying build." - ON) + OFF) set(FIND_PACKAGE_OPTIONS) macro(add_package_path PackageName path) @@ -70,12 +69,14 @@ set(DEFAULT_CMAKE_ARGS "-DROCM_PATH=${STAGING_INSTALL_DIR}" "-DCPACK_PACKAGING_INSTALL_PREFIX=${STAGING_INSTALL_DIR}" "-DAMDGPU_TARGETS=${AMDGPU_TARGETS}" + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER} -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER} # On some distributions, this will install to lib64. We would like # consistency in built packages, so hard-code it. -DCMAKE_INSTALL_LIBDIR=lib - -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=${CMAKE_CURRENT_SOURCE_DIR}/cmake/external_project_include.cmake + -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=${CMAKE_CURRENT_SOURCE_DIR}/cmake/therock_external_project_include.cmake ) if(CMAKE_C_VISIBILITY_PRESET) list(APPEND DEFAULT_CMAKE_ARGS ${CMAKE_C_VISIBILITY_PRESET}) @@ -103,6 +104,25 @@ ExternalProject_Add( add_package_path(ROCM "${STAGING_INSTALL_DIR}/share/rocm/cmake") +################################################################################ +# rocprofiler-register +# This is a stub that helps runtime libraries and profiles rendezvous +################################################################################ + +ExternalProject_Add( + rocprofiler-register + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/rocprofiler-register + SOURCE_DIR "${ROCM_GIT_DIR}/rocprofiler-register" + CMAKE_ARGS + ${DEFAULT_CMAKE_ARGS} + ${FIND_PACKAGE_OPTIONS} + -DCMAKE_INSTALL_PREFIX=${STAGING_INSTALL_DIR} + USES_TERMINAL_CONFIGURE TRUE + USES_TERMINAL_BUILD TRUE + BUILD_ALWAYS ${ALWAYS_BUILD_SUBPROJECTS} +) +add_package_path(rocprofiler-register "${STAGING_INSTALL_DIR}/lib/cmake/rocprofiler-register") + ################################################################################ # LLVM ################################################################################ @@ -118,33 +138,34 @@ ExternalProject_Add( ${FIND_PACKAGE_OPTIONS} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} # We install llvm in its own sub-directory. - -DCMAKE_INSTALL_PREFIX=${STAGING_INSTALL_DIR}/llvm + -DCMAKE_INSTALL_PREFIX=${STAGING_INSTALL_DIR}/lib/llvm USES_TERMINAL_CONFIGURE TRUE USES_TERMINAL_BUILD TRUE BUILD_ALWAYS ${ALWAYS_BUILD_SUBPROJECTS} ) -add_package_path(amd_comgr "${STAGING_INSTALL_DIR}/llvm/lib/cmake/amd_comgr") -add_package_path(Clang "${STAGING_INSTALL_DIR}/llvm/lib/cmake/clang") -add_package_path(LLD "${STAGING_INSTALL_DIR}/llvm/lib/cmake/lld") -add_package_path(LLVM "${STAGING_INSTALL_DIR}/llvm/lib/cmake/llvm") -add_package_path(AMDDeviceLibs "${STAGING_INSTALL_DIR}/llvm/lib/cmake/AMDDeviceLibs") +add_package_path(amd_comgr "${STAGING_INSTALL_DIR}/lib/llvm/lib/cmake/amd_comgr") +add_package_path(Clang "${STAGING_INSTALL_DIR}/lib/llvm/lib/cmake/clang") +add_package_path(LLD "${STAGING_INSTALL_DIR}/lib/llvm/lib/cmake/lld") +add_package_path(LLVM "${STAGING_INSTALL_DIR}/lib/llvm/lib/cmake/llvm") +add_package_path(AMDDeviceLibs "${STAGING_INSTALL_DIR}/lib/llvm/lib/cmake/AMDDeviceLibs") ################################################################################ -# rocm-core-libs +# ROCR-Runtime ################################################################################ ExternalProject_Add( - rocm-core-libs + ROCR-Runtime + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/ROCR-Runtime + SOURCE_DIR "${ROCM_GIT_DIR}/ROCR-Runtime" DEPENDS - amd-llvm - rocm-cmake - PREFIX ${CMAKE_CURRENT_BINARY_DIR}/rocm-core-libs - SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/components/rocm-core-libs" + amd-llvm # Build dep only + rocprofiler-register CMAKE_ARGS ${DEFAULT_CMAKE_ARGS} ${FIND_PACKAGE_OPTIONS} -DCMAKE_INSTALL_PREFIX=${STAGING_INSTALL_DIR} + -DBUILD_SHARED_LIBS=ON USES_TERMINAL_CONFIGURE TRUE USES_TERMINAL_BUILD TRUE BUILD_ALWAYS ${ALWAYS_BUILD_SUBPROJECTS} @@ -153,6 +174,28 @@ ExternalProject_Add( add_package_path(hsakmt "${STAGING_INSTALL_DIR}/lib/cmake/hsakmt") add_package_path(hsa-runtime64 "${STAGING_INSTALL_DIR}/lib/cmake/hsa-runtime64") +################################################################################ +# rocm-core +################################################################################ + +ExternalProject_Add( + rocm-core + DEPENDS + amd-llvm + rocm-cmake + ROCR-Runtime + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/rocm-core + SOURCE_DIR "${ROCM_GIT_DIR}/rocm-core" + CMAKE_ARGS + ${DEFAULT_CMAKE_ARGS} + ${FIND_PACKAGE_OPTIONS} + -DCMAKE_INSTALL_PREFIX=${STAGING_INSTALL_DIR} + "-DTHEROCK_INSTALL_RPATH=lib$lib/llvm/lib" + USES_TERMINAL_CONFIGURE TRUE + USES_TERMINAL_BUILD TRUE + BUILD_ALWAYS ${ALWAYS_BUILD_SUBPROJECTS} +) + ################################################################################ # rocminfo ################################################################################ @@ -162,7 +205,7 @@ ExternalProject_Add( PREFIX ${CMAKE_CURRENT_BINARY_DIR}/rocminfo SOURCE_DIR "${ROCM_GIT_DIR}/rocminfo" DEPENDS - rocm-core-libs + rocm-core CMAKE_ARGS ${DEFAULT_CMAKE_ARGS} ${FIND_PACKAGE_OPTIONS} @@ -207,7 +250,7 @@ ExternalProject_Add( DEPENDS amd-llvm hipcc - rocm-core-libs + rocm-core CMAKE_ARGS ${DEFAULT_CMAKE_ARGS} ${FIND_PACKAGE_OPTIONS} @@ -244,7 +287,7 @@ ExternalProject_Add( PREFIX ${CMAKE_CURRENT_BINARY_DIR}/rocm_smi_lib SOURCE_DIR "${ROCM_GIT_DIR}/rocm_smi_lib" DEPENDS - rocm-core-libs + rocm-core CMAKE_ARGS ${DEFAULT_CMAKE_ARGS} ${FIND_PACKAGE_OPTIONS} @@ -280,25 +323,29 @@ ExternalProject_Add( # RCCL ################################################################################ -ExternalProject_Add( - rccl - PREFIX ${CMAKE_CURRENT_BINARY_DIR}/rccl - SOURCE_DIR "${ROCM_GIT_DIR}/rccl" - DEPENDS - clr - hipcc - hipify - rocminfo - CMAKE_ARGS - ${DEFAULT_CMAKE_ARGS} - ${FIND_PACKAGE_OPTIONS} - -DCMAKE_CXX_COMPILER=${STAGING_INSTALL_DIR}/bin/hipcc - -DCMAKE_INSTALL_PREFIX=${STAGING_INSTALL_DIR} - -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON - USES_TERMINAL_CONFIGURE TRUE - USES_TERMINAL_BUILD TRUE - BUILD_ALWAYS ${ALWAYS_BUILD_SUBPROJECTS} -) +# TODO: Re-enable rccl after adapting to 6.3.x build option differences. +# Now seems to depend on rocprofiler. +# ExternalProject_Add( +# rccl +# PREFIX ${CMAKE_CURRENT_BINARY_DIR}/rccl +# SOURCE_DIR "${ROCM_GIT_DIR}/rccl" +# DEPENDS +# clr +# hipcc +# hipify +# rocminfo +# CMAKE_ARGS +# ${DEFAULT_CMAKE_ARGS} +# ${FIND_PACKAGE_OPTIONS} +# # TODO: Audit how the 6.3.x build finds its C++ compiler. +# #-DCMAKE_CXX_COMPILER=${STAGING_INSTALL_DIR}/bin/hipcc +# -DCMAKE_CXX_COMPILER=${STAGING_INSTALL_DIR}/lib/llvm/bin/clang++ +# -DCMAKE_INSTALL_PREFIX=${STAGING_INSTALL_DIR} +# -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON +# USES_TERMINAL_CONFIGURE TRUE +# USES_TERMINAL_BUILD TRUE +# BUILD_ALWAYS ${ALWAYS_BUILD_SUBPROJECTS} +# ) ################################################################################ # Testing diff --git a/README.md b/README.md index 25d39d6..d119e49 100644 --- a/README.md +++ b/README.md @@ -34,10 +34,13 @@ Alternatively, for a specific ROCm version e.g. 6.1.0 ``` python ./build_tools/fetch_sources.py \ - --manifest-url https://github.com/ROCm/ROCm.git \ - --manifest-branch refs/tags/rocm-6.1.0 + --manifest-url http://github.com/ROCm/ROCm.git \ + --manifest-name tools/rocm-build/rocm-6.3.1.xml \ + --manifest-branch roc-6.3.x ``` +TODO: Figure out why this only works with the http URL. + This will also apply the patches to the downloaded source files. ## Manually @@ -46,11 +49,9 @@ Checkout the latest development branch with ``` mkdir ~/github/rocm cd ~/github/rocm -repo init -u https://github.com/ROCm/ROCm.git +repo init -u http://github.com/ROCm/ROCm.git -m tools/rocm-build/rocm-6.3.1.xml -b roc-6.3.x repo sync -j16 ``` -Use `-b roc-6.0.x` if you need a specific branch of ROCm sources. - Checkout out latest LLVM sources ``` diff --git a/build_tools/apply_patches.sh b/build_tools/apply_patches.sh index f40410e..4c6c16e 100755 --- a/build_tools/apply_patches.sh +++ b/build_tools/apply_patches.sh @@ -25,25 +25,7 @@ function apply_patch() { echo "Running from $PWD" -stash_changes clr -apply_patch clr clr-disable-hipconfig-check.patch -apply_patch clr clr-respect-no-versioned-soname.patch - -stash_changes rocm-cmake -apply_patch rocm-cmake rocm-cmake-nocheck.patch - -stash_changes ROCT-Thunk-Interface -apply_patch ROCT-Thunk-Interface ROCT-Thunk-Interface-header-nest.patch -apply_patch ROCT-Thunk-Interface ROCT-Thunk-Interface-link-dl-libs.patch - -stash_changes ROCR-Runtime -apply_patch ROCR-Runtime ROCR-Runtime-intree-build.patch - -stash_changes HIPIFY -apply_patch HIPIFY hipify-install-headers-in-include-hipify.patch - -stash_changes rocm_smi_lib -apply_patch rocm_smi_lib rocm_smi_lib-use-cmake-generator-expr-for-target-out-path-when-stripping.patch - -stash_changes rccl -apply_patch rccl rccl-overwrite-generated-files.patch +# Example: +# stash_changes clr +# apply_patch clr clr-disable-hipconfig-check.patch +# apply_patch clr clr-respect-no-versioned-soname.patch diff --git a/build_tools/fetch_sources.py b/build_tools/fetch_sources.py index ca9e2f1..f5dcc8e 100755 --- a/build_tools/fetch_sources.py +++ b/build_tools/fetch_sources.py @@ -5,14 +5,16 @@ import argparse from pathlib import Path +import shlex import subprocess import sys DEFAULT_SOURCES_DIR = Path(__file__).resolve().parent.parent / "sources" -def exec(args: list[str], cwd: Path): - print(f"++ Exec: {args} (in {cwd})") +def exec(args: list[str | Path], cwd: Path): + args = [str(arg) for arg in args] + print(f"++ Exec [{cwd}]$ {shlex.join(args)}") subprocess.check_call(args, cwd=str(cwd)) @@ -20,16 +22,21 @@ def run(args): repo_dir: Path = args.dir print(f"Setting up repo in {repo_dir}") repo_dir.mkdir(exist_ok=True, parents=True) + repo_args = [ + "repo", + "init", + "-v", + "-u", + args.manifest_url, + "-m", + args.manifest_name, + "-b", + args.manifest_branch, + ] + if args.depth: + repo_args.extend(["--depth", str(args.depth)]) exec( - [ - "repo", - "init", - "--manifest-url", - args.manifest_url, - "--depth=1", - "--manifest-branch", - args.manifest_branch - ], + repo_args, cwd=repo_dir, ) exec(["repo", "sync", "-j16"] + args.projects, cwd=repo_dir) @@ -51,14 +58,27 @@ def main(argv): "--dir", type=Path, help="Repo dir", default=DEFAULT_SOURCES_DIR ) parser.add_argument( - "--manifest-url", type=str, help="Manifest repository location of ROCm", - default="https://github.com/nod-ai/ROCm.git" + "--manifest-url", + type=str, + help="Manifest repository location of ROCm", + default="http://github.com/ROCm/ROCm.git", + ) + parser.add_argument( + "--manifest-name", + type=str, + help="Repo manifest name", + default="tools/rocm-build/rocm-6.3.1.xml", ) parser.add_argument( - "--manifest-branch", type=str, help="Branch to sync with repo tool", - default="the-rock-main" + "--manifest-branch", + type=str, + help="Branch to sync with repo tool", + default="roc-6.3.x", ) parser.add_argument("--no-patch", action="store_true", help="Disable patching") + parser.add_argument( + "--depth", type=int, help="Git depth to pass to repo", default=None + ) parser.add_argument( "--projects", nargs="+", @@ -73,8 +93,8 @@ def main(argv): "rocm-cmake", "rocm-core", "rocminfo", + "rocprofiler-register", "ROCR-Runtime", - "ROCT-Thunk-Interface", ], ) args = parser.parse_args(argv) diff --git a/cmake/extensions/README.txt b/cmake/extensions/README.txt new file mode 100644 index 0000000..47ec941 --- /dev/null +++ b/cmake/extensions/README.txt @@ -0,0 +1,8 @@ +When the super-project build system configures a sub-project, it injects a +hook that performs additional pre and post-processing. A primary thing that +does is look for include files here: + + ${CMAKE_PROJECT_NAME}_pre.cmake + ${CMAKE_PROJECT_NAME}_post.cmake + +If found, they are included. diff --git a/cmake/extensions/clr_post.cmake b/cmake/extensions/clr_post.cmake new file mode 100644 index 0000000..2c2912a --- /dev/null +++ b/cmake/extensions/clr_post.cmake @@ -0,0 +1,11 @@ +list(APPEND CMAKE_MODULE_PATH "${THEROCK_SOURCE_DIR}/cmake") +include(therock_rpath) + +therock_set_install_rpath( + TARGETS + amdhip64 + hiprtc + PATHS + . + llvm/lib +) \ No newline at end of file diff --git a/cmake/extensions/rocr_post.cmake b/cmake/extensions/rocr_post.cmake new file mode 100644 index 0000000..8b3750d --- /dev/null +++ b/cmake/extensions/rocr_post.cmake @@ -0,0 +1,10 @@ +list(APPEND CMAKE_MODULE_PATH "${THEROCK_SOURCE_DIR}/cmake") +include(therock_rpath) + +therock_set_install_rpath( + TARGETS + hsa-runtime64 + PATHS + . + llvm/lib +) \ No newline at end of file diff --git a/cmake/external_project_include.cmake b/cmake/external_project_include.cmake deleted file mode 100644 index 67c6cb9..0000000 --- a/cmake/external_project_include.cmake +++ /dev/null @@ -1,33 +0,0 @@ -# This file is injected into each ExternalProject in the super project. -# It sets up various toolchain details. - -message(STATUS "TheRock external project configuration injection") - -################################################################################ -# Set up RPATH entries so that we load our bundled libraries first. -# -# bin/ -# lib/ -# llvm/ -# lib/ -# -# We want anything in the top-level bin/ or lib/ dirs to find sibling libraries -# in lib/ and llvm/lib/. -# -# Therefore, we set platform specific relative RPATHs for: -# ../lib -# ../llvm/lib -# -# We set this via cmake injection vs passing on a CL because escaping is -# especially tricky and this avoids the issues. -################################################################################ - -if(WIN32) - # Do nothing. -elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - # Assume @loader_path style RPATH. - set(CMAKE_INSTALL_RPATH "@loader_path/../lib;@loader_path/../llvm/lib") -else() - # Assume ${ORIGIN} style RPATH. - set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib;$ORIGIN/../llvm/lib") -endif() diff --git a/cmake/therock_external_project_include.cmake b/cmake/therock_external_project_include.cmake new file mode 100644 index 0000000..b943cc8 --- /dev/null +++ b/cmake/therock_external_project_include.cmake @@ -0,0 +1,21 @@ +# This file is injected into each ExternalProject in the super project. +# It sets up various toolchain details. + +message(STATUS "TheRock external project configuration injection (${CMAKE_PROJECT_NAME})") + +if(EXISTS "${THEROCK_SOURCE_DIR}/cmake/extensions/${CMAKE_PROJECT_NAME}_pre.cmake") + message(STATUS "Including project extensions: ${CMAKE_PROJECT_NAME}_pre.cmake") + include("${THEROCK_SOURCE_DIR}/cmake/extensions/${CMAKE_PROJECT_NAME}_pre.cmake") +endif() +cmake_language(DEFER CALL therock_post_external_project) + +function(therock_post_external_project) + if(EXISTS "${THEROCK_SOURCE_DIR}/cmake/extensions/${CMAKE_PROJECT_NAME}_post.cmake") + message(STATUS "Including project extensions: ${CMAKE_PROJECT_NAME}_post.cmake") + # Note that because of the way defer processing works, we include in a + # function scope, which usually wouldn't make sense. But since this will + # by definition be the last thing evaluated, there is nothing to observe + # the top level scope after this anyway, so it is ok to do here. + include("${THEROCK_SOURCE_DIR}/cmake/extensions/${CMAKE_PROJECT_NAME}_post.cmake") + endif() +endfunction() diff --git a/cmake/therock_rpath.cmake b/cmake/therock_rpath.cmake new file mode 100644 index 0000000..4fceac0 --- /dev/null +++ b/cmake/therock_rpath.cmake @@ -0,0 +1,27 @@ +function(therock_set_install_rpath) + cmake_parse_arguments( + PARSE_ARGV 0 ARG + "" + "" + "TARGETS;PATHS" + ) + if(WIN32) + return() + endif() + + set(_rpath) + foreach(path ${ARG_PATHS}) + if("${path}" STREQUAL ".") + set(path_suffix "") + else() + set(path_suffix "/${path}") + endif() + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + list(APPEND _rpath "@loader_path${path_suffix}") + else() + list(APPEND _rpath "$ORIGIN${path_suffix}") + endif() + endforeach() + message(STATUS "Set RPATH ${_rpath} on ${ARG_TARGETS}") + set_target_properties(${ARG_TARGETS} PROPERTIES INSTALL_RPATH "${_rpath}") +endfunction() \ No newline at end of file diff --git a/components/rocm-core-libs/CMakeLists.txt b/components/rocm-core-libs/CMakeLists.txt deleted file mode 100644 index 56092fa..0000000 --- a/components/rocm-core-libs/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ -cmake_minimum_required(VERSION 3.18) -project(THEROCK-rocm-core-libs) - -# We build as much of the rocm core libraries together in one project as -# possible. There are ordering dependencies here because later projects -# do `if(TARGET)` checks to decide whether to `find_package` vs use in-tree. - -# Build rocm-core -add_subdirectory(${ROCM_GIT_DIR}/rocm-core ${CMAKE_BINARY_DIR}/rocm-core) - -# Build roct-thunk-interface -add_subdirectory(${ROCM_GIT_DIR}/ROCT-Thunk-Interface ${CMAKE_BINARY_DIR}/ROCT-Thunk-Interface) - -# Build ROCR-Runtime -set(BUILD_SHARED_LIBS ON) -add_subdirectory(${ROCM_GIT_DIR}/ROCR-Runtime/src ${CMAKE_BINARY_DIR}/ROCR-Runtime) diff --git a/patches/ROCR-Runtime-intree-build.patch b/patches/ROCR-Runtime-intree-build.patch deleted file mode 100644 index 99be50f..0000000 --- a/patches/ROCR-Runtime-intree-build.patch +++ /dev/null @@ -1,178 +0,0 @@ -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 130815c..4ebeb23 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -95,9 +95,15 @@ set ( PACKAGE_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_COMMIT - ## Find external dependencies. - find_package(PkgConfig) - find_package(LibElf REQUIRED) --find_package(hsakmt 1.0 REQUIRED HINTS ${CMAKE_INSTALL_PREFIX} PATHS /opt/rocm) - pkg_check_modules(drm REQUIRED IMPORTED_TARGET libdrm) - -+## Find dependencies that may be built with us or from an installed package. -+if(TARGET hsakmt::hsakmt) -+ message(STATUS "Using build dep on hsakmt") -+else() -+ find_package(hsakmt 1.0 REQUIRED HINTS ${CMAKE_INSTALL_PREFIX} PATHS /opt/rocm) -+endif() -+ - ## Create the rocr target. - add_library( ${CORE_RUNTIME_TARGET} "" ) - -@@ -126,6 +132,19 @@ target_include_directories( ${CORE_RUNTIME_TARGET} - ${CMAKE_CURRENT_BINARY_DIR}/core/runtime/trap_handler - ${CMAKE_CURRENT_BINARY_DIR}/core/runtime/blit_shaders) - -+## ------------------------- Device Library Options ---------------------------- -+set(ROCR_RUNTIME_DEVICE_LIB_PATH "" CACHE PATH "Builds against custom device-lib bitcode files (passed to clang --rocm-device-lib-path=)") -+set(ROCR_RUNTIME_DEVICE_LIB_DEPS "" CACHE STRING "Custom deps to depend on to ensure device libs are built") -+ -+if (ROCR_RUNTIME_DEVICE_LIB_PATH) -+ message(STATUS "ROCR Runtime custom device lib path: ${ROCR_RUNTIME_DEVICE_LIB_PATH}") -+ if(NOT IS_DIRECTORY "${ROCR_RUNTIME_DEVICE_LIB_PATH}") -+ message(WARNING "Custom ROCR_RUNTIME_DEVICE_LIB_PATH does not exist") -+ endif() -+ set(ROCR_RUNTIME_CLANG_DEVICE_LIB_ARGS "--rocm-device-lib-path=${ROCR_RUNTIME_DEVICE_LIB_PATH}") -+else() -+ set(ROCR_RUNTIME_CLANG_DEVICE_LIB_ARGS) -+endif() - - ## ------------------------- Linux Compiler and Linker options ------------------------- - set ( HSA_CXX_FLAGS ${HSA_COMMON_CXX_FLAGS} -fexceptions -fno-rtti -fvisibility=hidden -Wno-error=missing-braces -Wno-error=sign-compare -Wno-sign-compare -Wno-write-strings -Wno-conversion-null -fno-math-errno -fno-threadsafe-statics -fmerge-all-constants -fms-extensions -Wno-error=comment -Wno-comment -Wno-error=pointer-arith -Wno-pointer-arith -Wno-error=unused-variable -Wno-error=unused-function ) -@@ -157,6 +176,24 @@ target_compile_options(${CORE_RUNTIME_TARGET} PRIVATE ${HSA_CXX_FLAGS}) - set_property(TARGET ${CORE_RUNTIME_TARGET} PROPERTY LINK_FLAGS ${HSA_SHARED_LINK_FLAGS}) - ## ------------------------- End Compiler and Linker options ---------------------------- - -+## Ensure that 'clang' and 'llvm-objcopy' targets are available -+if(NOT TARGET clang OR NOT TARGET llvm-objcopy) -+ if(TARGET clang OR TARGET llvm-objcopy) -+ message(FATAL_ERROR "Detected one of 'clang' or 'llvm-objcopy' targets but not both") -+ endif() -+ message(STATUS "LLVM deps not found: finding Clang and LLVM packages") -+ find_package(Clang REQUIRED HINTS ${CMAKE_PREFIX_PATH}/llvm PATHS /opt/rocm/llvm ) -+ find_package(LLVM REQUIRED HINTS ${CMAKE_PREFIX_PATH}/llvm PATHS /opt/rocm/llvm ) -+endif() -+ -+if(${CMAKE_VERBOSE_MAKEFILE}) -+ get_property(clang_path TARGET clang PROPERTY LOCATION) -+ get_property(objcopy_path TARGET llvm-objcopy PROPERTY LOCATION) -+ message("Using clang from: ${clang_path}") -+ message("Using llvm-objcopy from: ${objcopy_path}") -+ message("Trap handlers assembled for: ${TARGET_DEVS}") -+endif() -+ - ## Source files. - set ( SRCS core/util/lnx/os_linux.cpp - core/util/small_heap.cpp -diff --git a/src/core/runtime/blit_shaders/CMakeLists.txt b/src/core/runtime/blit_shaders/CMakeLists.txt -index dc32b2f..f4ba18d 100644 ---- a/src/core/runtime/blit_shaders/CMakeLists.txt -+++ b/src/core/runtime/blit_shaders/CMakeLists.txt -@@ -44,24 +44,11 @@ - # Minimum required version of CMake - cmake_minimum_required ( VERSION 3.7 ) - --# Find Clang package and LLVM package --find_package(Clang REQUIRED HINTS ${CMAKE_PREFIX_PATH}/llvm PATHS /opt/rocm/llvm ) --find_package(LLVM REQUIRED HINTS ${CMAKE_PREFIX_PATH}/llvm PATHS /opt/rocm/llvm ) -- - # Set the target devices - set (TARGET_DEVS "gfx900;gfx940;gfx1010;gfx1030;gfx1100") - # Set the postfix for each target device - set (POSTFIX "9;940;1010;10;11") - --# If verbose output is enabled, print paths and target devices --if(${CMAKE_VERBOSE_MAKEFILE}) -- get_property(clang_path TARGET clang PROPERTY LOCATION) -- get_property(objcopy_path TARGET llvm-objcopy PROPERTY LOCATION) -- message("Using clang from: ${clang_path}") -- message("Using llvm-objcopy from: ${objcopy_path}") -- message("Blit Shaders assembled for: ${TARGET_DEVS}") --endif() -- - # Function to generate kernel bitcode - function(gen_kernel_bc TARGET_ID INPUT_FILE OUTPUT_FILE) - set(CODE_OBJECT "${OUTPUT_FILE}.hsaco") -diff --git a/src/core/runtime/trap_handler/CMakeLists.txt b/src/core/runtime/trap_handler/CMakeLists.txt -index 2196cb0..30a8dfb 100644 ---- a/src/core/runtime/trap_handler/CMakeLists.txt -+++ b/src/core/runtime/trap_handler/CMakeLists.txt -@@ -42,21 +42,9 @@ - - cmake_minimum_required ( VERSION 3.7 ) - --# Import target 'clang' and 'llvm-objcopy' --find_package(Clang REQUIRED HINTS ${CMAKE_PREFIX_PATH}/llvm PATHS /opt/rocm/llvm ) --find_package(LLVM REQUIRED HINTS ${CMAKE_PREFIX_PATH}/llvm PATHS /opt/rocm/llvm ) -- - set (TARGET_DEVS "gfx900;gfx940;gfx941;gfx942;gfx1010;gfx1030;gfx1100") - set (POSTFIX "9;940;941;942;1010;10;11") - --if(${CMAKE_VERBOSE_MAKEFILE}) -- get_property(clang_path TARGET clang PROPERTY LOCATION) -- get_property(objcopy_path TARGET llvm-objcopy PROPERTY LOCATION) -- message("Using clang from: ${clang_path}") -- message("Using llvm-objcopy from: ${objcopy_path}") -- message("Trap handlers assembled for: ${TARGET_DEVS}") --endif() -- - ##========================================== - ## Add custom command to generate a kernel code object file - ##========================================== -diff --git a/src/image/blit_src/CMakeLists.txt b/src/image/blit_src/CMakeLists.txt -index 481adf8..3d62b9d 100644 ---- a/src/image/blit_src/CMakeLists.txt -+++ b/src/image/blit_src/CMakeLists.txt -@@ -42,9 +42,6 @@ - - cmake_minimum_required ( VERSION 3.7 ) - --# Import target 'clang' --find_package(Clang REQUIRED HINTS ${CMAKE_PREFIX_PATH}/llvm PATHS /opt/rocm/llvm ) -- - # Determine the target devices if not specified - if (NOT DEFINED TARGET_DEVICES) - set (TARGET_DEVICES "gfx700;gfx701;gfx702;gfx801;gfx802;gfx803;gfx805;gfx810" -@@ -54,15 +51,6 @@ if (NOT DEFINED TARGET_DEVICES) - endif() - set( TARGET_DEVICES ${TARGET_DEVICES} CACHE STRING "Build targets" FORCE ) - --if(${CMAKE_VERBOSE_MAKEFILE}) -- get_property(clang_path TARGET clang PROPERTY LOCATION) -- message("Using clang from: ${clang_path}") -- message("Build Setting:") -- message(" Target Devices*: ${TARGET_DEVICES}") -- message(" (Specify \";\" separated list of target IDs.)") -- message(" Clang path: ${clang_path}") --endif() -- - ##========================================== - ## Add custom command to generate a kernel code object file - ##========================================== -@@ -71,12 +59,13 @@ function(gen_kernel_bc TARGET_ID INPUT_FILE OUTPUT_FILE) - separate_arguments(CLANG_ARG_LIST UNIX_COMMAND - "-O2 -x cl -Xclang -finclude-default-header -cl-denorms-are-zero -cl-std=CL2.0 - -target amdgcn-amd-amdhsa -mcpu=${TARGET_ID} -mcode-object-version=4 -+ ${ROCR_RUNTIME_CLANG_DEVICE_LIB_ARGS} - -o ${OUTPUT_FILE} ${INPUT_FILE}") - - ## Add custom command to produce a code object file. - ## This depends on the kernel source file & compiler. - add_custom_command(OUTPUT ${OUTPUT_FILE} COMMAND clang ${CLANG_ARG_LIST} -- DEPENDS ${INPUT_FILE} clang -+ DEPENDS ${INPUT_FILE} clang ${ROCR_RUNTIME_DEVICE_LIB_DEPS} - COMMENT "BUILDING bitcode for ${OUTPUT_FILE}..." - VERBATIM) - -@@ -133,7 +122,10 @@ function(generate_blit_file BFILE) - DEPENDS ${HSACO_TARG_LIST} create_hsaco_ascii_file.sh ) - - ## Export a target that builds (and depends on) opencl_blit_objects.cpp -- add_custom_target( ${BFILE} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${BFILE}.cpp ) -+ add_custom_target(${BFILE} -+ DEPENDS -+ ${CMAKE_CURRENT_BINARY_DIR}/${BFILE}.cpp -+ ${ROCR_RUNTIME_DEVICE_LIB_DEPS} ) - - endfunction(generate_blit_file) - diff --git a/patches/ROCT-Thunk-Interface-header-nest.patch b/patches/ROCT-Thunk-Interface-header-nest.patch deleted file mode 100644 index c045d11..0000000 --- a/patches/ROCT-Thunk-Interface-header-nest.patch +++ /dev/null @@ -1,170 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 1263efb..4341ac9 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -208,7 +208,7 @@ install ( TARGETS ${HSAKMT_TARGET} - #install ( FILES ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT devel ) - - # Install public headers --install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${HSAKMT_TARGET} -+install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/${HSAKMT_TARGET} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${HSAKMT_TARGET} - COMPONENT devel PATTERN "linux" EXCLUDE ) - - # Option to build header path migration helpers. -diff --git a/include/hsakmt.h b/include/hsakmt/hsakmt.h -similarity index 100% -rename from include/hsakmt.h -rename to include/hsakmt/hsakmt.h -diff --git a/include/hsakmttypes.h b/include/hsakmt/hsakmttypes.h -similarity index 100% -rename from include/hsakmttypes.h -rename to include/hsakmt/hsakmttypes.h -diff --git a/include/linux/kfd_ioctl.h b/include/hsakmt/linux/kfd_ioctl.h -similarity index 100% -rename from include/linux/kfd_ioctl.h -rename to include/hsakmt/linux/kfd_ioctl.h -diff --git a/src/debug.c b/src/debug.c -index d438a28..932e829 100644 ---- a/src/debug.c -+++ b/src/debug.c -@@ -24,7 +24,7 @@ - */ - - #include "libhsakmt.h" --#include "linux/kfd_ioctl.h" -+#include "hsakmt/linux/kfd_ioctl.h" - #include - #include - #include -diff --git a/src/events.c b/src/events.c -index 60e9f6d..a9e8ccc 100644 ---- a/src/events.c -+++ b/src/events.c -@@ -31,7 +31,7 @@ - #include - #include - #include --#include "linux/kfd_ioctl.h" -+#include "hsakmt/linux/kfd_ioctl.h" - #include "fmm.h" - - static HSAuint64 *events_page = NULL; -diff --git a/src/fmm.c b/src/fmm.c -index b87ee12..1db6984 100644 ---- a/src/fmm.c -+++ b/src/fmm.c -@@ -25,7 +25,7 @@ - - #include "libhsakmt.h" - #include "fmm.h" --#include "linux/kfd_ioctl.h" -+#include "hsakmt/linux/kfd_ioctl.h" - #include - #include - #include -diff --git a/src/fmm.h b/src/fmm.h -index b8c9b84..d414b91 100644 ---- a/src/fmm.h -+++ b/src/fmm.h -@@ -26,7 +26,7 @@ - #ifndef FMM_H_ - #define FMM_H_ - --#include "hsakmttypes.h" -+#include "hsakmt/hsakmttypes.h" - #include - - typedef enum { -diff --git a/src/libhsakmt.h b/src/libhsakmt.h -index 2d8da2c..348cc46 100644 ---- a/src/libhsakmt.h -+++ b/src/libhsakmt.h -@@ -26,8 +26,8 @@ - #ifndef LIBHSAKMT_H_INCLUDED - #define LIBHSAKMT_H_INCLUDED - --#include "linux/kfd_ioctl.h" --#include "hsakmt.h" -+#include "hsakmt/linux/kfd_ioctl.h" -+#include "hsakmt/hsakmt.h" - #include - #include - #include -diff --git a/src/memory.c b/src/memory.c -index ba33abd..5825db9 100644 ---- a/src/memory.c -+++ b/src/memory.c -@@ -24,7 +24,7 @@ - */ - - #include "libhsakmt.h" --#include "linux/kfd_ioctl.h" -+#include "hsakmt/linux/kfd_ioctl.h" - #include - #include - #include -diff --git a/src/perfctr.c b/src/perfctr.c -index ed051be..32df25a 100644 ---- a/src/perfctr.c -+++ b/src/perfctr.c -@@ -30,7 +30,7 @@ - #include - #include "libhsakmt.h" - #include "pmc_table.h" --#include "linux/kfd_ioctl.h" -+#include "hsakmt/linux/kfd_ioctl.h" - #include - #include - #include -diff --git a/src/queues.c b/src/queues.c -index f72f6d6..2cee2db 100644 ---- a/src/queues.c -+++ b/src/queues.c -@@ -25,7 +25,7 @@ - - #include "libhsakmt.h" - #include "fmm.h" --#include "linux/kfd_ioctl.h" -+#include "hsakmt/linux/kfd_ioctl.h" - #include - #include - #include -diff --git a/src/spm.c b/src/spm.c -index c4eb33e..9571197 100644 ---- a/src/spm.c -+++ b/src/spm.c -@@ -24,7 +24,7 @@ - */ - - #include "libhsakmt.h" --#include "linux/kfd_ioctl.h" -+#include "hsakmt/linux/kfd_ioctl.h" - #include - #include - -diff --git a/src/time.c b/src/time.c -index 96729a1..286350b 100644 ---- a/src/time.c -+++ b/src/time.c -@@ -24,7 +24,7 @@ - */ - - #include "libhsakmt.h" --#include "linux/kfd_ioctl.h" -+#include "hsakmt/linux/kfd_ioctl.h" - - HSAKMT_STATUS HSAKMTAPI hsaKmtGetClockCounters(HSAuint32 NodeId, - HsaClockCounters *Counters) -diff --git a/src/version.c b/src/version.c -index 34e51e0..c6e2e8d 100644 ---- a/src/version.c -+++ b/src/version.c -@@ -26,7 +26,7 @@ - #include "libhsakmt.h" - #include - #include --#include "linux/kfd_ioctl.h" -+#include "hsakmt/linux/kfd_ioctl.h" - - HsaVersionInfo kfd_version_info; - diff --git a/patches/ROCT-Thunk-Interface-link-dl-libs.patch b/patches/ROCT-Thunk-Interface-link-dl-libs.patch deleted file mode 100644 index c125596..0000000 --- a/patches/ROCT-Thunk-Interface-link-dl-libs.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 1263efb..d70df9d 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -176,7 +176,7 @@ include_directories(${DRM_AMDGPU_INCLUDE_DIRS}) - include_directories(${DRM_INCLUDE_DIRS}) - - target_link_libraries ( ${HSAKMT_TARGET} -- PRIVATE ${DRM_LDFLAGS} ${DRM_AMDGPU_LDFLAGS} pthread rt c numa -+ PRIVATE ${DRM_LDFLAGS} ${DRM_AMDGPU_LDFLAGS} pthread rt c numa ${CMAKE_DL_LIBS} - ) - - target_compile_options(${HSAKMT_TARGET} PRIVATE ${DRM_CFLAGS} ${HSAKMT_C_FLAGS}) diff --git a/patches/clr-disable-hipconfig-check.patch b/patches/clr-disable-hipconfig-check.patch deleted file mode 100644 index f5419fb..0000000 --- a/patches/clr-disable-hipconfig-check.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 4e4ad5407..759a16b71 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -47,9 +47,9 @@ if(CLR_BUILD_HIP) - endif() - message(STATUS "HIPCC Binary Directory: ${HIPCC_BIN_DIR}") - -- if(NOT EXISTS ${HIPCC_BIN_DIR}/hipconfig) -- message(FATAL_ERROR "Please pass hipcc/build or hipcc/bin using -DHIPCC_BIN_DIR.") -- endif() -+ # if(NOT EXISTS ${HIPCC_BIN_DIR}/hipconfig) -+ # message(FATAL_ERROR "Please pass hipcc/build or hipcc/bin using -DHIPCC_BIN_DIR.") -+ # endif() - - message(STATUS "HIP Common Directory: ${HIP_COMMON_DIR}") - if(NOT DEFINED HIP_COMMON_DIR) diff --git a/patches/clr-respect-no-versioned-soname.patch b/patches/clr-respect-no-versioned-soname.patch deleted file mode 100644 index d42c50b..0000000 --- a/patches/clr-respect-no-versioned-soname.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/hipamd/packaging/CMakeLists.txt b/hipamd/packaging/CMakeLists.txt -index 73ae1baad..76e359e22 100644 ---- a/hipamd/packaging/CMakeLists.txt -+++ b/hipamd/packaging/CMakeLists.txt -@@ -42,16 +42,23 @@ set(CPACK_RPM_PACKAGE_LICENSE "MIT") - #Begin binary files install - if(HIP_PLATFORM STREQUAL "amd" ) - if(BUILD_SHARED_LIBS) -+ # Note: This is not locally built. It is downloaded and included. - install(PROGRAMS ${PROJECT_BINARY_DIR}/libamdhip64.so.5 DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary OPTIONAL) -+ -+ # Locally built libraries must respect the CMAKE_PLATFORM_NO_VERSIONED_SONAME -+ # setting. Note that the better way to do this would be to install the -+ # targets and let CMake distinghuish (would also work on Windows). - install(PROGRAMS ${PROJECT_BINARY_DIR}/lib/libamdhip64.so DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) -- install(PROGRAMS ${PROJECT_BINARY_DIR}/lib/libamdhip64.so.${HIP_LIB_VERSION_MAJOR} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) -- install(PROGRAMS ${PROJECT_BINARY_DIR}/lib/libamdhip64.so.${HIP_LIB_VERSION_STRING} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) - install(PROGRAMS ${PROJECT_BINARY_DIR}/lib/libhiprtc.so DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) -- install(PROGRAMS ${PROJECT_BINARY_DIR}/lib/libhiprtc.so.${HIP_LIB_VERSION_MAJOR} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) -- install(PROGRAMS ${PROJECT_BINARY_DIR}/lib/libhiprtc.so.${HIP_LIB_VERSION_STRING} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) - install(PROGRAMS ${PROJECT_BINARY_DIR}/lib/libhiprtc-builtins.so DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) -- install(PROGRAMS ${PROJECT_BINARY_DIR}/lib/libhiprtc-builtins.so.${HIP_LIB_VERSION_MAJOR} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) -- install(PROGRAMS ${PROJECT_BINARY_DIR}/lib/libhiprtc-builtins.so.${HIP_LIB_VERSION_STRING} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) -+ if(NOT CMAKE_PLATFORM_NO_VERSIONED_SONAME) -+ install(PROGRAMS ${PROJECT_BINARY_DIR}/lib/libhiprtc-builtins.so.${HIP_LIB_VERSION_MAJOR} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) -+ install(PROGRAMS ${PROJECT_BINARY_DIR}/lib/libhiprtc-builtins.so.${HIP_LIB_VERSION_STRING} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) -+ install(PROGRAMS ${PROJECT_BINARY_DIR}/lib/libhiprtc.so.${HIP_LIB_VERSION_MAJOR} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) -+ install(PROGRAMS ${PROJECT_BINARY_DIR}/lib/libhiprtc.so.${HIP_LIB_VERSION_STRING} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) -+ install(PROGRAMS ${PROJECT_BINARY_DIR}/lib/libamdhip64.so.${HIP_LIB_VERSION_MAJOR} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) -+ install(PROGRAMS ${PROJECT_BINARY_DIR}/lib/libamdhip64.so.${HIP_LIB_VERSION_STRING} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary) -+ endif() - # Add libraries to asan package - install(DIRECTORY ${PROJECT_BINARY_DIR}/lib/ DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT asan - PATTERN ".hipInfo" EXCLUDE) diff --git a/patches/hipify-install-headers-in-include-hipify.patch b/patches/hipify-install-headers-in-include-hipify.patch deleted file mode 100644 index 8283df8..0000000 --- a/patches/hipify-install-headers-in-include-hipify.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 02df74d..ceba0f9 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -183,8 +183,8 @@ if (NOT HIPIFY_CLANG_TESTS_ONLY) - if(NOT HIPIFY_INCLUDE_IN_HIP_SDK) - # Install all folders under clang/version/ in CMAKE_INSTALL_PREFIX path. - install( -- DIRECTORY ${LLVM_DIR}/../../clang/${LIB_CLANG_RES}/ -- DESTINATION . -+ DIRECTORY ${LLVM_DIR}/../../clang/${LIB_CLANG_RES}/include/ -+ DESTINATION include/hipify - COMPONENT clang-resource-headers - FILES_MATCHING - PATTERN "*.h" -@@ -198,8 +198,8 @@ if (NOT HIPIFY_CLANG_TESTS_ONLY) - - # install all folders under clang/version/ in CMAKE_INSTALL_PREFIX path - install( -- DIRECTORY ${LLVM_DIR}/../../clang/${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}/ -- DESTINATION . -+ DIRECTORY ${LLVM_DIR}/../../clang/${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}/include/ -+ DESTINATION include/hipify - COMPONENT clang-resource-headers - FILES_MATCHING - PATTERN "*.h" -diff --git a/packaging/hipify-clang.txt b/packaging/hipify-clang.txt -index 27dae2e..0d75178 100644 ---- a/packaging/hipify-clang.txt -+++ b/packaging/hipify-clang.txt -@@ -9,7 +9,7 @@ install(PROGRAMS @HIPIFY_BIN_INSTALL_PATH@/hipconvertinplace-perl.sh DESTINATION - install(PROGRAMS @HIPIFY_BIN_INSTALL_PATH@/hipconvertinplace.sh DESTINATION @CMAKE_INSTALL_BINDIR@) - install(PROGRAMS @HIPIFY_BIN_INSTALL_PATH@/hipexamine-perl.sh DESTINATION @CMAKE_INSTALL_BINDIR@) - install(PROGRAMS @HIPIFY_BIN_INSTALL_PATH@/hipexamine.sh DESTINATION @CMAKE_INSTALL_BINDIR@) --install(DIRECTORY @CMAKE_INSTALL_PREFIX@/include/ DESTINATION @CMAKE_INSTALL_INCLUDEDIR@/hipify) -+install(DIRECTORY @CMAKE_INSTALL_PREFIX@/include/hipify/ DESTINATION @CMAKE_INSTALL_INCLUDEDIR@/hipify) - - set (FILE_REORG_BACKWARD_COMPATIBILITY "@FILE_REORG_BACKWARD_COMPATIBILITY@") - if(FILE_REORG_BACKWARD_COMPATIBILITY) diff --git a/patches/rccl-overwrite-generated-files.patch b/patches/rccl-overwrite-generated-files.patch deleted file mode 100644 index 1f17674..0000000 --- a/patches/rccl-overwrite-generated-files.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/cmake/Generator.cmake b/cmake/Generator.cmake -index a38cd80..12cf711 100644 ---- a/cmake/Generator.cmake -+++ b/cmake/Generator.cmake -@@ -149,6 +149,7 @@ function(gen_device_table) - ## Generate device table and list all the functions - set(DEVICE_TABLE_H_FILE "${HIPIFY_DIR}/src/collectives/device/device_table.h") - message(STATUS "Generating ${DEVICE_TABLE_H_FILE}") -+ file(REMOVE "${DEVICE_TABLE_H_FILE}") - - ## Declaration of device functions - foreach(func IN LISTS FUNC_LIST) -@@ -218,6 +219,7 @@ function(gen_device_table) - if(COLLTRACE) - set(DEVICE_TABLE_FILE "${HIPIFY_DIR}/src/collectives/device/device_table.cpp") - message(STATUS "Generating ${DEVICE_TABLE_FILE}") -+ file(REMOVE "${DEVICE_TABLE_FILE}") - - file(APPEND ${DEVICE_TABLE_FILE} "#include \"collectives.h\"\n#include \"devcomm.h\"\n\n const char* funcNames[FUNC_INDEX_TOTAL] = {\n") - foreach(func ${FUNC_LIST}) diff --git a/patches/rocm-cmake-nocheck.patch b/patches/rocm-cmake-nocheck.patch deleted file mode 100644 index 228cbb5..0000000 --- a/patches/rocm-cmake-nocheck.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index ca14bde..e256d44 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -38,7 +38,7 @@ add_custom_target(analyze COMMAND cmake-lint ${CMAKE_FILES} WORKING_DIRECTORY ${ - add_custom_target(format COMMAND cmake-format -i ${CMAKE_FILES} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) - - enable_testing() --add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C ${CMAKE_CFG_INTDIR}) -+# add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C ${CMAKE_CFG_INTDIR}) - add_subdirectory(test) - add_subdirectory(doc) - diff --git a/patches/rocm_smi_lib-use-cmake-generator-expr-for-target-out-path-when-stripping.patch b/patches/rocm_smi_lib-use-cmake-generator-expr-for-target-out-path-when-stripping.patch deleted file mode 100644 index b68a318..0000000 --- a/patches/rocm_smi_lib-use-cmake-generator-expr-for-target-out-path-when-stripping.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/oam/CMakeLists.txt b/oam/CMakeLists.txt -index 6927d24..3718a64 100644 ---- a/oam/CMakeLists.txt -+++ b/oam/CMakeLists.txt -@@ -87,7 +87,7 @@ if ("${CMAKE_BUILD_TYPE}" STREQUAL Release) - if(${BUILD_SHARED_LIBS}) #striping only for .so - add_custom_command( - TARGET ${OAM_TARGET} -- POST_BUILD COMMAND ${CMAKE_STRIP} lib${OAM_TARGET}.so) -+ POST_BUILD COMMAND ${CMAKE_STRIP} "$") - endif() - endif () - -diff --git a/rocm_smi/CMakeLists.txt b/rocm_smi/CMakeLists.txt -index 645e598..0b67549 100755 ---- a/rocm_smi/CMakeLists.txt -+++ b/rocm_smi/CMakeLists.txt -@@ -109,7 +109,7 @@ if ("${CMAKE_BUILD_TYPE}" STREQUAL Release) - if(${BUILD_SHARED_LIBS}) #stripping only for .so - add_custom_command( - TARGET ${ROCM_SMI_TARGET} -- POST_BUILD COMMAND ${CMAKE_STRIP} lib${ROCM_SMI_TARGET}.so.${SO_VERSION_STRING}) -+ POST_BUILD COMMAND ${CMAKE_STRIP} "$") - endif() - endif () - From 60642b577164b890f7ef53627a71c16589c8a557 Mon Sep 17 00:00:00 2001 From: Stella Laurenzo Date: Fri, 17 Jan 2025 16:22:04 -0800 Subject: [PATCH 2/2] Comments --- README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index d119e49..05c731d 100644 --- a/README.md +++ b/README.md @@ -30,26 +30,24 @@ This will use the [repo](https://source.android.com/docs/setup/reference/repo) tool with modified ROCm [manifest](https://github.com/nod-ai/ROCm/blob/the-rock-main/default.xml). It will also apply patches to some of the repositories. -Alternatively, for a specific ROCm version e.g. 6.1.0 +Alternatively, for a specific ROCm version e.g. 6.3.0 ``` python ./build_tools/fetch_sources.py \ - --manifest-url http://github.com/ROCm/ROCm.git \ + --manifest-url https://github.com/ROCm/ROCm.git \ --manifest-name tools/rocm-build/rocm-6.3.1.xml \ --manifest-branch roc-6.3.x ``` -TODO: Figure out why this only works with the http URL. - This will also apply the patches to the downloaded source files. ## Manually Checkout the latest development branch with ``` -mkdir ~/github/rocm +mkdir -p ~/github/rocm cd ~/github/rocm -repo init -u http://github.com/ROCm/ROCm.git -m tools/rocm-build/rocm-6.3.1.xml -b roc-6.3.x +repo init -u https://github.com/ROCm/ROCm.git -m tools/rocm-build/rocm-6.3.1.xml -b roc-6.3.x repo sync -j16 ``` Checkout out latest LLVM sources