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
- 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
- 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:
Symptoms
Observed on both
Running
on Linux does not download the
rocm-sdk-device-gfx942orrocm-sdk-device-gfx950packages 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:
Depending on which platform uploaded the most recent sdist, Windows
device-allmay attempt to install those packages and emit a warning when it fails.Workarounds
The
rocm-sdk-device-gfx942androcm-sdk-device-gfx950packages can still be installed directly.The
torchpackages are platform-specific with functioning extras that directly depend on the corresponding rocm packages, so this works:The issue
Metadata in
rocm-7.13.0.tar.gz-->rocm-7.13.0/PKG-INFOis of the form: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
rocmpackage to producepy3-none-linux_x86_64.whlandpy3-none-win_amd64.whlpackages like we already do forrocm-sdk-coreand other packagesReferences:
linux_amdgpu_families,windows_amdgpu_familieswhich can differ)