Repository navigation
CI: ROCm workflow for LTS-C* (strict C++17) - #403
Merged
Merged
Conversation
Port of main's cmake-linux-rocm-amd64.yml to the LTS branches. It runs on the self-hosted ROCm runner ([self-hosted, linux, x64, rocm]) with ROCm 10.1, amdclang++ as CXX and HIP compiler, and builds the HIP backend only (-DENABLE_HIP=ON -DENABLE_CUDA=OFF -DENABLE_CPU=OFF) in Release. Differences from main: - Triggers on pull requests to LTS-C* instead of main. - No -DENABLE_CPU_MULTITHREAD (not ported to LTS) and no submodule checkout (LTS has no thread-pool submodule). - Builds the benchmarks (-DENABLE_BENCHMARK=ON) and skips them in ctest (-E "^benchmark_"), as the other LTS workflows do. - actions/checkout@v6, as the other LTS workflows. - cmake from $HOME/cmake-4.4.4-linux-x86_64, which is the one installed on the runner (main's 4.4.2 path does not exist there, so main falls back to the system cmake). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019iTqfS8rWiAyRMrM4uU64n
The ROCm job now passes -Werror=c++20-extensions -pedantic-errors for both CXX and HIP sources (CMAKE_CXX_FLAGS and CMAKE_HIP_FLAGS), so CI enforces the strict C++17 that the LTS branch promises. The CMake already adds -Werror=c++20-extensions to the HIP sources; this extends it to the host sources compiled by amdclang++ and adds -pedantic-errors to both. -Wno-gnu-anonymous-struct is the one exception: the ArrayVector unions in array.h use anonymous structs for x/y/z/w, a GNU extension that every supported compiler accepts and that main has too. Checked locally with the job's configure and build commands (cmake 4.4.4, Ninja, amdclang++ 24.0.0, plus -DHIP_ARCH=gfx1200): 0 errors, 0 warnings, 42 _hip binaries, 38 ctest tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019iTqfS8rWiAyRMrM4uU64n
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.
Adds a ROCm CI job for the LTS branches: a port of main's
cmake-linux-rocm-amd64.yml. Follow-up to #401, which added the HIP backend to LTS-C++17 but no workflow that builds it.CI only: this PR adds one workflow file and changes no library, test or CMake code.
The job
LTS-C*, on the self-hosted ROCm runner ([self-hosted, linux, x64, rocm]), with ROCm 10.1.-DENABLE_HIP=ON -DENABLE_CUDA=OFF -DENABLE_CPU=OFF), in Release, with amdclang++ as CXX and HIP compiler. The CPU and CUDA backends are covered by the other LTS workflows.-Werror=c++20-extensions -pedantic-errors.-Wno-gnu-anonymous-structis the one exception.fk::Array's unions inarray.huse anonymous structs forx/y/z/w. That is a GNU extension every supported compiler accepts, and main has the same code.Differences from main's workflow
LTS-C*instead ofmain.-DENABLE_CPU_MULTITHREAD(not ported to LTS) and no submodule checkout (LTS has no submodules).-DENABLE_BENCHMARK=ON) and leaves them out of ctest (-E "^benchmark_"), as the other LTS workflows do.actions/checkout@v6, as the other LTS workflows.$HOME/cmake-4.4.4-linux-x86_64, which is installed on the runner.To report back to main
$HOME/cmake-4.4.2-linux-x86_64/binon the PATH, but that directory does not exist on the runner. Main therefore silently uses the system cmake (4.2.3), not 4.4.2.Verification
-DHIP_ARCH=gfx1200so CMake does not query the GPU. Result: 0 errors, 0 warnings, 42_hipbinaries (38 tests and 4 benchmarks), 38 ctest tests. Nothing was run on the GPU.🤖 Generated with Claude Code
https://claude.ai/code/session_019iTqfS8rWiAyRMrM4uU64n