Skip to content

Complete the 0.10 release notes and update the NUMA example - #842

Open
vchuravy wants to merge 3 commits into
mainfrom
vc/release-notes-0.10
Open

vchuravy wants to merge 3 commits into
mainfrom
vc/release-notes-0.10

Conversation

@vchuravy

@vchuravy vchuravy commented Oct 5, 2026 •

Copy link
Copy Markdown
Member

Fills the gaps in the ### 0.10 section of docs/src/index.md ahead of the 0.10 release, and fixes the NUMA example, which still used an option that no longer exists.

Release notes

New entries for:

NUMA example

examples/numa_aware.jl called CPU(; static=true), which throws a MethodError on main, and its advice was written for the thread-based CPU backend of 0.9. The example and its page are rewritten for the PoCL-based backend:

  1. Pinning: POCL_AFFINITY=1 pins PoCL's threads. ThreadPinning.jl pins Julia's threads, which no longer run the kernels, so the example drops it.
  2. There is no static option anymore; the page points to julia -t / JULIA_KA_CPU_THREADS for the thread count.
  3. First touch: KernelAbstractions.zeros fills the array from the calling thread (allocate + fill!), so the example allocates with allocate and initializes with a kernel.

The page's numbers are new, measured on main with 16 threads on a Ryzen 9 5950X. That machine has a single NUMA domain, so all four configurations (affinity on/off, parallel/serial initialization) give the same 41.2 GB/s. The page says so, and says that the gain on a system with multiple memory domains has not been measured with the PoCL-based backend. Numbers from a multi-socket machine would be a welcome follow-up.

Testing

The documentation builds locally (julia --project=docs docs/make.jl, Julia 1.12) and the new cross-references resolve.

🤖 Generated with Claude Code

Comment thread docs/src/index.md
Comment on lines +141 to +145
- KernelAbstractions is built on [KernelInterface](@ref kernelinterface), which defines
`Backend` and the host-side functions (`allocate`, `synchronize`, …) that
KernelAbstractions re-exports. User code is unaffected, but backends have to implement
KernelInterface, so KernelAbstractions 0.10 needs a release of the backend package that
supports it; see the [notes for backend implementations](@ref implementations_notes).

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- KernelAbstractions is built on [KernelInterface](@ref kernelinterface), which defines
`Backend` and the host-side functions (`allocate`, `synchronize`, …) that
KernelAbstractions re-exports. User code is unaffected, but backends have to implement
KernelInterface, so KernelAbstractions 0.10 needs a release of the backend package that
supports it; see the [notes for backend implementations](@ref implementations_notes).
- KernelAbstractions is built on [KernelInterface](@ref kernelinterface), which defines
`Backend` and the host-side functions (`allocate`, `synchronize`, …) that
KernelAbstractions re-exports. User code is unaffected, but backends have to implement
KernelInterface; see the [notes for backend implementations](@ref implementations_notes).

Comment thread docs/src/index.md
Comment on lines +146 to +148
- The Enzyme extension has been removed temporarily, and is planned to return in a later
0.10 release. Code that differentiates kernels with Enzyme has to stay on
KernelAbstractions 0.9 until then.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- The Enzyme extension has been removed temporarily, and is planned to return in a later
0.10 release. Code that differentiates kernels with Enzyme has to stay on
KernelAbstractions 0.9 until then.
- The Enzyme extension has been removed temporarily, and is planned to return in a later
0.10 release..

@github-actions

github-actions Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Benchmark Results

