From 1c5168a68cbd72c5ba579821271c8ca6a211b4bd Mon Sep 17 00:00:00 2001 From: AaronStGeorge Date: Wed, 25 Feb 2026 18:20:41 +0000 Subject: [PATCH 1/7] Split iree-libs into iree-compiler + fusilli-libs stages for multi-arch CI The iree-compiler stage (~3hr LLVM build) runs parallel to math-libs, then fusilli-libs runs after both complete. This avoids blocking the IREE compiler build on math-libs while still satisfying fusilliprovider's hipdnn dependency. Changes: - BUILD_TOPOLOGY.toml: Split iree-libs stage/group into iree-compiler and fusilli-libs, with feature_group="IREE_LIBS" to preserve single toggle - multi_arch_build_portable_linux.yml: Add iree-compiler and fusilli-libs jobs - CMakeLists.txt: Remove resolved TODO, fix quoting, enable by default Resolves: ROCm/TheRock#3451 Co-Authored-By: Claude Opus 4.6 --- .../multi_arch_build_portable_linux.yml | 38 ++++++++++++++++++- BUILD_TOPOLOGY.toml | 30 +++++++++++---- CMakeLists.txt | 3 +- .../fetch_test_configurations.py | 16 ++++---- iree-libs/CMakeLists.txt | 1 + 5 files changed, 69 insertions(+), 19 deletions(-) diff --git a/.github/workflows/multi_arch_build_portable_linux.yml b/.github/workflows/multi_arch_build_portable_linux.yml index d1a7d819955..a3697617e2d 100644 --- a/.github/workflows/multi_arch_build_portable_linux.yml +++ b/.github/workflows/multi_arch_build_portable_linux.yml @@ -8,7 +8,9 @@ # 5. debug-tools (generic) - amd-dbgapi, rocr-debug-agent, rocgdb (parallel to math-libs) # 6. dctools-core (generic) - RDC (parallel to math-libs) # 7. profiler-apps (generic) - rocprofiler-systems (parallel to math-libs) -# 8. media-libs (generic) - sysdeps-amd-mesa, rocdecode, rocjpeg +# 8. iree-compiler (generic) - IREE compiler (parallel to math-libs) +# 9. fusilli-libs (generic) - Fusilli hipdnn provider (after math-libs + iree-compiler) +# 10. media-libs (generic) - sysdeps-amd-mesa, rocdecode, rocjpeg name: Multi-Arch Build (Linux) @@ -175,6 +177,40 @@ jobs: contents: read id-token: write + # ========================================================================== + # STAGE: iree-compiler (generic, parallel to math-libs) + # ========================================================================== + iree-compiler: + needs: compiler-runtime + uses: ./.github/workflows/multi_arch_build_portable_linux_artifacts.yml + secrets: inherit + with: + stage_name: iree-compiler + stage_display_name: "Stage - IREE Compiler" + timeout_minutes: 180 # 3 hours - includes captive LLVM build + dist_amdgpu_families: ${{ inputs.dist_amdgpu_families }} + rocm_package_version: ${{ inputs.rocm_package_version }} + permissions: + contents: read + id-token: write + + # ========================================================================== + # STAGE: fusilli-libs (generic, after math-libs + iree-compiler) + # ========================================================================== + fusilli-libs: + needs: [compiler-runtime, math-libs, iree-compiler] + uses: ./.github/workflows/multi_arch_build_portable_linux_artifacts.yml + secrets: inherit + with: + stage_name: fusilli-libs + stage_display_name: "Stage - Fusilli Libs" + timeout_minutes: 60 # 1 hour + dist_amdgpu_families: ${{ inputs.dist_amdgpu_families }} + rocm_package_version: ${{ inputs.rocm_package_version }} + permissions: + contents: read + id-token: write + # ========================================================================== # STAGE: media-libs (generic) # ========================================================================== diff --git a/BUILD_TOPOLOGY.toml b/BUILD_TOPOLOGY.toml index 0c800cf0b6e..f03814e6d3b 100644 --- a/BUILD_TOPOLOGY.toml +++ b/BUILD_TOPOLOGY.toml @@ -175,9 +175,13 @@ artifact_groups = ["dctools-core"] # artifact_groups = ["dctools-rocm"] # depends_on = ["math-libs"] # Will need math/ML libraries -[build_stages.iree-libs] -description = "IREE and Fusilli integration" -artifact_groups = ["iree-libs"] +[build_stages.iree-compiler] +description = "IREE compiler (parallel to math-libs)" +artifact_groups = ["iree-compiler"] + +[build_stages.fusilli-libs] +description = "Fusilli hipdnn provider (needs math-libs + iree-compiler)" +artifact_groups = ["fusilli-libs"] [build_stages.profiler-apps] description = "Profiler applications (depends on profiler-core)" @@ -298,11 +302,19 @@ type = "generic" artifact_group_deps = ["profiler-core", "compiler", "core-amdsmi"] source_sets = ["rocm-systems", "profiler-extras"] # rocprofiler-systems + trace decoder -[artifact_groups.iree-libs] -description = "IREE and Fusilli integration" +[artifact_groups.iree-compiler] +description = "IREE compiler" type = "generic" artifact_group_deps = ["hip-runtime"] -source_sets = ["iree-libs"] +# TODO: rocm-systems included for projects/hip/VERSION (see CMakeLists.txt) +source_sets = ["iree-libs", "rocm-systems"] + +[artifact_groups.fusilli-libs] +description = "Fusilli hipdnn provider" +type = "generic" +artifact_group_deps = ["hip-runtime", "iree-compiler"] +# TODO: rocm-systems included for projects/hip/VERSION (see CMakeLists.txt) +source_sets = ["iree-libs", "rocm-systems"] [artifact_groups.media-libs] description = "Media Libraries" @@ -586,16 +598,18 @@ artifact_deps = ["core-runtime", "core-hip", "miopen", "hipdnn", "miopenprovider # --- IREE Integration --- [artifacts.iree-compiler] -artifact_group = "iree-libs" +artifact_group = "iree-compiler" type = "target-neutral" artifact_deps = ["core-hip"] disable_platforms = ["windows"] +feature_group = "IREE_LIBS" [artifacts.fusilliprovider] -artifact_group = "iree-libs" +artifact_group = "fusilli-libs" type = "target-neutral" artifact_deps = ["core-runtime", "core-hip", "hipdnn", "spdlog", "iree-compiler"] disable_platforms = ["windows"] +feature_group = "IREE_LIBS" # --- Media Integration --- diff --git a/CMakeLists.txt b/CMakeLists.txt index c2b1396b96a..1d33d4f36c4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -241,8 +241,7 @@ option(THEROCK_ENABLE_DC_TOOLS "Enable building of data center tools" "${THEROCK option(THEROCK_ENABLE_MEDIA_LIBS "Enable building of Media libraries" "${THEROCK_ENABLE_ALL}") option(THEROCK_ENABLE_HOST_MATH "Build all bundled host math libraries by default" OFF) option(THEROCK_RESET_FEATURES "One-shot flag which forces all feature flags to their default state for this configuration run" OFF) -# TODO(iree-org/fusilli/issues/57): Enable fusilli build once multi-arch support lands. -option(THEROCK_ENABLE_IREE_LIBS "Enable building of IREE libraries" OFF) +option(THEROCK_ENABLE_IREE_LIBS "Enable building of IREE libraries" "${THEROCK_ENABLE_ALL}") ################################################################################ # Artifact-based features are auto-generated from BUILD_TOPOLOGY.toml diff --git a/build_tools/github_actions/fetch_test_configurations.py b/build_tools/github_actions/fetch_test_configurations.py index ba7d797faad..289cb1e3e7f 100644 --- a/build_tools/github_actions/fetch_test_configurations.py +++ b/build_tools/github_actions/fetch_test_configurations.py @@ -352,14 +352,14 @@ def _get_script_path(script_name: str) -> str: }, # TODO(iree-org/fusilli/issues/57): Enable fusilli tests once build is # enabled by default. - # "fusilliprovider": { - # "job_name": "fusilliprovider", - # "fetch_artifact_args": "--hipdnn --fusilliprovider --iree-compiler --tests", - # "timeout_minutes": 15, - # "test_script": f"python {_get_script_path('test_fusilliprovider.py')}", - # "platform": ["linux"], - # "total_shards": 1, - # }, + "fusilliprovider": { + "job_name": "fusilliprovider", + "fetch_artifact_args": "--hipdnn --fusilliprovider --iree-compiler --tests", + "timeout_minutes": 15, + "test_script": f"python {_get_script_path('test_fusilliprovider.py')}", + "platform": ["linux"], + "total_shards": 1, + }, # hipBLASLt provider tests "hipblasltprovider": { "job_name": "hipblasltprovider", diff --git a/iree-libs/CMakeLists.txt b/iree-libs/CMakeLists.txt index 7d25c663fd3..c4fdc77b304 100644 --- a/iree-libs/CMakeLists.txt +++ b/iree-libs/CMakeLists.txt @@ -3,6 +3,7 @@ ############################################################################## if(THEROCK_ENABLE_IREE_COMPILER) therock_cmake_subproject_declare(iree-compiler + USE_DIST_AMDGPU_TARGETS NO_MERGE_COMPILE_COMMANDS BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/iree-compiler" EXTERNAL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/iree" From cffd2ac118d70b907b2bde4eaa3f526537887a6c Mon Sep 17 00:00:00 2001 From: AaronStGeorge Date: Thu, 26 Feb 2026 19:20:09 +0000 Subject: [PATCH 2/7] Bump fusilli and IREE for c2y-extensions fix --- iree-libs/fusilli | 2 +- iree-libs/iree | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/iree-libs/fusilli b/iree-libs/fusilli index 4e1cf4ff1c4..b7000290fbf 160000 --- a/iree-libs/fusilli +++ b/iree-libs/fusilli @@ -1 +1 @@ -Subproject commit 4e1cf4ff1c41d95fd3206dbbd45a9ffe4f57249b +Subproject commit b7000290fbfefb656a3fbc2dccaa9769c7b4abe3 diff --git a/iree-libs/iree b/iree-libs/iree index 4802bac98f1..0dca45a3185 160000 --- a/iree-libs/iree +++ b/iree-libs/iree @@ -1 +1 @@ -Subproject commit 4802bac98f12c68ca86014e1aaef225202e72300 +Subproject commit 0dca45a31855f628ae66aa3d1b23d6e8790177c8 From f6ccc4c11f9e6a1f646c428298d98cf5fd815696 Mon Sep 17 00:00:00 2001 From: AaronStGeorge Date: Thu, 26 Feb 2026 22:24:08 +0000 Subject: [PATCH 3/7] Add TARGET_NEUTRAL to fusilliprovider artifact The fusilliprovider artifact was missing TARGET_NEUTRAL, causing it to be named with a target-specific suffix (e.g. _gfx94X-dcgpu) instead of _generic. This made the multi-arch CI artifact push fail with "No matching artifacts found" since BUILD_TOPOLOGY.toml already declared it as target-neutral. Co-Authored-By: Claude Opus 4.6 --- iree-libs/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/iree-libs/CMakeLists.txt b/iree-libs/CMakeLists.txt index c4fdc77b304..e44c8314ebf 100644 --- a/iree-libs/CMakeLists.txt +++ b/iree-libs/CMakeLists.txt @@ -112,6 +112,7 @@ if(THEROCK_ENABLE_FUSILLIPROVIDER) therock_cmake_subproject_activate(fusilliprovider) therock_provide_artifact(fusilliprovider + TARGET_NEUTRAL DESCRIPTOR artifact-fusilliprovider.toml COMPONENTS dbg From d96da8dce21ed1c2f1ca61613ed286596cb2506b Mon Sep 17 00:00:00 2001 From: AaronStGeorge Date: Sat, 28 Feb 2026 01:03:43 +0000 Subject: [PATCH 4/7] bump --- iree-libs/fusilli | 2 +- iree-libs/iree | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/iree-libs/fusilli b/iree-libs/fusilli index b7000290fbf..4077c757cbb 160000 --- a/iree-libs/fusilli +++ b/iree-libs/fusilli @@ -1 +1 @@ -Subproject commit b7000290fbfefb656a3fbc2dccaa9769c7b4abe3 +Subproject commit 4077c757cbbcf100326eb932041accd2885cb96d diff --git a/iree-libs/iree b/iree-libs/iree index 0dca45a3185..1fe030bc750 160000 --- a/iree-libs/iree +++ b/iree-libs/iree @@ -1 +1 @@ -Subproject commit 0dca45a31855f628ae66aa3d1b23d6e8790177c8 +Subproject commit 1fe030bc7500e272f23eac48b4959ab38d219e2a From 06ea45e7e109f0630d2addfede466823a95f538a Mon Sep 17 00:00:00 2001 From: AaronStGeorge Date: Tue, 3 Mar 2026 18:44:42 +0000 Subject: [PATCH 5/7] re-word comment --- .github/workflows/multi_arch_build_portable_linux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/multi_arch_build_portable_linux.yml b/.github/workflows/multi_arch_build_portable_linux.yml index a3697617e2d..38a55018fff 100644 --- a/.github/workflows/multi_arch_build_portable_linux.yml +++ b/.github/workflows/multi_arch_build_portable_linux.yml @@ -187,7 +187,7 @@ jobs: with: stage_name: iree-compiler stage_display_name: "Stage - IREE Compiler" - timeout_minutes: 180 # 3 hours - includes captive LLVM build + timeout_minutes: 90 # 1.5 hours - iree is not _yet_ building with a common llvm, it includes its own. dist_amdgpu_families: ${{ inputs.dist_amdgpu_families }} rocm_package_version: ${{ inputs.rocm_package_version }} permissions: From 736a7157a6cd8bc2e7b6dfec599f04e4112d9898 Mon Sep 17 00:00:00 2001 From: AaronStGeorge Date: Tue, 3 Mar 2026 20:34:40 +0000 Subject: [PATCH 6/7] add comment --- iree-libs/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/iree-libs/CMakeLists.txt b/iree-libs/CMakeLists.txt index e44c8314ebf..e5feb54edd1 100644 --- a/iree-libs/CMakeLists.txt +++ b/iree-libs/CMakeLists.txt @@ -3,6 +3,10 @@ ############################################################################## if(THEROCK_ENABLE_IREE_COMPILER) therock_cmake_subproject_declare(iree-compiler + # IREE compiler has general support for many GPUs/backends and doesn't + # compile device code. The build infrastructure requires generic stages to + # pass through DIST_AMDGPU_TARGETS even if the list isn't used by the + # underlying project. USE_DIST_AMDGPU_TARGETS NO_MERGE_COMPILE_COMMANDS BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/iree-compiler" From 1fe5df5b47cb74036b0044d9ac9fb41864e5bc87 Mon Sep 17 00:00:00 2001 From: AaronStGeorge Date: Wed, 4 Mar 2026 04:11:42 +0000 Subject: [PATCH 7/7] Remove temporary changes --- CMakeLists.txt | 3 ++- .../github_actions/fetch_test_configurations.py | 16 ++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1d33d4f36c4..c2b1396b96a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -241,7 +241,8 @@ option(THEROCK_ENABLE_DC_TOOLS "Enable building of data center tools" "${THEROCK option(THEROCK_ENABLE_MEDIA_LIBS "Enable building of Media libraries" "${THEROCK_ENABLE_ALL}") option(THEROCK_ENABLE_HOST_MATH "Build all bundled host math libraries by default" OFF) option(THEROCK_RESET_FEATURES "One-shot flag which forces all feature flags to their default state for this configuration run" OFF) -option(THEROCK_ENABLE_IREE_LIBS "Enable building of IREE libraries" "${THEROCK_ENABLE_ALL}") +# TODO(iree-org/fusilli/issues/57): Enable fusilli build once multi-arch support lands. +option(THEROCK_ENABLE_IREE_LIBS "Enable building of IREE libraries" OFF) ################################################################################ # Artifact-based features are auto-generated from BUILD_TOPOLOGY.toml diff --git a/build_tools/github_actions/fetch_test_configurations.py b/build_tools/github_actions/fetch_test_configurations.py index 289cb1e3e7f..ba7d797faad 100644 --- a/build_tools/github_actions/fetch_test_configurations.py +++ b/build_tools/github_actions/fetch_test_configurations.py @@ -352,14 +352,14 @@ def _get_script_path(script_name: str) -> str: }, # TODO(iree-org/fusilli/issues/57): Enable fusilli tests once build is # enabled by default. - "fusilliprovider": { - "job_name": "fusilliprovider", - "fetch_artifact_args": "--hipdnn --fusilliprovider --iree-compiler --tests", - "timeout_minutes": 15, - "test_script": f"python {_get_script_path('test_fusilliprovider.py')}", - "platform": ["linux"], - "total_shards": 1, - }, + # "fusilliprovider": { + # "job_name": "fusilliprovider", + # "fetch_artifact_args": "--hipdnn --fusilliprovider --iree-compiler --tests", + # "timeout_minutes": 15, + # "test_script": f"python {_get_script_path('test_fusilliprovider.py')}", + # "platform": ["linux"], + # "total_shards": 1, + # }, # hipBLASLt provider tests "hipblasltprovider": { "job_name": "hipblasltprovider",