Skip to content

Julia 1.14 compatibility for the POCL back-end - #796

Open
maleadt wants to merge 6 commits into
mainfrom
tb/julia-1.14
Open

maleadt wants to merge 6 commits into
mainfrom
tb/julia-1.14

Conversation

@maleadt

@maleadt maleadt commented Sep 25, 2026 •

Copy link
Copy Markdown
Member

On main, the nightly jobs abort with `LLVM ERROR: Broken module found`. They're green only because of `continue-on-error`.

  • RNG overlays: the Float16/Float32 `randn`/`randexp` overlays used `@invoke f(rng::AbstractRNG, T::Type{<:AbstractFloat})`, which builds the `UnionAll` at run time. Julia 1.14 no longer folds such types to constants (type system: Add TypeEgal kind JuliaLang/julia#62001), so the kernel called `jl_type_unionall`. The signature is now a constant.
  • Bounds errors: 1.14 reports indexed bounds errors through `Base._throw_boundserror_indices` (Fix --trim compatibility for BoundsError JuliaLang/julia#61561), which bypassed the `throw_boundserror` override and lost the error message (`test/codegen_checks.jl`). Added the same override Metal.jl has.
  • Type broadcasts: 1.14 specializes type arguments on Core.TypeEgal{T} (type system: Add TypeEgal kind JuliaLang/julia#62001), which the POCL Broadcasted{…, Type{T}} adaptor rule didn't match. It now matches <:Type{T}.
  • Functions capturing a type: LinearAlgebra's triangular det now reduces with Base.Fix1(convert, T) (Check that matrix is square in det triangular fast-path JuliaLang/LinearAlgebra.jl#1658), which isn't isbits. Fix1/Fix2 capturing a type are converted to closures.
  • Random.Sampler override: kept a plain overlay. SPIRVIntrinsics' @device_override becomes a consistent overlay in Julia 1.14 compatibility OpenCL.jl#505, and this override returns a different sampler than the host method.
  • CI: Buildkite steps can be selected with `[only cuda]`, `[only metal, oneapi]`, `[only tests]`, or excluded with `[skip amdgpu]`, as in GPUCompiler. They're skipped on draft PRs unless selected.

The full test suite passes locally (also against the SPIRVIntrinsics from JuliaGPU/OpenCL.jl#505) on 1.10, 1.12, 1.13 and nightly (1.14.0-DEV.3363), on macOS arm64 with pocl.

maleadt and others added 3 commits September 25, 2026 15:37
Follow GPUCompiler's commit message tags, and skip the back-end tests on
draft pull requests unless selected explicitly, to save CI resources.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Float16/Float32 randn/randexp overlays @invoke Random's AbstractFloat
fallback with a Type{<:AbstractFloat} annotation, which builds a UnionAll
when the kernel runs. Julia 1.14 no longer folds such freshly constructed
types to constants (JuliaLang/julia#62001), so the kernel ended up calling
jl_type_unionall and failed to compile. Hoist the signature into a constant.
Julia 1.14 reports indexed bounds errors through
Base._throw_boundserror_indices instead of throw_boundserror, so the
existing override no longer applied and out-of-bounds accesses lost their
error message. Mirror the override Metal.jl already has.
maleadt and others added 2 commits September 25, 2026 16:05
Julia 1.14 specializes type-valued arguments on `Core.TypeEgal{T}`
(JuliaLang/julia#62001), so a broadcast of a type constructor has
`TypeEgal{T}` as its function type parameter. That isn't matched by
the `Type{T}` in our adaptor rule, which replaces the non-isbits type
with a closure, making such broadcasts fail to compile. Match any
subtype of `Type{T}` instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It returns a different sampler than the host method, so it must not be
defined as a consistent overlay, as SPIRVIntrinsics' `@device_override`
will do (JuliaGPU/OpenCL.jl): concrete evaluation would then substitute
the host result, which our overlaid `rand` methods cannot handle.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Benchmark Results

Show table
main d812fbc... main / d812fbc...
const/@Const/Float32/262144 0.332 ± 0.022 ms 0.333 ± 0.027 ms 0.999 ± 0.1
const/@Const/Float32/65536 0.119 ± 0.025 ms 0.125 ± 0.025 ms 0.949 ± 0.28
const/@Const/Float64/262144 0.424 ± 0.029 ms 0.419 ± 0.031 ms 1.01 ± 0.1
const/@Const/Float64/65536 0.161 ± 0.015 ms 0.153 ± 0.027 ms 1.05 ± 0.21
const/unmarked/Float32/262144 1.16 ± 0.035 ms 1.16 ± 0.034 ms 0.998 ± 0.042
const/unmarked/Float32/65536 0.322 ± 0.033 ms 0.321 ± 0.03 ms 1 ± 0.14
const/unmarked/Float64/262144 1.37 ± 0.038 ms 1.35 ± 0.021 ms 1.01 ± 0.032
const/unmarked/Float64/65536 0.387 ± 0.04 ms 0.386 ± 0.038 ms 1 ± 0.14
launch/3D static workgroup, dynamic ndrange 0.0332 ± 0.026 ms 0.0558 ± 0.029 ms 0.594 ± 0.56
launch/3D static workgroup, static ndrange 0.0318 ± 0.013 ms 0.0509 ± 0.03 ms 0.625 ± 0.45
launch/dynamic workgroup, dynamic ndrange 0.0336 ± 0.025 ms 0.0559 ± 0.032 ms 0.6 ± 0.56
launch/dynamic workgroup, dynamic ndrange, workgroupsize given 0.0445 ± 0.033 ms 0.0478 ± 0.031 ms 0.931 ± 0.92
launch/static workgroup, dynamic ndrange 0.0326 ± 0.026 ms 0.0477 ± 0.032 ms 0.682 ± 0.7
launch/static workgroup, static ndrange 31.2 ± 6.8 μs 0.0543 ± 0.031 ms 0.575 ± 0.36
partition/dynamic workgroup, dynamic ndrange 0.0582 ± 0.0012 μs 0.0584 ± 0.0012 μs 0.997 ± 0.03
partition/static workgroup, dynamic ndrange 0.0698 ± 0.012 μs 0.0662 ± 0.012 μs 1.05 ± 0.26
partition/static workgroup, static ndrange 1.55 ± 0.01 ns 1.55 ± 0.01 ns 1 ± 0.0091
saxpy/default/Float16/1024 0.0408 ± 0.03 ms 0.0696 ± 0.026 ms 0.586 ± 0.49
saxpy/default/Float16/1048576 0.789 ± 0.036 ms 0.784 ± 0.028 ms 1.01 ± 0.059
saxpy/default/Float16/16384 0.0582 ± 0.03 ms 0.0616 ± 0.032 ms 0.946 ± 0.69
saxpy/default/Float16/2048 0.0445 ± 0.026 ms 0.067 ± 0.026 ms 0.663 ± 0.46
saxpy/default/Float16/256 0.0384 ± 0.026 ms 0.058 ± 0.03 ms 0.661 ± 0.57
saxpy/default/Float16/262144 0.245 ± 0.034 ms 0.243 ± 0.03 ms 1.01 ± 0.19
saxpy/default/Float16/32768 0.0688 ± 0.032 ms 0.0714 ± 0.031 ms 0.964 ± 0.62
saxpy/default/Float16/4096 0.0727 ± 0.029 ms 0.0601 ± 0.029 ms 1.21 ± 0.76
saxpy/default/Float16/512 0.0412 ± 0.03 ms 0.0612 ± 0.028 ms 0.673 ± 0.58
saxpy/default/Float16/64 0.0331 ± 0.0059 ms 0.0583 ± 0.032 ms 0.568 ± 0.32
saxpy/default/Float16/65536 0.0904 ± 0.029 ms 0.0925 ± 0.029 ms 0.977 ± 0.44
saxpy/default/Float32/1024 0.0486 ± 0.032 ms 0.0678 ± 0.028 ms 0.718 ± 0.56
saxpy/default/Float32/1048576 0.493 ± 0.037 ms 0.487 ± 0.022 ms 1.01 ± 0.089
saxpy/default/Float32/16384 0.0527 ± 0.029 ms 0.0562 ± 0.03 ms 0.939 ± 0.72
saxpy/default/Float32/2048 0.0433 ± 0.029 ms 0.064 ± 0.028 ms 0.677 ± 0.54
saxpy/default/Float32/256 0.0385 ± 0.034 ms 0.0587 ± 0.03 ms 0.657 ± 0.66
saxpy/default/Float32/262144 0.171 ± 0.03 ms 0.17 ± 0.029 ms 1.01 ± 0.25
saxpy/default/Float32/32768 0.06 ± 0.028 ms 0.061 ± 0.029 ms 0.983 ± 0.66
saxpy/default/Float32/4096 0.0635 ± 0.025 ms 0.0639 ± 0.027 ms 0.993 ± 0.57
saxpy/default/Float32/512 0.0408 ± 0.032 ms 0.0647 ± 0.028 ms 0.631 ± 0.57
saxpy/default/Float32/64 0.0331 ± 0.0056 ms 0.0573 ± 0.032 ms 0.578 ± 0.33
saxpy/default/Float32/65536 0.0796 ± 0.032 ms 0.0784 ± 0.029 ms 1.02 ± 0.56
saxpy/default/Float64/1024 0.0568 ± 0.032 ms 0.0645 ± 0.031 ms 0.881 ± 0.65
saxpy/default/Float64/1048576 0.615 ± 0.092 ms 0.575 ± 0.11 ms 1.07 ± 0.26
saxpy/default/Float64/16384 0.053 ± 0.026 ms 0.055 ± 0.028 ms 0.962 ± 0.68
saxpy/default/Float64/2048 0.0412 ± 0.019 ms 0.049 ± 0.028 ms 0.84 ± 0.61
saxpy/default/Float64/256 0.0347 ± 0.025 ms 0.0605 ± 0.029 ms 0.573 ± 0.5
saxpy/default/Float64/262144 0.198 ± 0.035 ms 0.18 ± 0.032 ms 1.1 ± 0.27
saxpy/default/Float64/32768 0.0675 ± 0.03 ms 0.0651 ± 0.028 ms 1.04 ± 0.64
saxpy/default/Float64/4096 0.0597 ± 0.023 ms 0.0627 ± 0.025 ms 0.953 ± 0.54
saxpy/default/Float64/512 0.0397 ± 0.032 ms 0.0649 ± 0.028 ms 0.611 ± 0.56
saxpy/default/Float64/64 0.0339 ± 0.016 ms 0.0579 ± 0.031 ms 0.586 ± 0.42
saxpy/default/Float64/65536 0.0865 ± 0.031 ms 0.0853 ± 0.029 ms 1.01 ± 0.5
saxpy/static workgroup=(1024,)/Float16/1024 0.0407 ± 0.029 ms 0.0648 ± 0.025 ms 0.628 ± 0.51
saxpy/static workgroup=(1024,)/Float16/1048576 0.787 ± 0.039 ms 0.778 ± 0.03 ms 1.01 ± 0.063
saxpy/static workgroup=(1024,)/Float16/16384 0.0543 ± 0.027 ms 0.0565 ± 0.03 ms 0.961 ± 0.7
saxpy/static workgroup=(1024,)/Float16/2048 0.0425 ± 0.024 ms 0.0642 ± 0.026 ms 0.662 ± 0.46
saxpy/static workgroup=(1024,)/Float16/256 0.0425 ± 0.031 ms 0.057 ± 0.027 ms 0.746 ± 0.66
saxpy/static workgroup=(1024,)/Float16/262144 0.24 ± 0.032 ms 0.237 ± 0.033 ms 1.01 ± 0.19
saxpy/static workgroup=(1024,)/Float16/32768 0.0662 ± 0.028 ms 0.066 ± 0.029 ms 1 ± 0.62
saxpy/static workgroup=(1024,)/Float16/4096 0.068 ± 0.033 ms 0.0476 ± 0.028 ms 1.43 ± 1.1
saxpy/static workgroup=(1024,)/Float16/512 0.0441 ± 0.031 ms 0.0591 ± 0.027 ms 0.746 ± 0.62
saxpy/static workgroup=(1024,)/Float16/64 0.0525 ± 0.031 ms 0.0545 ± 0.027 ms 0.964 ± 0.75
saxpy/static workgroup=(1024,)/Float16/65536 0.0887 ± 0.027 ms 0.0878 ± 0.027 ms 1.01 ± 0.44
saxpy/static workgroup=(1024,)/Float32/1024 0.058 ± 0.032 ms 0.0668 ± 0.024 ms 0.868 ± 0.57
saxpy/static workgroup=(1024,)/Float32/1048576 0.491 ± 0.038 ms 0.484 ± 0.022 ms 1.01 ± 0.092
saxpy/static workgroup=(1024,)/Float32/16384 0.0526 ± 0.028 ms 0.0512 ± 0.029 ms 1.03 ± 0.79
saxpy/static workgroup=(1024,)/Float32/2048 0.0416 ± 0.028 ms 0.0584 ± 0.027 ms 0.712 ± 0.58
saxpy/static workgroup=(1024,)/Float32/256 0.0416 ± 0.031 ms 0.0584 ± 0.027 ms 0.712 ± 0.61
saxpy/static workgroup=(1024,)/Float32/262144 0.17 ± 0.029 ms 0.166 ± 0.028 ms 1.02 ± 0.25
saxpy/static workgroup=(1024,)/Float32/32768 0.0582 ± 0.026 ms 0.0574 ± 0.028 ms 1.01 ± 0.67
saxpy/static workgroup=(1024,)/Float32/4096 0.0599 ± 0.026 ms 0.0532 ± 0.027 ms 1.13 ± 0.76
saxpy/static workgroup=(1024,)/Float32/512 0.0441 ± 0.031 ms 0.0632 ± 0.026 ms 0.699 ± 0.57
saxpy/static workgroup=(1024,)/Float32/64 0.042 ± 0.031 ms 0.0564 ± 0.027 ms 0.745 ± 0.65
saxpy/static workgroup=(1024,)/Float32/65536 0.076 ± 0.029 ms 0.0728 ± 0.03 ms 1.04 ± 0.58
saxpy/static workgroup=(1024,)/Float64/1024 0.0533 ± 0.032 ms 0.0623 ± 0.028 ms 0.856 ± 0.64
saxpy/static workgroup=(1024,)/Float64/1048576 0.592 ± 0.062 ms 0.567 ± 0.087 ms 1.04 ± 0.19
saxpy/static workgroup=(1024,)/Float64/16384 0.0529 ± 0.026 ms 0.0514 ± 0.027 ms 1.03 ± 0.74
saxpy/static workgroup=(1024,)/Float64/2048 0.0404 ± 0.027 ms 0.0498 ± 0.027 ms 0.811 ± 0.7
saxpy/static workgroup=(1024,)/Float64/256 0.0476 ± 0.03 ms 0.0585 ± 0.027 ms 0.814 ± 0.63
saxpy/static workgroup=(1024,)/Float64/262144 0.195 ± 0.033 ms 0.181 ± 0.031 ms 1.08 ± 0.26
saxpy/static workgroup=(1024,)/Float64/32768 0.0678 ± 0.028 ms 0.0617 ± 0.027 ms 1.1 ± 0.66
saxpy/static workgroup=(1024,)/Float64/4096 0.047 ± 0.026 ms 0.0558 ± 0.025 ms 0.842 ± 0.6
saxpy/static workgroup=(1024,)/Float64/512 0.046 ± 0.031 ms 0.063 ± 0.026 ms 0.73 ± 0.58
saxpy/static workgroup=(1024,)/Float64/64 0.0528 ± 0.031 ms 0.0562 ± 0.027 ms 0.939 ± 0.71
saxpy/static workgroup=(1024,)/Float64/65536 0.0883 ± 0.03 ms 0.0826 ± 0.028 ms 1.07 ± 0.52
time_to_load 0.771 ± 0.011 s 0.783 ± 0.0097 s 0.985 ± 0.018
main d812fbc... main / d812fbc...
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.201 k allocs: 11.8 kB 0.201 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).

LinearAlgebra's `det` of triangular matrices now reduces with
`Base.Fix1(convert, T)`, which isn't isbits (JuliaLang/LinearAlgebra.jl#1658).
Convert `Fix1` and `Fix2` capturing a type into closures that carry the
type as a parameter instead, like we already do for broadcasting types.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

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.

2 participants