No test catches missing synchronization between work-groups
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
Research direction
Start by reading the existing KernelAbstractions “fences” test and OpenCL.jl’s atomics tests; the issue does not name specific test files or entry points. Add a repeated message-passing test across many work-groups that covers the listed atomic paths, explicit fences, and both backends. Done means the test exercises these cases on hardware and catches weakened device-scope synchronization.
Written by the indexing model from the issue text.
Description
JuliaGPU/spirv2clc#7 was a translator bug that weakened device-scope atomics and fences to work-group scope. On NVIDIA, a device-scope release/acquire fence compiled to membar.cta. No test in OpenCL.jl, nor the KernelAbstractions suite it runs, caught it:
- KernelAbstractions' "fences" test uses a single flag, which almost never shows the race.
- The atomics tests here only check results of read-modify-write operations, and the disassembly's Scope operand.
A message-passing test across many work-groups would catch this class of bug on hardware:
- one work-item per work-group writes a payload, then publishes a flag with a release store or fence;
- work-items in other work-groups spin on the flag with acquire loads, then read the payload;
- run it at sizes large enough to keep many work-groups resident, and repeat it.
It should cover:
- the Atomix/UnsafeAtomics paths (
:release/:acquire, device and default system scope); - explicit fences;
- both the IL backend and the spirv2clc backend.
- Dominant language
- Julia
- Stars
- 313
- Forks
- 50
- Avg merge
- 1d 10h
- Merged PRs (30d)
- 41
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
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.
More from JuliaGPU/OpenCL.jl
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
Maintainers usually reply within 1 day
-
kernels latency regression
Difficulty 4/5 3-5 days Newbie friendliness 52/100
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
Maintainers usually reply within 1 day
All issues in JuliaGPU/OpenCL.jl
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
legend-exp/LegendDataManagement.jl#232 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
EnzymeAD/Reactant.jl#3569 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
astroautomata/SymbolicRegression.jl#783 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 73/100
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 76/100