Skip to content
Open
Changes from 10 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
110 changes: 110 additions & 0 deletions .github/workflows/test_rocm_wheels.yml

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.

This is probably worth adding, unlike (currently) the pytorch and jax test jobs.

For this to be used, we'd want to dispatch the workflow here: https://github.com/ROCm/TheRock/blob/a3e3f450db81b55f53a05581ebf52a21583c1126/.github/workflows/multi_arch_release_linux.yml#L197-L299, with inputs similar to those used to test rocm wheels on CI: https://github.com/ROCm/TheRock/blob/a3e3f450db81b55f53a05581ebf52a21583c1126/.github/workflows/multi_arch_ci_linux.yml#L279-L307

That being said, we could also merge "test rocm wheels" with "test rocm native linux packages" into a single workflow to limit how many workflow files we have. It could even be a single "test rocm" workflow that would include:

  • artifact structure tests (CPU)
  • rocm wheels (python packages, GPU)
  • rocm native linux packages (CPU/GPU?)
  • rocm native windows packages (when available, CPU/GPU?)

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.

We discussed offline. This will be useful to keep, especially as we add more tests to this workflow like tests for amdsmi, hipdnn, and rocprofiler.

To work on this you can trigger https://github.com/ROCm/TheRock/actions/workflows/test_rocm_wheels.yml directly to get familiar with the inputs and test any changes to the workflow. Then you can trigger https://github.com/ROCm/TheRock/actions/workflows/multi_arch_release.yml (in TheRock) from your branch with 1-2 GPU families per platform (maybe gfx950 on Linux due to queues for gfx942).

Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
# Copyright Advanced Micro Devices, Inc.
# SPDX-License-Identifier: MIT

# Thin wrapper that dispatches to TheRock's test_rocm_wheels.yml.
# This exists so that release workflows running in rockrel's context
# can dispatch test runs to this repo (which then calls TheRock).

name: Test ROCm Wheels

on:
workflow_dispatch:
inputs:
amdgpu_family:
description: GPU family to test (e.g., gfx94X-dcgpu, gfx110X-all)
required: true
type: string
test_runs_on:
description: Runner label to use. The selected runner should have a GPU supported by amdgpu_family
required: true
type: string
package_index_url:
description: Full Python package index URL for use with --index-url.
type: string
package_find_links_url:
description: Full Python package index URL for use with --find-links (usually instead of package_index_url)
type: string
python_version:
required: true
type: string
default: "3.12"
rocm_version:
description: ROCm version to pip install (e.g. "7.10.0a20251124")
required: true
type: string
kpack_split:
description: Whether the package index is split by kernel packages (kpack)
type: boolean
default: true
container_image_name:
description: >-
Short, human-readable label for the container image (e.g. 'ubuntu24.04',
'ubi10', 'native').
type: string
container_image_url:
description: >-
Container image reference. Leave empty to run directly on the runner
(required for Windows and native Linux runners).
type: string
repository:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

can we please use the description we already use in other workflows?

      ref:
        description: "Branch, tag, or SHA to checkout."
        type: string
        default: ""
      repository:
        description: "Repository to checkout. Defaults to ROCm/TheRock."
        type: string
        default: "ROCm/TheRock"

description: "TheRock repository to checkout."
type: string
default: "ROCm/TheRock"
ref:
description: "Branch, tag, or SHA to checkout in TheRock."
type: string
default: ""

permissions:
contents: read

run-name: Test ROCm Wheels (${{ inputs.amdgpu_family }}, py${{ inputs.python_version }}, ${{ inputs.rocm_version }})

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

not identical to in therock:

run-name: Test ROCm Wheels (${{ inputs.amdgpu_family }}, py${{ inputs.python_version }}, ${{ inputs.rocm_version }}, ${{ inputs.test_runs_on }})
```


jobs:
notify_quartz_start:
name: "Quartz - started - test rocm wheels (rockrel)"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
name: "Quartz - started - test rocm wheels (rockrel)"
name: "Quartz - started - test ROCm wheels (rockrel)"

if: ${{ vars.NOTIFY_QUARTZ_ENABLED == 'true' }}
runs-on: ubuntu-24.04
timeout-minutes: 10
continue-on-error: true
steps:
- uses: ROCm/Quartz/.github/actions/notify_quartz@f386a9756620938616af0b4d5d04b24ae6e0353f # notify_quartz/v1.1.1
with:
run_phase: started
reporting_workflow: test_rocm_wheels.yml
workflow_inputs: ${{ toJSON(inputs) }}
gh_app_client_id: ${{ secrets.GH_APP_HAULY_CID }}
gh_app_private_key: ${{ secrets.GH_APP_HAULY_PRIVATE_KEY }}

test:
uses: ROCm/TheRock/.github/workflows/test_rocm_wheels.yml@main
secrets: inherit
with:
amdgpu_family: ${{ inputs.amdgpu_family }}
test_runs_on: ${{ inputs.test_runs_on }}
package_index_url: ${{ inputs.package_index_url }}
package_find_links_url: ${{ inputs.package_find_links_url }}
python_version: ${{ inputs.python_version }}
rocm_version: ${{ inputs.rocm_version }}
kpack_split: ${{ inputs.kpack_split }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

container_image_name: ${{ inputs.container_image_name }}
container_image_url: ${{ inputs.container_image_url }}
repository: ${{ inputs.repository }}
ref: ${{ inputs.ref }}
Comment on lines +63 to +93

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.

We should add quartz notify steps like those recently added to https://github.com/ROCm/rockrel/blob/main/.github/workflows/test_artifacts.yml in f962e5f here

cc @HereThereBeDragons


notify_quartz_completed:
name: "Quartz - completed - test rocm wheels (rockrel)"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
name: "Quartz - completed - test rocm wheels (rockrel)"
name: "Quartz - completed - test ROCm wheels (rockrel)"

if: ${{ always() && vars.NOTIFY_QUARTZ_ENABLED == 'true' }}
needs: [test]
runs-on: ubuntu-24.04
timeout-minutes: 10
continue-on-error: true
steps:
- uses: ROCm/Quartz/.github/actions/notify_quartz@f386a9756620938616af0b4d5d04b24ae6e0353f # notify_quartz/v1.1.1
with:
run_phase: completed
reporting_workflow: test_rocm_wheels.yml
workflow_inputs: ${{ toJSON(inputs) }}
workflow_captured_outputs: ${{ toJSON(needs) }}
gh_app_client_id: ${{ secrets.GH_APP_HAULY_CID }}
gh_app_private_key: ${{ secrets.GH_APP_HAULY_PRIVATE_KEY }}
Loading