Show table
main cc5b112... main / cc5b112...
const/@Const/Float32/262144 0.289 ± 0.01 ms 0.298 ± 0.011 ms 0.97 ± 0.049
const/@Const/Float32/65536 0.0919 ± 0.0034 ms 0.092 ± 0.0022 ms 1 ± 0.045
const/@Const/Float64/262144 0.569 ± 0.013 ms 0.608 ± 0.013 ms 0.936 ± 0.029
const/@Const/Float64/65536 0.167 ± 0.007 ms 0.16 ± 0.011 ms 1.04 ± 0.084
const/unmarked/Float32/262144 0.495 ± 0.0099 ms 0.439 ± 0.011 ms 1.13 ± 0.035
const/unmarked/Float32/65536 0.12 ± 0.0026 ms 0.118 ± 0.0031 ms 1.02 ± 0.035
const/unmarked/Float64/262144 0.848 ± 0.011 ms 0.857 ± 0.012 ms 0.99 ± 0.019
const/unmarked/Float64/65536 0.235 ± 0.011 ms 0.247 ± 0.019 ms 0.95 ± 0.084
launch/3D static workgroup, dynamic ndrange 8.61 ± 0.91 μs 8.32 ± 1.1 μs 1.03 ± 0.18
launch/3D static workgroup, static ndrange 8.38 ± 1.1 μs 7.84 ± 1.1 μs 1.07 ± 0.21
launch/dynamic workgroup, dynamic ndrange 8.36 ± 1 μs 7.87 ± 1 μs 1.06 ± 0.19
launch/dynamic workgroup, dynamic ndrange, workgroupsize given 8.08 ± 0.89 μs 8.8 ± 0.9 μs 0.919 ± 0.14
launch/static workgroup, dynamic ndrange 8.31 ± 1.1 μs 7.94 ± 1.3 μs 1.05 ± 0.22
launch/static workgroup, static ndrange 8.03 ± 1.1 μs 7.6 ± 1.2 μs 1.06 ± 0.22
partition/dynamic workgroup, dynamic ndrange 0.0386 ± 0.0055 μs 0.0347 ± 0.0064 μs 1.11 ± 0.26
partition/static workgroup, dynamic ndrange 0.0343 ± 0.0084 μs 0.0375 ± 0.0084 μs 0.913 ± 0.3
partition/static workgroup, static ndrange 1.18 ± 0.01 ns 1.65 ± 0.01 ns 0.715 ± 0.0074
saxpy/default/Float16/1024 7.32 ± 1.1 μs 10.4 ± 0.24 μs 0.702 ± 0.11
saxpy/default/Float16/1048576 0.315 ± 0.028 ms 0.328 ± 0.038 ms 0.962 ± 0.14
saxpy/default/Float16/16384 31.4 ± 17 μs 31.4 ± 19 μs 1 ± 0.81
saxpy/default/Float16/2048 8.72 ± 3.1 μs 10.5 ± 0.36 μs 0.829 ± 0.29
saxpy/default/Float16/256 7.68 ± 0.2 μs 9.31 ± 0.82 μs 0.825 ± 0.076
saxpy/default/Float16/262144 0.0913 ± 0.0087 ms 0.0925 ± 0.0057 ms 0.987 ± 0.11
saxpy/default/Float16/32768 0.0344 ± 0.0022 ms 0.0336 ± 0.0018 ms 1.02 ± 0.085
saxpy/default/Float16/4096 8.38 ± 0.95 μs 9.58 ± 1.3 μs 0.874 ± 0.16
saxpy/default/Float16/512 7.73 ± 0.17 μs 8.05 ± 1.3 μs 0.96 ± 0.16
saxpy/default/Float16/64 7.53 ± 0.24 μs 8.97 ± 0.2 μs 0.839 ± 0.032
saxpy/default/Float16/65536 0.0429 ± 0.0022 ms 0.044 ± 0.0028 ms 0.976 ± 0.081
saxpy/default/Float32/1024 7.45 ± 1.2 μs 8.44 ± 2.3 μs 0.883 ± 0.28
saxpy/default/Float32/1048576 0.255 ± 0.039 ms 0.297 ± 0.048 ms 0.858 ± 0.19
saxpy/default/Float32/16384 9.56 ± 1.8 μs 11.5 ± 1.2 μs 0.83 ± 0.18
saxpy/default/Float32/2048 7.68 ± 0.99 μs 10.1 ± 0.81 μs 0.757 ± 0.11
saxpy/default/Float32/256 8.85 ± 1.3 μs 7.89 ± 1.3 μs 1.12 ± 0.24
saxpy/default/Float32/262144 0.0821 ± 0.012 ms 0.086 ± 0.01 ms 0.955 ± 0.18
saxpy/default/Float32/32768 0.0333 ± 0.0038 ms 0.0349 ± 0.0028 ms 0.955 ± 0.13
saxpy/default/Float32/4096 7.58 ± 1 μs 8.61 ± 2 μs 0.88 ± 0.24
saxpy/default/Float32/512 7.62 ± 2.2 μs 7.85 ± 1.3 μs 0.971 ± 0.33
saxpy/default/Float32/64 7.66 ± 0.21 μs 8.98 ± 0.16 μs 0.854 ± 0.028
saxpy/default/Float32/65536 0.0412 ± 0.0054 ms 0.042 ± 0.0041 ms 0.982 ± 0.16
saxpy/default/Float64/1024 8.14 ± 1.4 μs 8.24 ± 1.2 μs 0.987 ± 0.23
saxpy/default/Float64/1048576 0.651 ± 0.14 ms 0.654 ± 0.14 ms 0.995 ± 0.3
saxpy/default/Float64/16384 0.0332 ± 0.0025 ms 0.0326 ± 0.0028 ms 1.02 ± 0.12
saxpy/default/Float64/2048 7.61 ± 0.87 μs 8.29 ± 1.3 μs 0.918 ± 0.18
saxpy/default/Float64/256 9.86 ± 0.22 μs 8.05 ± 2 μs 1.23 ± 0.31
saxpy/default/Float64/262144 0.142 ± 0.014 ms 0.15 ± 0.018 ms 0.949 ± 0.15
saxpy/default/Float64/32768 0.04 ± 0.0031 ms 0.0403 ± 0.0047 ms 0.994 ± 0.14
saxpy/default/Float64/4096 8.24 ± 1.3 μs 8.66 ± 1.2 μs 0.951 ± 0.2
saxpy/default/Float64/512 9.9 ± 0.66 μs 8.09 ± 2.2 μs 1.22 ± 0.34
saxpy/default/Float64/64 8.85 ± 0.17 μs 7.76 ± 1.1 μs 1.14 ± 0.16
saxpy/default/Float64/65536 0.0545 ± 0.014 ms 0.0526 ± 0.005 ms 1.04 ± 0.29
saxpy/static workgroup=(1024,)/Float16/1024 7.65 ± 1.3 μs 8.46 ± 2.4 μs 0.905 ± 0.3
saxpy/static workgroup=(1024,)/Float16/1048576 0.313 ± 0.028 ms 0.312 ± 0.029 ms 1 ± 0.13
saxpy/static workgroup=(1024,)/Float16/16384 29.6 ± 19 μs 31.1 ± 3.6 μs 0.953 ± 0.63
saxpy/static workgroup=(1024,)/Float16/2048 10.1 ± 1.6 μs 9.05 ± 2.5 μs 1.12 ± 0.36
saxpy/static workgroup=(1024,)/Float16/256 7.78 ± 0.3 μs 8.07 ± 0.96 μs 0.963 ± 0.12
saxpy/static workgroup=(1024,)/Float16/262144 0.0933 ± 0.02 ms 0.0928 ± 0.0051 ms 1.01 ± 0.23
saxpy/static workgroup=(1024,)/Float16/32768 0.0355 ± 0.0023 ms 0.0346 ± 0.0029 ms 1.02 ± 0.11
saxpy/static workgroup=(1024,)/Float16/4096 9.09 ± 1.2 μs 9.26 ± 1.1 μs 0.981 ± 0.18
saxpy/static workgroup=(1024,)/Float16/512 8.95 ± 0.95 μs 9.15 ± 0.85 μs 0.978 ± 0.14
saxpy/static workgroup=(1024,)/Float16/64 8.92 ± 0.15 μs 9.11 ± 0.21 μs 0.979 ± 0.028
saxpy/static workgroup=(1024,)/Float16/65536 0.0425 ± 0.0031 ms 0.0426 ± 0.0032 ms 0.997 ± 0.11
saxpy/static workgroup=(1024,)/Float32/1024 9.43 ± 1.5 μs 7.91 ± 1.3 μs 1.19 ± 0.27
saxpy/static workgroup=(1024,)/Float32/1048576 0.275 ± 0.044 ms 0.269 ± 0.033 ms 1.02 ± 0.2
saxpy/static workgroup=(1024,)/Float32/16384 10.9 ± 2.1 μs 12.4 ± 1.8 μs 0.875 ± 0.21
saxpy/static workgroup=(1024,)/Float32/2048 9.21 ± 2 μs 9.39 ± 1.7 μs 0.981 ± 0.28
saxpy/static workgroup=(1024,)/Float32/256 8.71 ± 1.9 μs 7.57 ± 0.16 μs 1.15 ± 0.26
saxpy/static workgroup=(1024,)/Float32/262144 0.0841 ± 0.013 ms 0.0828 ± 0.0096 ms 1.01 ± 0.2
saxpy/static workgroup=(1024,)/Float32/32768 0.0329 ± 0.0031 ms 0.0335 ± 0.0028 ms 0.984 ± 0.12
saxpy/static workgroup=(1024,)/Float32/4096 8.03 ± 2.6 μs 8.36 ± 1.6 μs 0.961 ± 0.36
saxpy/static workgroup=(1024,)/Float32/512 9.85 ± 0.57 μs 7.6 ± 0.95 μs 1.3 ± 0.18
saxpy/static workgroup=(1024,)/Float32/64 7.95 ± 1.1 μs 7.64 ± 1.2 μs 1.04 ± 0.22
saxpy/static workgroup=(1024,)/Float32/65536 0.0429 ± 0.0058 ms 0.0403 ± 0.0053 ms 1.06 ± 0.2
saxpy/static workgroup=(1024,)/Float64/1024 7.91 ± 1.6 μs 9.85 ± 1.8 μs 0.803 ± 0.21
saxpy/static workgroup=(1024,)/Float64/1048576 0.629 ± 0.18 ms 0.713 ± 0.15 ms 0.882 ± 0.32
saxpy/static workgroup=(1024,)/Float64/16384 0.0317 ± 0.019 ms 0.0322 ± 0.0023 ms 0.986 ± 0.58
saxpy/static workgroup=(1024,)/Float64/2048 9.78 ± 2.2 μs 9.8 ± 1.8 μs 0.998 ± 0.29
saxpy/static workgroup=(1024,)/Float64/256 9.9 ± 0.28 μs 8.69 ± 2.3 μs 1.14 ± 0.31
saxpy/static workgroup=(1024,)/Float64/262144 0.141 ± 0.014 ms 0.144 ± 0.017 ms 0.979 ± 0.15
saxpy/static workgroup=(1024,)/Float64/32768 0.0411 ± 0.0049 ms 0.0416 ± 0.0051 ms 0.987 ± 0.17
saxpy/static workgroup=(1024,)/Float64/4096 10.4 ± 1.9 μs 10.6 ± 0.41 μs 0.982 ± 0.18
saxpy/static workgroup=(1024,)/Float64/512 9.97 ± 0.51 μs 7.91 ± 1.1 μs 1.26 ± 0.18
saxpy/static workgroup=(1024,)/Float64/64 8.59 ± 1.3 μs 9 ± 0.19 μs 0.954 ± 0.15
saxpy/static workgroup=(1024,)/Float64/65536 0.0524 ± 0.0067 ms 0.0538 ± 0.0061 ms 0.973 ± 0.17
time_to_load 0.35 ± 0.013 s 0.388 ± 0.0086 s 0.902 ± 0.039
main cc5b112... main / cc5b112...
const/@Const/Float32/262144 9 allocs: 0.203 kB 9 allocs: 0.203 kB 1
const/@Const/Float32/65536 9 allocs: 0.203 kB 9 allocs: 0.203 kB 1
const/@Const/Float64/262144 9 allocs: 0.203 kB 9 allocs: 0.203 kB 1
const/@Const/Float64/65536 9 allocs: 0.203 kB 9 allocs: 0.203 kB 1
const/unmarked/Float32/262144 9 allocs: 0.203 kB 9 allocs: 0.203 kB 1
const/unmarked/Float32/65536 9 allocs: 0.203 kB 9 allocs: 0.203 kB 1
const/unmarked/Float64/262144 9 allocs: 0.203 kB 9 allocs: 0.203 kB 1
const/unmarked/Float64/65536 9 allocs: 0.203 kB 9 allocs: 0.203 kB 1
launch/3D static workgroup, dynamic ndrange 9 allocs: 0.219 kB 9 allocs: 0.219 kB 1
launch/3D static workgroup, static ndrange 9 allocs: 0.219 kB 9 allocs: 0.219 kB 1
launch/dynamic workgroup, dynamic ndrange 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
launch/dynamic workgroup, dynamic ndrange, workgroupsize given 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
launch/static workgroup, dynamic ndrange 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
launch/static workgroup, static ndrange 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
partition/dynamic workgroup, dynamic ndrange 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
partition/static workgroup, dynamic ndrange 2 allocs: 32 B 2 allocs: 32 B 1
partition/static workgroup, static ndrange 0 allocs: 0 B 0 allocs: 0 B
saxpy/default/Float16/1024 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float16/1048576 12 allocs: 0.25 kB 12 allocs: 0.25 kB 1
saxpy/default/Float16/16384 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float16/2048 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float16/256 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
saxpy/default/Float16/262144 12 allocs: 0.25 kB 12 allocs: 0.25 kB 1
saxpy/default/Float16/32768 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float16/4096 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float16/512 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float16/64 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
saxpy/default/Float16/65536 8 allocs: 0.141 kB 12 allocs: 0.25 kB 0.562
saxpy/default/Float32/1024 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float32/1048576 12 allocs: 0.25 kB 12 allocs: 0.25 kB 1
saxpy/default/Float32/16384 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float32/2048 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float32/256 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
saxpy/default/Float32/262144 12 allocs: 0.25 kB 8 allocs: 0.141 kB 1.78
saxpy/default/Float32/32768 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float32/4096 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float32/512 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float32/64 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
saxpy/default/Float32/65536 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float64/1024 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float64/1048576 12 allocs: 0.25 kB 12 allocs: 0.25 kB 1
saxpy/default/Float64/16384 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float64/2048 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float64/256 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
saxpy/default/Float64/262144 12 allocs: 0.25 kB 12 allocs: 0.25 kB 1
saxpy/default/Float64/32768 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float64/4096 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float64/512 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/default/Float64/64 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
saxpy/default/Float64/65536 12 allocs: 0.25 kB 12 allocs: 0.25 kB 1
saxpy/static workgroup=(1024,)/Float16/1024 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float16/1048576 12 allocs: 0.25 kB 12 allocs: 0.25 kB 1
saxpy/static workgroup=(1024,)/Float16/16384 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float16/2048 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float16/256 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
saxpy/static workgroup=(1024,)/Float16/262144 12 allocs: 0.25 kB 12 allocs: 0.25 kB 1
saxpy/static workgroup=(1024,)/Float16/32768 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float16/4096 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float16/512 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float16/64 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
saxpy/static workgroup=(1024,)/Float16/65536 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float32/1024 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float32/1048576 12 allocs: 0.25 kB 12 allocs: 0.25 kB 1
saxpy/static workgroup=(1024,)/Float32/16384 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float32/2048 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float32/256 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
saxpy/static workgroup=(1024,)/Float32/262144 12 allocs: 0.25 kB 12 allocs: 0.25 kB 1
saxpy/static workgroup=(1024,)/Float32/32768 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float32/4096 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float32/512 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float32/64 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
saxpy/static workgroup=(1024,)/Float32/65536 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float64/1024 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float64/1048576 12 allocs: 0.25 kB 12 allocs: 0.25 kB 1
saxpy/static workgroup=(1024,)/Float64/16384 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float64/2048 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float64/256 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
saxpy/static workgroup=(1024,)/Float64/262144 12 allocs: 0.25 kB 12 allocs: 0.25 kB 1
saxpy/static workgroup=(1024,)/Float64/32768 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float64/4096 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float64/512 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
saxpy/static workgroup=(1024,)/Float64/64 5 allocs: 0.0938 kB 5 allocs: 0.0938 kB 1
saxpy/static workgroup=(1024,)/Float64/65536 12 allocs: 0.25 kB 12 allocs: 0.25 kB 1
time_to_load 0.2 k allocs: 11.8 kB 0.2 k allocs: 11.8 kB 1

