Skip to content

KernelInterface: per-dimension launch limits, inlined index queries - #798

Merged
maleadt merged 5 commits into
mainfrom
tb/ki-limits
Sep 28, 2026
Merged

maleadt merged 5 commits into
mainfrom
tb/ki-limits

Conversation

@maleadt

@maleadt maleadt commented Sep 27, 2026

Copy link
Copy Markdown
Member

Two KernelInterface changes, split off from #797 so that they can be released as KernelInterface 0.2.3 first.

Per-dimension launch limits. KernelInterface only knows a back end's total workgroup size, so auto_launch_sizes can pick workgroups the hardware can't launch: for an ndrange of (1, 1, 5000) it chooses (1, 1, 1024), while CUDA allows at most 64 threads along z. Back ends can now report their per-dimension workgroup and grid limits with max_work_group_dims(backend) and max_num_groups(backend) (unlimited by default), and threads_to_workgroupsize respects the former. KernelAbstractions needs these limits to decide whether it can launch a kernel on an N-d grid (#797). POCL reports its limits.

Inlined index queries. The zero-argument KI.get_local_id(), get_group_id() etc. weren't inlined on CUDA, so every work-item made real calls that returned the ids through local memory. With KA main, that makes a 1-D broadcast in CUDA.jl's KA 0.10 port (JuliaGPU/CUDA.jl#3302) 1.65× slower than with KA 0.9, and some kernels up to 2.4× slower. They're now @inline.

The typed queries (get_group_id(Int32) etc.) are now documented to compute in the requested type.

Tests. The KernelInterface testsuite, which back ends run, now checks that launches at the reported limits work and that automatically sized launches respect them. Back ends with a small limit along some dimension (CUDA: 64 along z) need to implement max_work_group_dims to pass. KA's CI now also runs the testsuite on POCL (so far only CUDA.jl ran it), except for the events tests, which need asynchronous launches.

CI: Julia 1.10 ignores [sources], so the workflow now develops lib/KernelInterface before building KernelAbstractions, which requires the unregistered 0.2.3.

KernelAbstractions' index functions call the zero-argument forms, which
weren't inlined on CUDA: every work-item made two calls, returning the ids
through local memory, making e.g. broadcasts up to 2x slower.
Add `max_work_group_dims` and `max_num_groups`, and respect the former when
distributing work-items over a workgroup, so that e.g. an ndrange of
(1, 1, 5000) no longer gets a (1, 1, 1024) workgroup that CUDA can't launch.
Also specify that the typed index queries compute in `T`.

POCL reports its per-dimension workgroup limits, and the testsuite checks that
back ends can launch at their reported limits and that automatically sized
launches respect them.
Only CUDA.jl ran it so far. Skip the events tests, which need
asynchronous launches.
On Julia 1.10, which ignores [sources], building the package already resolves the
environment, which fails if KernelAbstractions requires a KernelInterface version
that isn't registered yet.
@github-actions

github-actions Bot commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

Benchmark Results

Show table
main 68c294d... main / 68c294d...
const/@Const/Float32/262144 0.343 ± 0.021 ms 0.341 ± 0.024 ms 1.01 ± 0.094
const/@Const/Float32/65536 0.135 ± 0.027 ms 0.131 ± 0.026 ms 1.03 ± 0.29
const/@Const/Float64/262144 0.436 ± 0.023 ms 0.437 ± 0.022 ms 0.998 ± 0.072
const/@Const/Float64/65536 0.161 ± 0.025 ms 0.166 ± 0.013 ms 0.971 ± 0.17
const/unmarked/Float32/262144 1.24 ± 0.029 ms 1.17 ± 0.039 ms 1.06 ± 0.043
const/unmarked/Float32/65536 0.328 ± 0.035 ms 0.325 ± 0.033 ms 1.01 ± 0.15
const/unmarked/Float64/262144 1.39 ± 0.029 ms 1.38 ± 0.034 ms 1 ± 0.033
const/unmarked/Float64/65536 0.376 ± 0.038 ms 0.377 ± 0.039 ms 0.996 ± 0.15
launch/3D static workgroup, dynamic ndrange 0.0718 ± 0.02 ms 0.0715 ± 0.012 ms 1 ± 0.32
launch/3D static workgroup, static ndrange 0.0709 ± 0.031 ms 0.072 ± 0.012 ms 0.985 ± 0.46
launch/dynamic workgroup, dynamic ndrange 0.0745 ± 0.021 ms 0.0738 ± 0.026 ms 1.01 ± 0.45
launch/dynamic workgroup, dynamic ndrange, workgroupsize given 0.0689 ± 0.034 ms 0.0674 ± 0.035 ms 1.02 ± 0.73
launch/static workgroup, dynamic ndrange 0.0724 ± 0.014 ms 0.072 ± 0.018 ms 1.01 ± 0.32
launch/static workgroup, static ndrange 0.0723 ± 0.017 ms 0.0717 ± 0.013 ms 1.01 ± 0.3
partition/dynamic workgroup, dynamic ndrange 0.0602 ± 0.0013 μs 0.0583 ± 0.0058 μs 1.03 ± 0.11
partition/static workgroup, dynamic ndrange 0.0648 ± 0.012 μs 0.0649 ± 0.012 μs 1 ± 0.27
partition/static workgroup, static ndrange 1.55 ± 0.009 ns 1.55 ± 0.01 ns 1 ± 0.0087
saxpy/default/Float16/1024 0.0742 ± 0.028 ms 0.0738 ± 0.027 ms 1.01 ± 0.52
saxpy/default/Float16/1048576 0.808 ± 0.038 ms 0.801 ± 0.036 ms 1.01 ± 0.066
saxpy/default/Float16/16384 0.0655 ± 0.033 ms 0.0643 ± 0.033 ms 1.02 ± 0.73
saxpy/default/Float16/2048 0.0731 ± 0.028 ms 0.0746 ± 0.028 ms 0.979 ± 0.53
saxpy/default/Float16/256 0.0737 ± 0.028 ms 0.074 ± 0.026 ms 0.996 ± 0.51
saxpy/default/Float16/262144 0.254 ± 0.034 ms 0.253 ± 0.034 ms 1 ± 0.19
saxpy/default/Float16/32768 0.0764 ± 0.032 ms 0.0744 ± 0.031 ms 1.03 ± 0.61
saxpy/default/Float16/4096 0.0773 ± 0.031 ms 0.0768 ± 0.031 ms 1.01 ± 0.58
saxpy/default/Float16/512 0.0734 ± 0.029 ms 0.0741 ± 0.021 ms 0.99 ± 0.48
saxpy/default/Float16/64 0.0739 ± 0.021 ms 0.0743 ± 0.028 ms 0.994 ± 0.46
saxpy/default/Float16/65536 0.0975 ± 0.031 ms 0.0959 ± 0.03 ms 1.02 ± 0.45
saxpy/default/Float32/1024 0.0736 ± 0.016 ms 0.0733 ± 0.002 ms 1 ± 0.22
saxpy/default/Float32/1048576 0.525 ± 0.051 ms 0.514 ± 0.046 ms 1.02 ± 0.14
saxpy/default/Float32/16384 0.058 ± 0.03 ms 0.0567 ± 0.029 ms 1.02 ± 0.74
saxpy/default/Float32/2048 0.0729 ± 0.03 ms 0.0723 ± 0.031 ms 1.01 ± 0.6
saxpy/default/Float32/256 0.0728 ± 0.029 ms 0.0737 ± 0.022 ms 0.987 ± 0.5
saxpy/default/Float32/262144 0.181 ± 0.032 ms 0.176 ± 0.03 ms 1.03 ± 0.25
saxpy/default/Float32/32768 0.0632 ± 0.03 ms 0.0626 ± 0.029 ms 1.01 ± 0.68
saxpy/default/Float32/4096 0.073 ± 0.029 ms 0.0683 ± 0.029 ms 1.07 ± 0.62
saxpy/default/Float32/512 0.0734 ± 0.023 ms 0.0726 ± 0.026 ms 1.01 ± 0.48
saxpy/default/Float32/64 0.0742 ± 0.024 ms 0.0739 ± 0.027 ms 1 ± 0.49
saxpy/default/Float32/65536 0.0821 ± 0.031 ms 0.0812 ± 0.031 ms 1.01 ± 0.54
saxpy/default/Float64/1024 0.0743 ± 0.013 ms 0.0728 ± 0.011 ms 1.02 ± 0.24
saxpy/default/Float64/1048576 0.625 ± 0.085 ms 0.634 ± 0.079 ms 0.987 ± 0.18
saxpy/default/Float64/16384 0.0585 ± 0.03 ms 0.057 ± 0.029 ms 1.02 ± 0.75
saxpy/default/Float64/2048 0.0691 ± 0.031 ms 0.0705 ± 0.031 ms 0.981 ± 0.62
saxpy/default/Float64/256 0.0735 ± 0.018 ms 0.0733 ± 0.022 ms 1 ± 0.39
saxpy/default/Float64/262144 0.203 ± 0.036 ms 0.203 ± 0.037 ms 1 ± 0.26
saxpy/default/Float64/32768 0.0715 ± 0.031 ms 0.0686 ± 0.031 ms 1.04 ± 0.65
saxpy/default/Float64/4096 0.0677 ± 0.027 ms 0.0654 ± 0.028 ms 1.04 ± 0.6
saxpy/default/Float64/512 0.0736 ± 0.02 ms 0.0728 ± 0.019 ms 1.01 ± 0.38
saxpy/default/Float64/64 0.0756 ± 0.017 ms 0.0745 ± 0.016 ms 1.01 ± 0.32
saxpy/default/Float64/65536 0.097 ± 0.033 ms 0.0915 ± 0.032 ms 1.06 ± 0.52
saxpy/static workgroup=(1024,)/Float16/1024 0.0719 ± 0.028 ms 0.0723 ± 0.027 ms 0.995 ± 0.54
saxpy/static workgroup=(1024,)/Float16/1048576 0.801 ± 0.036 ms 0.797 ± 0.039 ms 1.01 ± 0.067
saxpy/static workgroup=(1024,)/Float16/16384 0.061 ± 0.031 ms 0.0609 ± 0.031 ms 1 ± 0.71
saxpy/static workgroup=(1024,)/Float16/2048 0.0708 ± 0.029 ms 0.0715 ± 0.029 ms 0.99 ± 0.57
saxpy/static workgroup=(1024,)/Float16/256 0.0715 ± 0.028 ms 0.0714 ± 0.03 ms 1 ± 0.58
saxpy/static workgroup=(1024,)/Float16/262144 0.25 ± 0.035 ms 0.247 ± 0.035 ms 1.01 ± 0.2
saxpy/static workgroup=(1024,)/Float16/32768 0.0736 ± 0.031 ms 0.0709 ± 0.03 ms 1.04 ± 0.62
saxpy/static workgroup=(1024,)/Float16/4096 0.0695 ± 0.032 ms 0.0687 ± 0.032 ms 1.01 ± 0.66
saxpy/static workgroup=(1024,)/Float16/512 0.0721 ± 0.025 ms 0.0709 ± 0.03 ms 1.02 ± 0.56
saxpy/static workgroup=(1024,)/Float16/64 0.0714 ± 0.026 ms 0.0714 ± 0.031 ms 1 ± 0.56
saxpy/static workgroup=(1024,)/Float16/65536 0.0947 ± 0.03 ms 0.0946 ± 0.03 ms 1 ± 0.45
saxpy/static workgroup=(1024,)/Float32/1024 0.0718 ± 0.02 ms 0.071 ± 0.027 ms 1.01 ± 0.48
saxpy/static workgroup=(1024,)/Float32/1048576 0.514 ± 0.043 ms 0.498 ± 0.04 ms 1.03 ± 0.12
saxpy/static workgroup=(1024,)/Float32/16384 0.0588 ± 0.029 ms 0.0565 ± 0.029 ms 1.04 ± 0.75
saxpy/static workgroup=(1024,)/Float32/2048 0.0681 ± 0.031 ms 0.0667 ± 0.031 ms 1.02 ± 0.66
saxpy/static workgroup=(1024,)/Float32/256 0.072 ± 0.029 ms 0.0713 ± 0.03 ms 1.01 ± 0.59
saxpy/static workgroup=(1024,)/Float32/262144 0.176 ± 0.03 ms 0.175 ± 0.03 ms 1.01 ± 0.24
saxpy/static workgroup=(1024,)/Float32/32768 0.0656 ± 0.03 ms 0.0632 ± 0.028 ms 1.04 ± 0.66
saxpy/static workgroup=(1024,)/Float32/4096 0.0632 ± 0.029 ms 0.0627 ± 0.029 ms 1.01 ± 0.67
saxpy/static workgroup=(1024,)/Float32/512 0.0716 ± 0.024 ms 0.071 ± 0.029 ms 1.01 ± 0.53
saxpy/static workgroup=(1024,)/Float32/64 0.0721 ± 0.023 ms 0.0712 ± 0.029 ms 1.01 ± 0.53
saxpy/static workgroup=(1024,)/Float32/65536 0.0842 ± 0.03 ms 0.0803 ± 0.029 ms 1.05 ± 0.53
saxpy/static workgroup=(1024,)/Float64/1024 0.0713 ± 0.028 ms 0.07 ± 0.029 ms 1.02 ± 0.58
saxpy/static workgroup=(1024,)/Float64/1048576 0.671 ± 0.11 ms 0.6 ± 0.053 ms 1.12 ± 0.2
saxpy/static workgroup=(1024,)/Float64/16384 0.0602 ± 0.029 ms 0.0581 ± 0.029 ms 1.04 ± 0.71
saxpy/static workgroup=(1024,)/Float64/2048 0.0627 ± 0.03 ms 0.0634 ± 0.031 ms 0.989 ± 0.68
saxpy/static workgroup=(1024,)/Float64/256 0.0728 ± 0.023 ms 0.0706 ± 0.029 ms 1.03 ± 0.54
saxpy/static workgroup=(1024,)/Float64/262144 0.201 ± 0.037 ms 0.2 ± 0.032 ms 1.01 ± 0.24
saxpy/static workgroup=(1024,)/Float64/32768 0.0762 ± 0.029 ms 0.0691 ± 0.029 ms 1.1 ± 0.63
saxpy/static workgroup=(1024,)/Float64/4096 0.0626 ± 0.028 ms 0.0571 ± 0.029 ms 1.1 ± 0.73
saxpy/static workgroup=(1024,)/Float64/512 0.0703 ± 0.029 ms 0.07 ± 0.03 ms 1 ± 0.6
saxpy/static workgroup=(1024,)/Float64/64 0.0718 ± 0.028 ms 0.0714 ± 0.021 ms 1 ± 0.49
saxpy/static workgroup=(1024,)/Float64/65536 0.0968 ± 0.031 ms 0.0923 ± 0.032 ms 1.05 ± 0.5
time_to_load 0.82 ± 0.035 s 0.786 ± 0.028 s 1.04 ± 0.059
main 68c294d... main / 68c294d...
const/@Const/Float32/262144 1 allocs: 16 B 1 allocs: 16 B 1
const/@Const/Float32/65536 1 allocs: 16 B 1 allocs: 16 B 1
const/@Const/Float64/262144 1 allocs: 16 B 1 allocs: 16 B 1
const/@Const/Float64/65536 1 allocs: 16 B 1 allocs: 16 B 1
const/unmarked/Float32/262144 1 allocs: 16 B 1 allocs: 16 B 1
const/unmarked/Float32/65536 1 allocs: 16 B 1 allocs: 16 B 1
const/unmarked/Float64/262144 1 allocs: 16 B 1 allocs: 16 B 1
const/unmarked/Float64/65536 1 allocs: 16 B 1 allocs: 16 B 1
launch/3D static workgroup, dynamic ndrange 5 allocs: 0.141 kB 5 allocs: 0.141 kB 1
launch/3D static workgroup, static ndrange 6 allocs: 0.172 kB 6 allocs: 0.172 kB 1
launch/dynamic workgroup, dynamic ndrange 15 allocs: 0.312 kB 15 allocs: 0.312 kB 1
launch/dynamic workgroup, dynamic ndrange, workgroupsize given 1 allocs: 16 B 1 allocs: 16 B 1
launch/static workgroup, dynamic ndrange 1 allocs: 16 B 1 allocs: 16 B 1
launch/static workgroup, static ndrange 2 allocs: 0.0469 kB 2 allocs: 0.0469 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 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float16/1048576 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float16/16384 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float16/2048 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float16/256 16 allocs: 0.328 kB 16 allocs: 0.328 kB 1
saxpy/default/Float16/262144 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float16/32768 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float16/4096 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float16/512 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float16/64 16 allocs: 0.328 kB 16 allocs: 0.328 kB 1
saxpy/default/Float16/65536 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float32/1024 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float32/1048576 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float32/16384 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float32/2048 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float32/256 16 allocs: 0.328 kB 16 allocs: 0.328 kB 1
saxpy/default/Float32/262144 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float32/32768 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float32/4096 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float32/512 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float32/64 16 allocs: 0.328 kB 16 allocs: 0.328 kB 1
saxpy/default/Float32/65536 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float64/1024 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float64/1048576 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float64/16384 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float64/2048 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float64/256 16 allocs: 0.328 kB 16 allocs: 0.328 kB 1
saxpy/default/Float64/262144 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float64/32768 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float64/4096 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float64/512 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/default/Float64/64 16 allocs: 0.328 kB 16 allocs: 0.328 kB 1
saxpy/default/Float64/65536 24 allocs: 0.453 kB 24 allocs: 0.453 kB 1
saxpy/static workgroup=(1024,)/Float16/1024 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float16/1048576 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float16/16384 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float16/2048 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float16/256 1 allocs: 16 B 1 allocs: 16 B 1
saxpy/static workgroup=(1024,)/Float16/262144 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float16/32768 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float16/4096 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float16/512 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float16/64 1 allocs: 16 B 1 allocs: 16 B 1
saxpy/static workgroup=(1024,)/Float16/65536 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float32/1024 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float32/1048576 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float32/16384 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float32/2048 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float32/256 1 allocs: 16 B 1 allocs: 16 B 1
saxpy/static workgroup=(1024,)/Float32/262144 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float32/32768 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float32/4096 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float32/512 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float32/64 1 allocs: 16 B 1 allocs: 16 B 1
saxpy/static workgroup=(1024,)/Float32/65536 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float64/1024 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float64/1048576 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float64/16384 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float64/2048 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float64/256 1 allocs: 16 B 1 allocs: 16 B 1
saxpy/static workgroup=(1024,)/Float64/262144 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float64/32768 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float64/4096 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float64/512 4 allocs: 0.0625 kB 4 allocs: 0.0625 kB 1
saxpy/static workgroup=(1024,)/Float64/64 1 allocs: 16 B 1 allocs: 16 B 1
saxpy/static workgroup=(1024,)/Float64/65536 4 allocs: 0.0625 kB 4 allocs: 0.0625 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).

@christiangnrd

Copy link
Copy Markdown
Member

I say we merge and tag and then fix the kernelinterface PRs

@maleadt
maleadt merged commit bca4c4f into main Sep 28, 2026
69 of 82 checks passed
@maleadt
maleadt deleted the tb/ki-limits branch September 28, 2026 04:41
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.

3 participants