Repository navigation
Focus CI on the latest ROCm and amdclang - #254
Merged
Merged
Conversation
derobins
requested review from
akolliasAMD,
gaoikawa,
jordan-turbofish,
kurtmcmillan,
riley-dixon,
sbates130272 and
zbyrne
as code owners
October 17, 2026 23:48
Contributor
There was a problem hiding this comment.
🔵 Needs a closer look
The compiler and image migrations, packaging changes, and IWYU flag adjustments need target-environment validation and final human review.
No open issues 🎉
What changed in this PR
Aligns hipObject CI with the amdclang-based builds planned for rocm-systems and TheRock.
Changes:
- Replaces the build matrix with explicit core and compatibility jobs, primarily using ROCm 10.1.0.
- Moves additional workflows and local hardware builds to amdclang.
- Adapts IWYU compiler flags, fixes backend-disabled warning handling, and updates documentation.
| File | Description |
|---|---|
| src/rdma/transport.cpp | Marks the conditionally unused parameter. |
| docs/building.rst | Documents IWYU restrictions and nightly compilers. |
| cmake/HIPOBJIWYU.cmake | Detects IWYU’s Clang version. |
| cmake/HIPOBJCompilerOptions.cmake | Limits IWYU builds to compatible flags. |
| ci/iwyu/iwyu-wrapper.sh | Forwards version queries without logging. |
| ci/ernic/run-local.sh | Explicitly selects amdclang during configuration. |
| CHANGELOG.md | Records nightly and IWYU changes. |
| AGENTS.md | Updates CI and tooling guidance. |
| .github/workflows/hipobject-nightly.yml | Selects each ROCm version’s amdclang. |
| .github/workflows/hipobject-minio-integration-check.yml | Updates the image and selects amdclang. |
| .github/workflows/hipobject-iwyu.yml | Updates the image and selects amdclang. |
| .github/workflows/hipobject-hardware-test-two-vm-protocol.yml | Selects amdclang for protocol builds. |
| .github/workflows/hipobject-hardware-test-two-vm-gpu-direct.yml | Selects amdclang for two-VM GPU builds. |
| .github/workflows/hipobject-hardware-test-s3-backend.yml | Selects amdclang for S3 backend builds. |
| .github/workflows/hipobject-hardware-test-minio-bridge.yml | Selects amdclang for bridge builds. |
| .github/workflows/hipobject-hardware-test-gpu-direct.yml | Selects amdclang for GPU-direct builds. |
| .github/workflows/hipobject-clang-tidy.yml | Updates the image while retaining LLVM 23 tooling. |
| .github/workflows/hipobject-build.yml | Defines explicit compiler and configuration coverage. |
Review effort: Balanced
hipObject will be built with the latest ROCm's amdclang in rocm-systems and TheRock, so CI now builds with that unless a job exists to try something else. Every CI build uses ROCm 10.1.0, apart from the hardware tests, whose guests run ROCm 10.0, and the nightly packages. The Build workflow's jobs are listed one by one rather than made by crossing axes. All of them use HIPOBJ_WERROR: - Core jobs, amdclang on Ubuntu 26.04: RelWithDebInfo; Debug with HIPOBJ_USE_SANITIZERS; RelWithDebInfo with HIPOBJ_USE_THREAD_SANITIZER, as TheRock's TSan builds are; and Debug with code coverage. - Smoke tests with amdclang: a static Release build (TheRock builds only shared libraries, and Release is its default), both NIC backends off, C++23, and C++26. - Upstream Clang 21, and GCC 15 with and without HIPOBJ_USE_SANITIZERS, for the problems amdclang misses. - Ubuntu 24.04's GCC 13 and Clang 18, with its CMake 3.28. Other workflows: - The nightly builds its packages with each ROCm version's amdclang. - clang-tidy, IWYU, and the MinIO integration check use the Ubuntu 26.04 and ROCm 10.1.0 image. clang-tidy stays at LLVM 23, the newest release on apt.llvm.org, since ROCm 10.1's LLVM 24 only has snapshots there. - IWYU, the MinIO integration check, the hardware tests, and ci/ernic/run-local.sh build with amdclang. run-local.sh sets the compiler on the cmake command line, so a build directory left from an earlier run with GCC is reconfigured. IWYU parses with the clang it was built with (Clang 19 on Ubuntu 26.04), which rejects flags newer than itself, such as amdclang's -fno-strict-bool. HIPOBJIWYU.cmake now reads that clang's version, and a Clang build with HIPOBJ_USE_IWYU uses only the flags both compilers have, hardening flags included. Builds without HIPOBJ_USE_IWYU are unchanged. iwyu-wrapper.sh passes a lone --version straight to IWYU, without recording it as a run. applyVendorQpAttrs()'s attr parameter is [[maybe_unused]], since nothing uses it when HIPOBJ_BNXT and HIPOBJ_IONIC are both off, which made HIPOBJ_WERROR fail the build. AGENTS.md, docs/building.rst, and CHANGELOG.md describe the new CI coverage, the nightly's compiler, and what HIPOBJ_USE_IWYU leaves out. Co-authored-by: Claude <noreply@anthropic.com>
derobins
force-pushed
the
derobins/better_ci_matrix
branch
from
October 17, 2026 23:56
281cfbb to
a3576f6
Compare
Contributor
Security scan found no critical or high findings on lines changed by this pull requestView the security scan run for complete reports. “New” means the finding is located in a changed file on an added or modified line; it is not a base-versus-head findings delta. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
hipObject will be built with the latest ROCm's amdclang in rocm-systems and TheRock, so CI now builds with that unless a job exists to try something else. Every CI build uses ROCm 10.1.0, apart from the hardware tests, whose guests run ROCm 10.0, and the nightly packages.
The Build workflow's jobs are listed one by one rather than made by crossing axes. All of them use HIPOBJ_WERROR:
Other workflows:
IWYU parses with the clang it was built with (Clang 19 on Ubuntu 26.04), which rejects flags newer than itself, such as amdclang's -fno-strict-bool. HIPOBJIWYU.cmake now reads that clang's version, and a Clang build with HIPOBJ_USE_IWYU uses only the flags both compilers have, hardening flags included. Builds without HIPOBJ_USE_IWYU are unchanged. iwyu-wrapper.sh passes a lone --version straight to IWYU, without recording it as a run.
applyVendorQpAttrs()'s attr parameter is [[maybe_unused]], since nothing uses it when HIPOBJ_BNXT and HIPOBJ_IONIC are both off, which made HIPOBJ_WERROR fail the build.
AGENTS.md, docs/building.rst, and CHANGELOG.md describe the new CI coverage, the nightly's compiler, and what HIPOBJ_USE_IWYU leaves out.