Benchmark Plots

A plot of the benchmark results have been uploaded as an artifact to the workflow run for this PR.
Go to "Actions"->"Benchmark a pull request"->[the most recent run]->"Artifacts" (at the bottom).

@codecov

codecov Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 79.75%. Comparing base (0977a07) to head (795d078).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #842   +/-   ##
=======================================
  Coverage   79.75%   79.75%           
=======================================
  Files          25       25           
  Lines        2139     2139           
=======================================
  Hits         1706     1706           
  Misses        433      433           

☔ 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.

The 0.10 notes did not mention the Julia 1.10 requirement, that the CPU
backend now runs on PoCL (and that `CPU(; static=true)` is gone), the
KernelInterface requirement for backends, the temporary removal of the
Enzyme extension, `KernelAbstractions.@spawn`, or the removal of `isgpu`.

The NUMA example still called `CPU(; static=true)`, which no longer
exists. Drop that call and note on its page which of the remarks changed
with the PoCL-based CPU backend.

Assisted-by: Claude Code
The example pinned Julia's threads with ThreadPinning.jl and relied on
`KernelAbstractions.zeros` for a parallel first touch. On 0.10 kernels
run on PoCL's threads and `zeros` fills from the calling thread, so pin
with `POCL_AFFINITY=1` and initialize the data with a kernel instead.

The page now describes 0.10 only. Its numbers are from a system with a
single memory domain, where the configurations don't differ; the page
says that the gain on a system with multiple domains is not measured.

Assisted-by: Claude Code
….10 notes

Launching a kernel on the PoCL-based CPU backend costs several
microseconds more than on the thread-based backend of 0.9, and a fixed
one-dimensional workgroup size such as 64 pads multidimensional ranges.
Recommend letting the workgroup size be chosen, and mention that kernels
always run with the bounds mask (#845).

Assisted-by: Claude Code
@vchuravy
vchuravy force-pushed the vc/release-notes-0.10 branch from 795d078 to cc5b112 Compare October 9, 2026 08:28

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