Skip to content

POCL: enable SPV_KHR_float_controls2 when the device accepts it - #876

Draft
vchuravy wants to merge 1 commit into
mainfrom
vc/spirv-float-controls2
Draft

vchuravy wants to merge 1 commit into
mainfrom
vc/spirv-float-controls2

Conversation

@vchuravy

@vchuravy vchuravy commented Oct 11, 2026 •

Copy link
Copy Markdown
Member

Fixes the PoCL half of #865, once PoCL accepts the extension. Draft until JuliaGPU/GPUCompiler.jl#1007 is released (see below).

Base SPIR-V can't carry LLVM's contract fast-math flag. So muladd reaches PoCL as a separate OpFMul + OpFAdd, the SPIR-V back-end marks every kernel ContractionOff, and PoCL never emits an FMA. SPV_KHR_float_controls2 carries the flag as FPFastMathMode AllowContract, and the SPIR-V back-end emits that when the extension is enabled.

Once enabled, though, the back-end declares the extension in every float kernel, and drivers that don't accept it reject the module. So this PR:

  • adds a spirv_extensions device property to nanoOpenCL (CL_DEVICE_SPIRV_EXTENSIONS_KHR, from cl_khr_spirv_queries; empty when the device doesn't support the query);
  • defaults extensions in compiler_config to the OPTIONAL_SPIRV_EXTENSIONS (currently just SPV_KHR_float_controls2) that the device lists. Explicitly passed extensions replace that default.

Dependencies:

Testing:

  • New testset "POCL fast-math contraction" checks three things: the extension is enabled exactly when the device reports it; the SPIR-V then has FPFastMathMode AllowContract; and extensions = "" turns it off.
  • With the current pocl_standalone_jll, the extension isn't reported, the testset passes, and kernels are unchanged.
  • With a PoCL build of Enable SPV_KHR_float_controls2 for the CPU devices pocl/pocl#2393 (LLVM 23.1.1, loaded through the libpocl_path preference) and SPIR-V: declare FloatControls2 for kernels with SPV_KHR_float_controls2 GPUCompiler.jl#1007:
    • A plain @kernel launch of y[i] = muladd(a[i], x[i], y[i]) compiles to vfmadd and gives results bit-identical to fma.(a, x, y). Without this PR it compiles to vmulsd/vaddsd.
    • The full test suite passes and matches main on the same PoCL, plus the new testset. One testset is excluded on both: "CPU back-end", where that PoCL 8.0-pre/LLVM 23 build aborts with Could not find a dominating alternative variable on main too.

Same change for OpenCL.jl: JuliaGPU/OpenCL.jl#562

🤖 Generated with Claude Code

Base SPIR-V can't carry the `contract` fast-math flag, so `muladd`
reaches PoCL as a separate multiply and add (and the SPIR-V back-end
marks every kernel `ContractionOff`), which PoCL never fuses into an FMA
(#865). SPV_KHR_float_controls2 carries the flag as `FPFastMathMode
AllowContract`.

Enabling the extension makes the back-end declare it in every kernel,
which drivers that don't accept it reject, so query the SPIR-V
extensions the device accepts (cl_khr_spirv_queries) and enable it only
when it is among them. Explicitly passed `extensions` replace this
default.

Assisted-by: Claude Code (Opus 5.5)
@codecov

codecov Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 80.57%. Comparing base (f34a52b) to head (cf49f30).
⚠️ Report is 8 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #876      +/-   ##
==========================================
+ Coverage   80.49%   80.57%   +0.07%     
==========================================
  Files          26       26              
  Lines        2210     2219       +9     
==========================================
+ Hits         1779     1788       +9     
  Misses        431      431              

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

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Show table
main cf49f30... main / cf49f30...
const/@Const/Float32/262144 0.309 ± 0.011 ms 0.309 ± 0.012 ms 1 ± 0.052
const/@Const/Float32/65536 0.107 ± 0.007 ms 0.104 ± 0.0068 ms 1.03 ± 0.096
const/@Const/Float64/262144 0.587 ± 0.012 ms 0.588 ± 0.013 ms 0.998 ± 0.029
const/@Const/Float64/65536 0.18 ± 0.0076 ms 0.186 ± 0.0088 ms 0.971 ± 0.062
const/unmarked/Float32/262144 0.511 ± 0.013 ms 0.513 ± 0.014 ms 0.996 ± 0.038
const/unmarked/Float32/65536 0.149 ± 0.011 ms 0.149 ± 0.01 ms 1 ± 0.1
const/unmarked/Float64/262144 0.996 ± 0.016 ms 0.997 ± 0.0084 ms 0.999 ± 0.018
const/unmarked/Float64/65536 0.264 ± 0.014 ms 0.267 ± 0.012 ms 0.988 ± 0.07
launch/3D static workgroup, dynamic ndrange 8.77 ± 0.28 μs 8.84 ± 0.28 μs 0.992 ± 0.044
launch/3D static workgroup, static ndrange 8.53 ± 0.26 μs 8.72 ± 0.26 μs 0.977 ± 0.041
launch/dynamic workgroup, dynamic ndrange 8.01 ± 0.17 μs 8.02 ± 0.15 μs 0.999 ± 0.028
launch/dynamic workgroup, dynamic ndrange, workgroupsize given 7.98 ± 0.24 μs 8.15 ± 0.21 μs 0.98 ± 0.039
launch/static workgroup, dynamic ndrange 8.67 ± 0.3 μs 8.66 ± 0.22 μs 1 ± 0.042
launch/static workgroup, static ndrange 8.4 ± 0.25 μs 8.85 ± 2.2 μs 0.949 ± 0.23
partition/dynamic workgroup, dynamic ndrange 0.0521 ± 0.006 μs 0.0479 ± 0.0045 μs 1.09 ± 0.16
partition/static workgroup, dynamic ndrange 0.047 ± 0.011 μs 0.0479 ± 0.011 μs 0.981 ± 0.32
partition/static workgroup, static ndrange 1.35 ± 0 ns 1.35 ± 0 ns 1 ± 0
saxpy/default/Float16/1024 9.55 ± 0.5 μs 9.51 ± 0.23 μs 1 ± 0.058
saxpy/default/Float16/1048576 0.268 ± 0.015 ms 0.268 ± 0.015 ms 1 ± 0.079
saxpy/default/Float16/16384 14.8 ± 0.59 μs 16.4 ± 1.4 μs 0.904 ± 0.087
saxpy/default/Float16/2048 9.8 ± 0.63 μs 11.7 ± 1.6 μs 0.841 ± 0.13
saxpy/default/Float16/256 8.87 ± 2.1 μs 9.11 ± 0.26 μs 0.974 ± 0.23
saxpy/default/Float16/262144 0.0947 ± 0.0079 ms 0.0935 ± 0.0068 ms 1.01 ± 0.11
saxpy/default/Float16/32768 20.6 ± 2.6 μs 19.6 ± 2.7 μs 1.05 ± 0.2
saxpy/default/Float16/4096 10.2 ± 0.24 μs 10.3 ± 0.21 μs 0.991 ± 0.031
saxpy/default/Float16/512 9.11 ± 0.39 μs 9.24 ± 0.33 μs 0.987 ± 0.055
saxpy/default/Float16/64 8.8 ± 0.32 μs 9.16 ± 0.39 μs 0.96 ± 0.054
saxpy/default/Float16/65536 26 ± 1.5 μs 26.2 ± 3.1 μs 0.993 ± 0.13
saxpy/default/Float32/1024 9.43 ± 0.24 μs 9.63 ± 0.29 μs 0.979 ± 0.039
saxpy/default/Float32/1048576 0.219 ± 0.018 ms 0.225 ± 0.021 ms 0.973 ± 0.12
saxpy/default/Float32/16384 15.5 ± 2 μs 14.8 ± 2.8 μs 1.04 ± 0.24
saxpy/default/Float32/2048 9.63 ± 0.34 μs 9.73 ± 0.22 μs 0.99 ± 0.041
saxpy/default/Float32/256 8.98 ± 2.2 μs 9.22 ± 0.44 μs 0.973 ± 0.25
saxpy/default/Float32/262144 0.0857 ± 0.027 ms 0.0884 ± 0.01 ms 0.97 ± 0.33
saxpy/default/Float32/32768 19 ± 2.8 μs 19.4 ± 2.4 μs 0.983 ± 0.19
saxpy/default/Float32/4096 9.94 ± 0.22 μs 11.3 ± 1.6 μs 0.876 ± 0.13
saxpy/default/Float32/512 10.1 ± 2.1 μs 9.5 ± 0.3 μs 1.06 ± 0.22
saxpy/default/Float32/64 9.44 ± 2.2 μs 9.19 ± 2.3 μs 1.03 ± 0.35
saxpy/default/Float32/65536 28.6 ± 6 μs 26.7 ± 1.9 μs 1.07 ± 0.24
saxpy/default/Float64/1024 11.2 ± 1.6 μs 9.7 ± 0.25 μs 1.16 ± 0.17
saxpy/default/Float64/1048576 0.489 ± 0.034 ms 0.501 ± 0.034 ms 0.977 ± 0.095
saxpy/default/Float64/16384 19 ± 1.4 μs 18.8 ± 1.8 μs 1.01 ± 0.12
saxpy/default/Float64/2048 11.4 ± 1.6 μs 10.2 ± 1.6 μs 1.12 ± 0.24
saxpy/default/Float64/256 9.41 ± 0.62 μs 9.33 ± 0.21 μs 1.01 ± 0.07
saxpy/default/Float64/262144 0.124 ± 0.014 ms 0.126 ± 0.014 ms 0.984 ± 0.16
saxpy/default/Float64/32768 25.4 ± 4.1 μs 25.1 ± 6.3 μs 1.02 ± 0.3
saxpy/default/Float64/4096 10.6 ± 0.32 μs 13.7 ± 1.2 μs 0.771 ± 0.07
saxpy/default/Float64/512 11.4 ± 0.4 μs 11.1 ± 2 μs 1.02 ± 0.18
saxpy/default/Float64/64 8.79 ± 0.23 μs 9.34 ± 2.3 μs 0.941 ± 0.23
saxpy/default/Float64/65536 0.0396 ± 0.0049 ms 0.0373 ± 0.0081 ms 1.06 ± 0.27
saxpy/static workgroup=(1024,)/Float16/1024 11.5 ± 2.2 μs 11.2 ± 2.1 μs 1.02 ± 0.27
saxpy/static workgroup=(1024,)/Float16/1048576 0.27 ± 0.015 ms 0.268 ± 0.015 ms 1.01 ± 0.079
saxpy/static workgroup=(1024,)/Float16/16384 15 ± 0.64 μs 15.5 ± 1.8 μs 0.966 ± 0.12
saxpy/static workgroup=(1024,)/Float16/2048 9.69 ± 0.18 μs 9.63 ± 0.23 μs 1.01 ± 0.031
saxpy/static workgroup=(1024,)/Float16/256 9.2 ± 0.3 μs 11.2 ± 2.3 μs 0.819 ± 0.17
saxpy/static workgroup=(1024,)/Float16/262144 0.0939 ± 0.008 ms 0.0975 ± 0.0091 ms 0.963 ± 0.12
saxpy/static workgroup=(1024,)/Float16/32768 18.7 ± 1.6 μs 18.6 ± 0.68 μs 1 ± 0.091
saxpy/static workgroup=(1024,)/Float16/4096 10.2 ± 0.52 μs 13.2 ± 1.9 μs 0.774 ± 0.12
saxpy/static workgroup=(1024,)/Float16/512 9.21 ± 0.3 μs 9.26 ± 0.29 μs 0.994 ± 0.045
saxpy/static workgroup=(1024,)/Float16/64 9.21 ± 1.1 μs 9.25 ± 1.1 μs 0.996 ± 0.17
saxpy/static workgroup=(1024,)/Float16/65536 26.1 ± 1.4 μs 26.1 ± 0.94 μs 1 ± 0.064
saxpy/static workgroup=(1024,)/Float32/1024 9.3 ± 0.23 μs 9.52 ± 1.9 μs 0.977 ± 0.19
saxpy/static workgroup=(1024,)/Float32/1048576 0.218 ± 0.019 ms 0.22 ± 0.019 ms 0.989 ± 0.12
saxpy/static workgroup=(1024,)/Float32/16384 14.9 ± 1.1 μs 14.8 ± 1.3 μs 1.01 ± 0.11
saxpy/static workgroup=(1024,)/Float32/2048 10.6 ± 2 μs 11.4 ± 1.7 μs 0.934 ± 0.23
saxpy/static workgroup=(1024,)/Float32/256 8.9 ± 0.22 μs 9.37 ± 2.1 μs 0.95 ± 0.22
saxpy/static workgroup=(1024,)/Float32/262144 0.0838 ± 0.032 ms 0.0906 ± 0.012 ms 0.924 ± 0.37
saxpy/static workgroup=(1024,)/Float32/32768 19.3 ± 2.1 μs 19.6 ± 2.4 μs 0.986 ± 0.16
saxpy/static workgroup=(1024,)/Float32/4096 9.86 ± 1.8 μs 10 ± 1.4 μs 0.982 ± 0.22
saxpy/static workgroup=(1024,)/Float32/512 9.41 ± 0.31 μs 9.53 ± 0.29 μs 0.987 ± 0.044
saxpy/static workgroup=(1024,)/Float32/64 9.11 ± 1.2 μs 9.1 ± 1.2 μs 1 ± 0.18
saxpy/static workgroup=(1024,)/Float32/65536 27.6 ± 7.3 μs 28.4 ± 5.7 μs 0.973 ± 0.32
saxpy/static workgroup=(1024,)/Float64/1024 9.61 ± 0.28 μs 9.73 ± 0.28 μs 0.987 ± 0.041
saxpy/static workgroup=(1024,)/Float64/1048576 0.486 ± 0.032 ms 0.511 ± 0.037 ms 0.951 ± 0.092
saxpy/static workgroup=(1024,)/Float64/16384 20.1 ± 1.6 μs 17.7 ± 5.4 μs 1.14 ± 0.36
saxpy/static workgroup=(1024,)/Float64/2048 9.92 ± 0.23 μs 10 ± 0.34 μs 0.99 ± 0.041
saxpy/static workgroup=(1024,)/Float64/256 9.85 ± 2.6 μs 9.82 ± 2.6 μs 1 ± 0.37
saxpy/static workgroup=(1024,)/Float64/262144 0.123 ± 0.014 ms 0.127 ± 0.014 ms 0.972 ± 0.15
saxpy/static workgroup=(1024,)/Float64/32768 28.1 ± 5.2 μs 26.7 ± 5.6 μs 1.05 ± 0.3
saxpy/static workgroup=(1024,)/Float64/4096 10.5 ± 0.29 μs 13.6 ± 1.2 μs 0.772 ± 0.074
saxpy/static workgroup=(1024,)/Float64/512 10.2 ± 2.4 μs 9.73 ± 0.29 μs 1.04 ± 0.25
saxpy/static workgroup=(1024,)/Float64/64 9.53 ± 2.2 μs 9.23 ± 1.1 μs 1.03 ± 0.27
saxpy/static workgroup=(1024,)/Float64/65536 0.0413 ± 0.0053 ms 0.0415 ± 0.0051 ms 0.995 ± 0.18
time_to_load 0.423 ± 0.0027 s 0.424 ± 0.0031 s 0.997 ± 0.0096
main cf49f30... main / cf49f30...
const/@Const/Float32/262144 5 allocs: 0.0938 kB 9 allocs: 0.203 kB 0.462
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 8 allocs: 0.141 kB 12 allocs: 0.25 kB 0.562
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 8 allocs: 0.141 kB 1
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 8 allocs: 0.141 kB 8 allocs: 0.141 kB 1
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 8 allocs: 0.141 kB 8 allocs: 0.141 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 8 allocs: 0.141 kB 8 allocs: 0.141 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 8 allocs: 0.141 kB 8 allocs: 0.141 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).

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