Skip to content

Port more OpenCL improvements to the POCL backend - #944

Open
christiangnrd wants to merge 2 commits into
isbitsfrom
opencl-ports
Open

christiangnrd wants to merge 2 commits into
isbitsfrom
opencl-ports

Conversation

@christiangnrd

Copy link
Copy Markdown
Member

christiangnrd and others added 2 commits October 31, 2026 14:45
Port of JuliaGPU/OpenCL.jl#567. Base compares `Rational`s with each other, with integers
and with floats by multiplying out their denominators with `widemul`, which computes
`Int128` products that SPIR-V can't represent. Stack GPUToolbox's `int128_overrides`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It printed a `shape` field that `CLDeviceArray` doesn't have. Same fix as JuliaGPU/OpenCL.jl
ac06098.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@christiangnrd
christiangnrd added this pull request to stack #945 October 31, 2026 17:56
@github-actions

Copy link
Copy Markdown
Contributor

Benchmark results

Compared with 7d2ea0f46, the latest measured ancestor of the merge base (2 commits before it).
The environment differs from the baseline's: JSON 1.13.0 → 1.13.4, Parsers 3.0.3 → 3.0.5, SPIRVIntrinsics 1.5.1 → 1.6.0, StructUtils 2.11.2 → 2.12.0, StructUtilsStaticArraysCoreExt 2.11.2 → 2.12.0.

Times are the minimum time of every benchmark. A change is unusual when it exceeds both three times the benchmark's typical change between consecutive runs on the default branch and a minimum per category (performance 3%, latency 5%, applications 3%, other 3%). A benchmark that starts or stops allocating is listed however few the allocations. A single run can still be a fluke, so rerun before drawing conclusions.

Geometric mean Unusual: slower Unusual: faster Compared
Performance +0.5% 0 0 32
Latency −2.6% 0 0 13
Applications −0.7% 0 0 5

No unusual changes.

All benchmarks
Benchmark Baseline This PR Change
Performance
julia/serial/arithmetic/muladd-reference 655 µs 655 µs −0.0% noise unknown
julia/serial/math/exp-f64-reference 290 µs 291 µs +0.6% noise unknown
julia/serial/narrow/masked-reference 711 µs 714 µs +0.5% noise unknown
pocl/parallel/atomics/histogram 5.16 ms 5.14 ms −0.4% noise unknown
pocl/parallel/groupreduce/add-f64 1.66 ms 1.65 ms −0.1% noise unknown
pocl/parallel/groupreduce/fallback 18.1 ms 18.1 ms −0.0% noise unknown
pocl/parallel/groupscan/add-i32 2.53 ms 2.52 ms −0.4% noise unknown
pocl/parallel/indexing/cartesian3d 77.8 µs 78.6 µs +0.9% noise unknown
pocl/parallel/indexing/linear3d 78.4 µs 78.8 µs +0.5% noise unknown
pocl/parallel/indexing/ntuple3d 79.5 µs 79.2 µs −0.3% noise unknown
pocl/parallel/indexing/ntuple4d 165 µs 162 µs −1.5% noise unknown
pocl/parallel/localmem/transpose-naive 457 µs 456 µs −0.2% noise unknown
pocl/parallel/localmem/transpose-tiled 104 µs 114 µs +9.3% noise unknown
pocl/parallel/private/across-barrier 165 µs 165 µs −0.2% noise unknown
pocl/parallel/scheduling/default 182 µs 181 µs −0.3% noise unknown
pocl/parallel/scheduling/explicit 181 µs 181 µs +0.0% noise unknown
pocl/parallel/stream/copy/cache 784 ns 687 ns −12.4% noise unknown
pocl/parallel/stream/copy/dram 6.25 ms 6.29 ms +0.6% noise unknown
pocl/parallel/stream/triad/cache 7.54 µs 7.05 µs −6.5% noise unknown
pocl/parallel/stream/triad/dram 8.73 ms 9.46 ms +8.4% noise unknown
pocl/parallel/util/copyto-small 24.0 ns 27.0 ns +12.5% noise unknown
pocl/parallel/util/zeros-large 999 µs 1.01 ms +1.3% noise unknown
pocl/parallel/util/zeros-small 632 ns 628 ns −0.6% noise unknown
pocl/serial/arithmetic/contract 1.91 ms 1.90 ms −0.2% noise unknown
pocl/serial/arithmetic/muladd 765 µs 764 µs −0.2% noise unknown
pocl/serial/const/marked 727 µs 738 µs +1.5% noise unknown
pocl/serial/const/unmarked 914 µs 919 µs +0.5% noise unknown
pocl/serial/math/exp-f64 146 µs 146 µs +0.3% noise unknown
pocl/serial/math/sin-f64 191 µs 191 µs +0.1% noise unknown
pocl/serial/narrow/masked 815 µs 835 µs +2.4% noise unknown
pocl/serial/narrow/unmasked 788 µs 794 µs +0.8% noise unknown
pocl/serial/stream/triad/dram 8.61 ms 8.61 ms +0.1% noise unknown
Latency
host/import/ka 509 ms 508 ms −0.1% noise unknown
host/precompile/ka 44.8 s 44.4 s −1.0% noise unknown
host/startup 131 ms 129 ms −1.2% noise unknown
pocl/parallel/launch/dynamic-default 4.36 µs 4.55 µs +4.4% noise unknown
pocl/parallel/launch/groupreduce-f64 6.59 µs 5.39 µs −18.2% noise unknown
pocl/parallel/launch/many-args 12.1 µs 10.1 µs −16.9% noise unknown
pocl/parallel/launch/partial-workgroup 4.25 µs 4.31 µs +1.4% noise unknown
pocl/serial/compile/groupreduce 1.86 s 1.88 s +1.2% noise unknown
pocl/serial/compile/localmem-barrier 718 ms 711 ms −0.9% noise unknown
pocl/serial/compile/new-kernel 109 ms 110 ms +0.3% noise unknown
pocl/serial/compile/new-workgroupsize 13.6 ms 13.7 ms +1.0% noise unknown
pocl/serial/first-kernel/cold-cache 2.05 s 2.05 s +0.2% noise unknown
pocl/serial/first-kernel/warm-cache 386 ms 385 ms −0.3% noise unknown
Applications
pocl/parallel/dgsem/fluxdiff-node 295 µs 292 µs −0.8% noise unknown
pocl/parallel/dgsem/weak-element 160 µs 159 µs −0.7% noise unknown
pocl/parallel/dgsem/weak-node-localmem 119 µs 117 µs −1.2% noise unknown
pocl/parallel/stencil/timestep 7.65 ms 7.77 ms +1.6% noise unknown
pocl/serial/stencil/timestep 11.5 ms 11.2 ms −2.5% noise unknown

History: https://juliagpu.org/perf/?pkg=kernelabstractions

@codecov

codecov Bot commented Nov 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.93%. Comparing base (81aca7d) to head (3491a89).

Additional details and impacted files
@@            Coverage Diff             @@
##           isbits     #944      +/-   ##
==========================================
+ Coverage   83.85%   83.93%   +0.07%     
==========================================
  Files          31       31              
  Lines        2533     2533              
==========================================
+ Hits         2124     2126       +2     
+ Misses        409      407       -2     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

This branch has not been deployed

No deployments
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