diff --git a/.github/workflows/multi_arch_build_portable_linux.yml b/.github/workflows/multi_arch_build_portable_linux.yml index ab8651986ec..e5b6d618d4d 100644 --- a/.github/workflows/multi_arch_build_portable_linux.yml +++ b/.github/workflows/multi_arch_build_portable_linux.yml @@ -11,7 +11,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) @@ -178,6 +180,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/.gitmodules b/.gitmodules index 1c2514648a2..4d15302d402 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,7 +19,7 @@ url = https://github.com/ROCm/rocprof-trace-decoder.git [submodule "rocm-libraries"] path = rocm-libraries - url = https://github.com/ROCm/rocm-libraries + url = git@github.com:AaronStGeorge/rocm-libraries.git branch = develop [submodule "rocm-systems"] path = rocm-systems @@ -39,7 +39,7 @@ branch = main [submodule "fusilli"] path = iree-libs/fusilli - url = https://github.com/iree-org/fusilli.git + url = git@github.com:AaronStGeorge/fusilli.git branch = main [submodule "rocm-kpack"] path = base/rocm-kpack diff --git a/BUILD_TOPOLOGY.toml b/BUILD_TOPOLOGY.toml index e7a29ab118b..66022bf7759 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-libraries", "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", "iree-compiler"] disable_platforms = ["windows"] +feature_group = "IREE_LIBS" # --- Media Integration --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 8908700a590..8d8f8d3f167 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -244,8 +244,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 a94458ff76b..02f1d3ae75e 100644 --- a/build_tools/github_actions/fetch_test_configurations.py +++ b/build_tools/github_actions/fetch_test_configurations.py @@ -355,14 +355,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 401c33fec64..03672f408f0 100644 --- a/iree-libs/CMakeLists.txt +++ b/iree-libs/CMakeLists.txt @@ -6,6 +6,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" @@ -83,7 +88,7 @@ if(THEROCK_ENABLE_FUSILLIPROVIDER) ############################################################################## therock_cmake_subproject_declare(fusilliprovider USE_DIST_AMDGPU_TARGETS - EXTERNAL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/fusilli/plugins/hipdnn-plugin" + EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_LIBRARIES_SOURCE_DIR}/dnn-providers/fusilli-provider" BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/fusilliprovider" BACKGROUND_BUILD CMAKE_ARGS @@ -112,6 +117,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..def7fbdda39 160000 --- a/iree-libs/fusilli +++ b/iree-libs/fusilli @@ -1 +1 @@ -Subproject commit 4e1cf4ff1c41d95fd3206dbbd45a9ffe4f57249b +Subproject commit def7fbdda3908569df462f30e7370f23deb1c096 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 diff --git a/rocm-libraries b/rocm-libraries index 7203bc7c4c2..01550af3874 160000 --- a/rocm-libraries +++ b/rocm-libraries @@ -1 +1 @@ -Subproject commit 7203bc7c4c2adc8afeb318ce5bbdf3e1204a4260 +Subproject commit 01550af38744b565217bc41567495dc957bd48de