[Issue]: static_assert in streamk_gemm_kernel.hpp never fires due to string-to-bool conversion
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 549
- Forks
- 312
- PR merge metrics
- No merged PRs in 30d
Description
Problem Description
Hi experts, I want to confirm with an usage of static_assert in the repo:
In include/ck_tile/ops/gemm/kernel/streamk_gemm/streamk_gemm_kernel.hpp, the else branch for unsupported reduction strategies uses:
static_assert("An implementation does not exist for the chosen reduction strategy.");
This is the single-argument form of static_assert, where the string literal is the condition, not the message. Since a string literal is a non-null pointer, it implicitly converts to true, so the assertion never fires — even when an unsupported ReductionStrategy is instantiated.
I've submitted a fix in #3742 that changes it to the two-argument form:
static_assert(false, "An implementation does not exist for the chosen reduction strategy.");
I wanted to confirm: was the original code intended to be a compile-time error for unsupported strategies? Or was there a different intent here? The surrounding code
structure (an if constexpr / else if chain over ReductionStrategy) suggests it was meant to catch unhandled cases at compile time.
Thank you!
Operating System
CentOS Stream 9
CPU
AMD EPYC 9655 96-Core Processor
GPU
Other
Other
AMD MI350x with ROCm 7.0.2 (please ignore ROCm version below)
ROCm Version
ROCm 6.0.0
ROCm Component
No response
Steps to Reproduce
No response
(Optional for Linux users) Output of /opt/rocm/bin/rocminfo --support
No response
Additional Information
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Read include/ck_tile/ops/gemm/kernel/streamk_gemm/streamk_gemm_kernel.hpp and inspect the else branch for unsupported ReductionStrategy values. Compare the intended compile-time failure with the fix described in pull request #3742; done means unsupported strategies trigger the assertion rather than compiling silently.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 1/5
- Estimated time
- Under an hour
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 25/100