diff --git a/.github/workflows/multi_arch_build_portable_linux.yml b/.github/workflows/multi_arch_build_portable_linux.yml index d1a7d819955..38a55018fff 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: 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: + 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/iree-libs/CMakeLists.txt b/iree-libs/CMakeLists.txt index 7d25c663fd3..e5feb54edd1 100644 --- a/iree-libs/CMakeLists.txt +++ b/iree-libs/CMakeLists.txt @@ -3,6 +3,11 @@ ############################################################################## 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" EXTERNAL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/iree" @@ -111,6 +116,7 @@ if(THEROCK_ENABLE_FUSILLIPROVIDER) therock_cmake_subproject_activate(fusilliprovider) therock_provide_artifact(fusilliprovider + TARGET_NEUTRAL DESCRIPTOR artifact-fusilliprovider.toml COMPONENTS dbg diff --git a/iree-libs/fusilli b/iree-libs/fusilli index 4e1cf4ff1c4..4077c757cbb 160000 --- a/iree-libs/fusilli +++ b/iree-libs/fusilli @@ -1 +1 @@ -Subproject commit 4e1cf4ff1c41d95fd3206dbbd45a9ffe4f57249b +Subproject commit 4077c757cbbcf100326eb932041accd2885cb96d diff --git a/iree-libs/iree b/iree-libs/iree index 4802bac98f1..1fe030bc750 160000 --- a/iree-libs/iree +++ b/iree-libs/iree @@ -1 +1 @@ -Subproject commit 4802bac98f12c68ca86014e1aaef225202e72300 +Subproject commit 1fe030bc7500e272f23eac48b4959ab38d219e2a