Skip to content

[Multi-arch][Issue] Linux python missing gfx942/gfx950 device extras (Windows is generating conflicting rocm python sdists) #5347

@ScottTodd

Description

@ScottTodd

Symptoms

Observed on both

Running

pip install --index-url https://repo.amd.com/rocm/whl-multi-arch/ "rocm[device-all]"

pip freeze
# rocm-sdk-device-gfx1010==7.14.0a2026051
# rocm-sdk-device-gfx1100==7.14.0a2026051
...
# MISSING rocm-sdk-device-gfx942
# MISSING rocm-sdk-device-gfx950

on Linux does not download the rocm-sdk-device-gfx942 or rocm-sdk-device-gfx950 packages and may fail at runtime with missing data errors (or worse, as many of the libraries assume that their files exist and don't handle this failure mode well)

Explicitly installing the device extra does not work either:

pip install --index-url https://rocm.nightlies.amd.com/whl-multi-arch/ rocm[device-gfx950] --dry-run

WARNING: rocm 7.14.0a20260519 does not provide the extra 'device-gfx950'
Collecting rocm-sdk-core==7.14.0a20260519 (from rocm[device-gfx950])
  Downloading rocm_sdk_core-7.14.0a20260519-py3-none-linux_x86_64.whl (410.9 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 410.9/410.9 MB 40.6 MB/s  0:00:09
Would install rocm-7.14.0a20260519 rocm-sdk-core-7.14.0a20260519

Depending on which platform uploaded the most recent sdist, Windows device-all may attempt to install those packages and emit a warning when it fails.

Workarounds

The rocm-sdk-device-gfx942 and rocm-sdk-device-gfx950 packages can still be installed directly.

pip install --index-url https://rocm.nightlies.amd.com/whl-multi-arch/ rocm rocm-sdk-device-gfx950 --dry-run

Would install rocm-7.14.0a20260519 rocm-sdk-core-7.14.0a20260519 rocm-sdk-device-gfx950-7.14.0a20260519 rocm-sdk-libraries-7.14.0a20260519

The torch packages are platform-specific with functioning extras that directly depend on the corresponding rocm packages, so this works:

pip install --index-url https://rocm.nightlies.amd.com/whl-multi-arch/ torch[device-gfx950] --dry-run

Would install Jinja2-3.1.6 MarkupSafe-3.0.3 amd-torch-device-gfx950-2.12.0+rocm7.14.0a20260519 filelock-3.29.0 fsspec-2026.4.0 mpmath-1.3.0 networkx-3.6.1 rocm-7.14.0a20260519 rocm-bootstrap-0.1.0 rocm-sdk-core-7.14.0a20260519 rocm-sdk-device-gfx950-7.14.0a20260519 rocm-sdk-libraries-7.14.0a20260519 setuptools-81.0.0 sympy-1.14.0 torch-2.12.0+rocm7.14.0a20260519 triton-3.7.0+git52687acf.rocm7.14.0a20260519 typing_extensions-4.15.0

The issue

Metadata in rocm-7.13.0.tar.gz --> rocm-7.13.0/PKG-INFO is of the form:

 Metadata-Version: 2.4
 Name: rocm
 Version: 7.13.0
 Requires-Dist: rocm==7.13.0
 Requires-Dist: rocm-sdk-core==7.13.0
 Provides-Extra: libraries
 Requires-Dist: rocm-sdk-libraries==7.13.0; extra == "libraries"
 Provides-Extra: device
 Requires-Dist: rocm-sdk-device-gfx1010==7.13.0; extra == "device"
 Provides-Extra: devel
 Requires-Dist: rocm-sdk-devel==7.13.0; extra == "devel"
 Provides-Extra: profiler
 Requires-Dist: rocm-profiler==7.13.0; extra == "profiler"
 Provides-Extra: device-gfx1010
 Requires-Dist: rocm-sdk-device-gfx1010==7.13.0; extra == "device-gfx1010"
 Provides-Extra: device-gfx1011
 Requires-Dist: rocm-sdk-device-gfx1011==7.13.0; extra == "device-gfx1011"
 Provides-Extra: device-gfx1012
 Requires-Dist: rocm-sdk-device-gfx1012==7.13.0; extra == "device-gfx1012"
 Provides-Extra: device-gfx1030
 Requires-Dist: rocm-sdk-device-gfx1030==7.13.0; extra == "device-gfx1030"
 Provides-Extra: device-gfx1031
 Requires-Dist: rocm-sdk-device-gfx1031==7.13.0; extra == "device-gfx1031"
 Provides-Extra: device-gfx1032
 Requires-Dist: rocm-sdk-device-gfx1032==7.13.0; extra == "device-gfx1032"
 Provides-Extra: device-gfx1033
 Requires-Dist: rocm-sdk-device-gfx1033==7.13.0; extra == "device-gfx1033"
 Provides-Extra: device-gfx1034
 Requires-Dist: rocm-sdk-device-gfx1034==7.13.0; extra == "device-gfx1034"
 Provides-Extra: device-gfx1035
 Requires-Dist: rocm-sdk-device-gfx1035==7.13.0; extra == "device-gfx1035"
 Provides-Extra: device-gfx1036
 Requires-Dist: rocm-sdk-device-gfx1036==7.13.0; extra == "device-gfx1036"
 Provides-Extra: device-gfx1100
 Requires-Dist: rocm-sdk-device-gfx1100==7.13.0; extra == "device-gfx1100"
 Provides-Extra: device-gfx1101
 Requires-Dist: rocm-sdk-device-gfx1101==7.13.0; extra == "device-gfx1101"
 Provides-Extra: device-gfx1102
 Requires-Dist: rocm-sdk-device-gfx1102==7.13.0; extra == "device-gfx1102"
 Provides-Extra: device-gfx1103
 Requires-Dist: rocm-sdk-device-gfx1103==7.13.0; extra == "device-gfx1103"
 Provides-Extra: device-gfx1150
 Requires-Dist: rocm-sdk-device-gfx1150==7.13.0; extra == "device-gfx1150"
 Provides-Extra: device-gfx1151
 Requires-Dist: rocm-sdk-device-gfx1151==7.13.0; extra == "device-gfx1151"
 Provides-Extra: device-gfx1152
 Requires-Dist: rocm-sdk-device-gfx1152==7.13.0; extra == "device-gfx1152"
 Provides-Extra: device-gfx1200
 Requires-Dist: rocm-sdk-device-gfx1200==7.13.0; extra == "device-gfx1200"
 Provides-Extra: device-gfx1201
 Requires-Dist: rocm-sdk-device-gfx1201==7.13.0; extra == "device-gfx1201"
-Provides-Extra: device-gfx942
-Requires-Dist: rocm-sdk-device-gfx942==7.13.0; extra == "device-gfx942"
-Provides-Extra: device-gfx950
-Requires-Dist: rocm-sdk-device-gfx950==7.13.0; extra == "device-gfx950"
 Provides-Extra: device-all
 Requires-Dist: rocm-sdk-device-gfx1010==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1011==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1012==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1030==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1031==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1032==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1033==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1034==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1035==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1036==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1100==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1101==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1102==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1103==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1150==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1151==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1152==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1200==7.13.0; extra == "device-all"
 Requires-Dist: rocm-sdk-device-gfx1201==7.13.0; extra == "device-all"
-Requires-Dist: rocm-sdk-device-gfx942==7.13.0; extra == "device-all"
-Requires-Dist: rocm-sdk-device-gfx950==7.13.0; extra == "device-all"
 Dynamic: provides-extra
 Dynamic: requires-dist

Linux and Windows both generate this sdist with the exact same filename uploaded to the exact same location, but these platforms have different sets of available extras.

Looking back through nightly releases, some packages contain Linux-only devices and some contain just the Windows devices. There is likely a race condition where both Linux and Windows release workflows are uploading the same platform-neutral sdist packages.

Possible solutions

  1. Add per-platform extras by having both Linux and Windows jobs generate identical rocm sdist metadata from a common cross-platform target list not just the per-platform target lists
  2. Rework the rocm package to produce py3-none-linux_x86_64.whl and py3-none-win_amd64.whl packages like we already do for rocm-sdk-core and other packages

References:

Metadata

Metadata

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions