Skip to content

rocmPackages: 7.2.4 -> 10.1 - #31

Closed
randomizedcoder wants to merge 11 commits into
rocm10/13-restfrom
rocm10/14-switch
Closed

randomizedcoder wants to merge 11 commits into
rocm10/13-restfrom
rocm10/14-switch

Conversation

@randomizedcoder

@randomizedcoder randomizedcoder commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

Part 14/14. Part of splitting upstream PR 573885 (rocmPackages: 7.2.4 -> 10.1) into smaller PRs, as asked in its review.

  • Switches rocmPackages to ROCm 10.1
  • Target: staging (mass rebuild)

Changes

Testing

  • After the switch, every rocmPackages derivation (default, llvm, gfx906, gfx1102 scopes) is identical to rocmPackages_10's before it
  • No file refers to a removed path; the ROCm consumers evaluate with aliases on and off
  • Built on x86_64-linux with the default GPU targets: all 73 rocmPackages derivations plus consumers, 204 derivations in total
    • blender, btop, zluda, adaptivecpp, whisper-cpp, stable-diffusion-cpp, onnxruntime, magma, ctranslate2, ollama, llama-cpp
    • torch (Python 3.13 and 3.14), torchaudio, torchcodec, xformers, vllm, amd-aiter, bitsandbytes
  • nixpkgs-review: 85 packages built, including torchWithRocm for Python 3.13 and 3.14; one failure, opensplat (below)

Hardware smoke tests:

check gfx1102 (Radeon Pro W7500) gfx906 (MI50) ¹
rocminfo, amd-smi pass pass
hipcc vector add pass pass
import torch; torch.cuda.device_count() = 1 pass pass
fp32 / fp16 matmul (max rel err) 9.6e-7 / 4.5e-4 5.5e-7 / 4.5e-4
conv2d forward + backward (MIOpen) pass (≤ 1.6e-6) pass (≤ 1.6e-5)
torch.profiler GPU kernels pass pass
rocprofv3 --kernel-trace 7 kernels 7 kernels
import vllm pass pass
llama.cpp lists ROCm0 pass pass

¹ Run with ROCR_VISIBLE_DEVICES=0: that machine also holds a gfx803 card that HIP skips but amdsmi counts.

Known failure, not from this PR

  • opensplat has been broken on master in every variant since torch 2.14.1 (2026-10-22)
  • OpenSplat 1.1.4 builds as C++17; torch 2.14.1's headers require C++20
  • OpenSplat 1.1.5 fixes it (upstream PR 553190)
  • Its configure step passes with ROCm 10.1; compilation then stops on the C++20 check

Series

Preparatory PRs, each against master: #10, #11, #15, #16, #17.

Part PR Contents Base
1 #18 rocmPackages_10: init master
2 #19 llvm (LLVM 24) #18
3 #20 runtime #19
4 #21 profiling and debugging tools, RCCL #20
5 #22 rocPRIM, rocRAND, rocFFT #21
6 #23 hipBLASLt #22
7 #24 Tensile and rocBLAS #23
8 #25 sparse, solvers, rocALUTION, rocWMMA, hipfort #24
9 #26 composable_kernel #25
10 #27 rocMLIR #26
11 #28 MIOpen #27
12 #29 MIGraphX, RPP, MIVisionX #28
13 #30 remaining packages #29
▶ 14 #31 rocmPackages: 7.2.4 -> 10.1 (the switch) (this PR) #30

🤖 Generated with Claude Code

@randomizedcoder
randomizedcoder force-pushed the rocm10/13-rest branch 2 times, most recently from 12e340e to cbed6b8 Compare October 17, 2026 16:20
@randomizedcoder
randomizedcoder force-pushed the rocm10/14-switch branch 2 times, most recently from c9766be to d7ce9df Compare October 20, 2026 06:44
Upstream retired rocm_bandwidth_test during the TheRock 7.x series and
it has received no updates in nixpkgs since 6.3.3. No package depends on
it.

https://rocm.docs.amd.com/projects/rocm_bandwidth_test/en/latest/index.html

Assisted-by: Claude Code (claude-opus-5-5)
opensplat does find_package(Torch), which includes Caffe2's
LoadHIP.cmake and find_package(rocm_smi). On ROCm 10
rocm_smi-config.cmake does find_dependency(PkgConfig) followed by
pkg_check_modules(libdrm), so pkg-config must be present as a host tool.
libdrm itself comes from torch.cxxdev, which propagates it once
rocmPackages is ROCm 10. Also drop a duplicated rocsolver input.

Assisted-by: Claude Code (claude-opus-5-5)
Like opensplat, torchcodec's find_package(Torch) pulls in ROCm 10's
rocm_smi-config.cmake, which runs pkg_check_modules(libdrm). pkg-config
was already a nativeBuildInput; add libdrm so libdrm.pc is found on
PKG_CONFIG_PATH.

Assisted-by: Claude Code (claude-opus-5-5)
It took the top-level rocmPackages and used rocmPackages.rocm-comgr and
rocmPackages.rocm-runtime, so the per-arch scopes (rocmPackages.gfx906,
...) and any other instance of the scope built it against the default
set's libraries. Take them as scope arguments like every other package.
The default rocmPackages.rocprof-trace-decoder derivation is unchanged.

Assisted-by: Claude Code (claude-opus-5-5)
Make the ROCm 10.1 scope the default: rocmPackages is now
rocmPackages_10, which stays a concrete attribute (rocm-modules/10/,
like rocm-modules/6 before it) so it also exists with allowAliases =
false.

Every rocmPackages derivation is identical to the corresponding
rocmPackages_10 derivation before this commit, including the
per-architecture scopes.

Assisted-by: Claude Code (claude-opus-5-5)
After the switch nothing refers to rocm-modules/default.nix (the 7.2.4
scope) or to the 50 package directories that rocm-modules/10/ replaced.
The directories rocmPackages_10 still shares (aotriton, hipcc, hiprt,
mivisionx, mscclpp, rocm-docs-core, rocm-tests, rocprof-compute-viewer)
and update.nix stay.

The rocm-bandwidth-test throw alias lives on in
rocm-modules/10/default.nix.

Assisted-by: Claude Code (claude-opus-5-5)
find_package(Torch) runs Caffe2's LoadHIP, which loads ROCm 10's
rocm_smi-config.cmake; that calls pkg_check_modules(libdrm). Add libdrm
to the ROCm build inputs and propagate its dev output to C++ consumers
through cxxdev, so builds against torch (OpenSplat) find libdrm.pc as
well. cxxdev's propagated-build-inputs is written from plain store
paths, so the default output would not carry the .pc file.

Assisted-by: Claude Code (claude-opus-5-5)
torch 2.14's cmake/public/LoadHIP.cmake runs find_package(hipfile
REQUIRED) when ROCM_VERSION_DEV is 7.14 or later ("hipFile is Linux-only
and ships with ROCm 7.14 and later, where it is required"), so
configuring against ROCm 10.1 failed. Add rocmPackages.hipfile to
rocmtoolkit_joined, which torch's CMake searches and cxxdev propagates
to C++ consumers (OpenSplat, torchcodec), whose find_package(Torch) runs
the same LoadHIP. With hipfile found, USE_CUFILE stays on
(Dependencies.cmake turns it off only when hipfile is missing).

Assisted-by: Claude Code (claude-opus-5-5)
vLLM's CMakeLists.txt runs find_package(Torch), and torch 2.14's
LoadHIP.cmake requires hipfile from ROCm 7.14 on, so configuring
against ROCm 10.1 failed with "Could not find a package configuration
file provided by hipfile". vLLM lists its ROCm libraries itself
rather than taking them from torch's cxxdev, so add hipfile there.

Assisted-by: Claude Code (claude-opus-5-5)
cmake/local.cmake only knows the rocm_v7_1 and rocm_v7_2 backend labels,
so deriving the label from the ROCm version fails with "Unknown ROCm
backend" on ROCm 10. The label only selects ollama's build preset; the
runner links the ROCm in buildInputs.

Assisted-by: Claude Code (claude-opus-5-5)
Describe the ROCm 7.2.4 -> 10.1 update: ABI/API breaks, LLVM 24, rocmlir
replaced by rocmlir-triton, the new hipfile package that torch 2.14
requires, dropped gfx900/gfx906 support in composable_kernel and
MIOpen's CK solvers, and the disabled hipconv backend.

Assisted-by: Claude Code (claude-opus-5-5)
@randomizedcoder

Copy link
Copy Markdown
Owner Author

Opened upstream as NixOS#579527.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant