Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 29 additions & 1 deletion .github/workflows/multi_arch_release_linux.yml

ghost Aug 14, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,34 @@ jobs:
"ref": "${{ inputs.ref }}"
}

# Wheel tests are dispatched asynchronously (like native install tests) so
# publish is not blocked on GPU runner queues. See https://github.com/ROCm/TheRock/issues/5212
trigger_test_wheels_per_family:
needs: [build_python_packages]
name: Trigger Test Wheels (${{ matrix.amdgpu_family }}, py${{ matrix.python_version }})
if: ${{ toJSON(fromJSON(inputs.build_config).test_python_packages_matrix) != '[]' }}
runs-on: ubuntu-24.04
permissions:
actions: write
strategy:
fail-fast: false
matrix:
include: ${{ fromJSON(inputs.build_config).test_python_packages_matrix }}
steps:
- name: Trigger test_rocm_wheels
uses: benc-uk/workflow-dispatch@31e2b3319479a63f0ab15bf800eff9e913504e26 # v1.3.2
with:
workflow: test_rocm_wheels.yml
inputs: |
{ "amdgpu_family": "${{ matrix.amdgpu_family }}",
"test_runs_on": "${{ matrix.test_runs_on }}",
"package_find_links_url": "${{ needs.build_python_packages.outputs.kpack_split == 'true' && needs.build_python_packages.outputs.package_find_links_url || format('{0}/{1}/index.html', needs.build_python_packages.outputs.package_find_links_url, matrix.amdgpu_family) }}",
"python_version": "${{ matrix.python_version }}",
"rocm_version": "${{ inputs.rocm_package_version }}",
"container_image_name": "${{ matrix.container_image_name }}",
"container_image_url": "${{ matrix.container_image_url }}",
"kpack_split": "${{ needs.build_python_packages.outputs.kpack_split }}"
}
Comment on lines +270 to +280

ghost Aug 14, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah this isn't great - the matrix is going to dispatch lots of jobs here.

I would rather have releases dispatch closer to what test_artifacts does: one workflow run per amdgpu_family, not per [amdgpu_family, container, python_version].

Need to look at the workflow architecture a bit to see how we might simplify there.

ghost Aug 17, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't had much time to take a more detailed look here yet.

One idea would be to add a new workflow that takes fromJSON(inputs.build_config).test_python_packages_matrix as an input and have that workflow expand the matrix itself.

CI would run that new workflow here:

test_python_packages_per_family:
needs: [build_python_packages]
name: Test Python
if: ${{ !failure() && !cancelled() && toJSON(fromJSON(inputs.build_config).test_python_packages_matrix) != '[]' }}
strategy:
fail-fast: false
matrix:
include: ${{ fromJSON(inputs.build_config).test_python_packages_matrix }}
uses: ./.github/workflows/test_rocm_wheels.yml
secrets: inherit
with:
amdgpu_family: ${{ matrix.amdgpu_family }}
test_runs_on: ${{ matrix.test_runs_on }}
# TODO: Simplify to just `needs.build_python_packages.outputs.package_find_links_url`
# once kpack split is always enabled.
package_find_links_url: >-
${{
needs.build_python_packages.outputs.kpack_split == 'true'
&& needs.build_python_packages.outputs.package_find_links_url
|| format('{0}/{1}/index.html',
needs.build_python_packages.outputs.package_find_links_url,
matrix.amdgpu_family)
}}
python_version: ${{ matrix.python_version }}
rocm_version: ${{ inputs.rocm_package_version }}
container_image_name: ${{ matrix.container_image_name }}
container_image_url: ${{ matrix.container_image_url }}
repository: ${{ inputs.repository }}
ref: ${{ inputs.ref }}

We've gone through a few iterations on the workflow matrix shape, see also


# TODO: Consider switch pulling ROCm packages from the CDN instead of the artifact
# bucket if the job order is not altered.
Expand Down Expand Up @@ -300,7 +328,7 @@ jobs:

notify_quartz_completed:
if: ${{ always() && vars.NOTIFY_QUARTZ_ENABLED == 'true' }}
needs: [build_artifacts, build_tarballs, build_python_packages, build_native_deb_packages, build_native_rpm_packages, publish_to_release_buckets, trigger_test_artifacts_per_family, trigger_test_native_install, trigger_release_pytorch_wheels, trigger_release_jax_wheels]
needs: [build_artifacts, build_tarballs, build_python_packages, build_native_deb_packages, build_native_rpm_packages, publish_to_release_buckets, trigger_test_artifacts_per_family, trigger_test_native_install, trigger_test_wheels_per_family, trigger_release_pytorch_wheels, trigger_release_jax_wheels]
name: "Quartz - completed - release Linux"
runs-on: ubuntu-24.04
timeout-minutes: 10
Expand Down