Skip to content

Declare the method tables instead of building the view - #847

Closed
maleadt wants to merge 1 commit into
mainfrom
tb/shared-method-table
Closed

maleadt wants to merge 1 commit into
mainfrom
tb/shared-method-table

Conversation

@maleadt

@maleadt maleadt commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

GPUCompiler 2.12 added SHARED_METHOD_TABLE (JuliaGPU/GPUCompiler.jl#978), which holds overlays that package extensions can use for every device back-end. GPUCompiler stacks it below the tables a back-end returns from the new method_tables. The POCL back-end overrides method_table_view, which replaces the whole stack, so those overlays never apply to it.

This PR returns the POCL back-end's tables from method_tables instead, keeping their order. The GPUCompiler lower bound goes up to 2.12, which is where method_tables was introduced. OpenCL.jl and oneAPI.jl get the same change in JuliaGPU/OpenCL.jl#530 and JuliaGPU/oneAPI.jl#660.

GPUCompiler 2.12 stacks its shared method table below the tables a
back-end returns from `method_tables`, so that overlays meant for every
device back-end also apply here. Overriding `method_table_view` bypasses
that table.
@maleadt

maleadt commented Oct 6, 2026

Copy link
Copy Markdown
Member Author

Superseded by #843, which makes the same change.

@maleadt maleadt closed this Oct 6, 2026
@maleadt
maleadt deleted the tb/shared-method-table branch October 6, 2026 09:03
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Show table
main 09c3919... main / 09c3919...
const/@Const/Float32/262144 0.527 ± 0.021 ms 0.527 ± 0.022 ms 1 ± 0.058
const/@Const/Float32/65536 0.219 ± 0.0067 ms 0.217 ± 0.0063 ms 1.01 ± 0.042
const/@Const/Float64/262144 0.899 ± 0.012 ms 0.888 ± 0.016 ms 1.01 ± 0.023
const/@Const/Float64/65536 0.368 ± 0.017 ms 0.368 ± 0.016 ms 1 ± 0.063
const/unmarked/Float32/262144 2.57 ± 0.032 ms 2.37 ± 0.068 ms 1.08 ± 0.034
const/unmarked/Float32/65536 0.602 ± 0.019 ms 0.597 ± 0.016 ms 1.01 ± 0.043
const/unmarked/Float64/262144 3.12 ± 0.015 ms 3.13 ± 0.048 ms 0.997 ± 0.016
const/unmarked/Float64/65536 0.814 ± 0.021 ms 0.812 ± 0.014 ms 1 ± 0.032
launch/3D static workgroup, dynamic ndrange 11.7 ± 0.35 μs 10.6 ± 0.49 μs 1.1 ± 0.061
launch/3D static workgroup, static ndrange 11.8 ± 0.34 μs 10.4 ± 0.64 μs 1.14 ± 0.077
launch/dynamic workgroup, dynamic ndrange 11.9 ± 0.32 μs 12 ± 0.26 μs 0.991 ± 0.034
launch/dynamic workgroup, dynamic ndrange, workgroupsize given 12.5 ± 39 μs 11.9 ± 0.39 μs 1.05 ± 3.3
launch/static workgroup, dynamic ndrange 11.7 ± 15 μs 10.8 ± 0.28 μs 1.08 ± 1.4
launch/static workgroup, static ndrange 10.7 ± 0.57 μs 10.5 ± 0.53 μs 1.01 ± 0.075
partition/dynamic workgroup, dynamic ndrange 0.0611 ± 0.0011 μs 0.0605 ± 0.0011 μs 1.01 ± 0.026
partition/static workgroup, dynamic ndrange 0.0548 ± 0.012 μs 0.0556 ± 0.012 μs 0.986 ± 0.31
partition/static workgroup, static ndrange 1.55 ± 0.01 ns 1.55 ± 0.01 ns 1 ± 0.0091
saxpy/default/Float16/1024 0.0525 ± 0.0043 ms 0.0555 ± 0.0049 ms 0.946 ± 0.11
saxpy/default/Float16/1048576 1.48 ± 0.027 ms 1.48 ± 0.03 ms 0.997 ± 0.027
saxpy/default/Float16/16384 0.0735 ± 0.0078 ms 0.074 ± 0.0081 ms 0.993 ± 0.15
saxpy/default/Float16/2048 0.0569 ± 0.0046 ms 0.0567 ± 0.004 ms 1 ± 0.11
saxpy/default/Float16/256 11.5 ± 40 μs 11.5 ± 0.29 μs 1 ± 3.5
saxpy/default/Float16/262144 0.411 ± 0.021 ms 0.41 ± 0.019 ms 1 ± 0.068
saxpy/default/Float16/32768 0.0913 ± 0.0073 ms 0.0952 ± 0.0076 ms 0.959 ± 0.11
saxpy/default/Float16/4096 0.0612 ± 0.0052 ms 0.0584 ± 0.0065 ms 1.05 ± 0.15
saxpy/default/Float16/512 11.4 ± 0.56 μs 11.5 ± 0.49 μs 0.99 ± 0.064
saxpy/default/Float16/64 11.4 ± 40 μs 11.4 ± 0.87 μs 0.996 ± 3.5
saxpy/default/Float16/65536 0.139 ± 0.0076 ms 0.139 ± 0.0083 ms 1 ± 0.081
saxpy/default/Float32/1024 16.6 ± 35 μs 15.3 ± 32 μs 1.09 ± 3.3
saxpy/default/Float32/1048576 0.807 ± 0.042 ms 0.789 ± 0.068 ms 1.02 ± 0.1
saxpy/default/Float32/16384 0.0612 ± 0.0066 ms 0.0574 ± 0.0068 ms 1.07 ± 0.17
saxpy/default/Float32/2048 0.0545 ± 0.0036 ms 0.0554 ± 0.0064 ms 0.984 ± 0.13
saxpy/default/Float32/256 11.1 ± 0.48 μs 11.3 ± 0.69 μs 0.989 ± 0.074
saxpy/default/Float32/262144 0.219 ± 0.03 ms 0.213 ± 0.019 ms 1.03 ± 0.17
saxpy/default/Float32/32768 0.0723 ± 0.0069 ms 0.0712 ± 0.0067 ms 1.01 ± 0.14
saxpy/default/Float32/4096 0.0568 ± 0.0054 ms 0.0564 ± 0.0042 ms 1.01 ± 0.12
saxpy/default/Float32/512 14.5 ± 5.2 μs 14.9 ± 5.9 μs 0.976 ± 0.52
saxpy/default/Float32/64 11.2 ± 0.26 μs 11.3 ± 0.43 μs 0.988 ± 0.044
saxpy/default/Float32/65536 0.095 ± 0.0099 ms 0.0894 ± 0.0073 ms 1.06 ± 0.14
saxpy/default/Float64/1024 0.0553 ± 0.005 ms 0.0537 ± 0.0049 ms 1.03 ± 0.13
saxpy/default/Float64/1048576 1.26 ± 0.15 ms 1.41 ± 0.23 ms 0.894 ± 0.18
saxpy/default/Float64/16384 0.0633 ± 0.0062 ms 0.0645 ± 0.007 ms 0.981 ± 0.14
saxpy/default/Float64/2048 0.0548 ± 0.0036 ms 0.0545 ± 0.0057 ms 1.01 ± 0.12
saxpy/default/Float64/256 14.5 ± 5.3 μs 14.5 ± 1.9 μs 1 ± 0.39
saxpy/default/Float64/262144 0.279 ± 0.032 ms 0.279 ± 0.036 ms 1 ± 0.17
saxpy/default/Float64/32768 0.0802 ± 0.0088 ms 0.0789 ± 0.007 ms 1.02 ± 0.14
saxpy/default/Float64/4096 0.055 ± 0.0083 ms 0.0527 ± 0.0078 ms 1.04 ± 0.22
saxpy/default/Float64/512 0.0491 ± 0.039 ms 16 ± 37 μs 3.07 ± 7.6
saxpy/default/Float64/64 0.0524 ± 0.0038 ms 11.1 ± 0.31 μs 4.72 ± 0.37
saxpy/default/Float64/65536 0.107 ± 0.01 ms 0.105 ± 0.012 ms 1.02 ± 0.15
saxpy/static workgroup=(1024,)/Float16/1024 0.0555 ± 0.0051 ms 0.0526 ± 0.0039 ms 1.05 ± 0.13
saxpy/static workgroup=(1024,)/Float16/1048576 1.48 ± 0.022 ms 1.48 ± 0.023 ms 1 ± 0.021
saxpy/static workgroup=(1024,)/Float16/16384 0.0732 ± 0.0081 ms 0.07 ± 0.0073 ms 1.05 ± 0.16
saxpy/static workgroup=(1024,)/Float16/2048 0.0565 ± 0.0054 ms 0.0559 ± 0.0041 ms 1.01 ± 0.12
saxpy/static workgroup=(1024,)/Float16/256 11.8 ± 0.45 μs 12.2 ± 40 μs 0.969 ± 3.2
saxpy/static workgroup=(1024,)/Float16/262144 0.41 ± 0.018 ms 0.41 ± 0.02 ms 1 ± 0.065
saxpy/static workgroup=(1024,)/Float16/32768 0.0952 ± 0.007 ms 0.0924 ± 0.0068 ms 1.03 ± 0.11
saxpy/static workgroup=(1024,)/Float16/4096 0.0585 ± 0.0034 ms 0.0575 ± 0.0072 ms 1.02 ± 0.14
saxpy/static workgroup=(1024,)/Float16/512 0.0505 ± 0.042 ms 0.052 ± 0.042 ms 0.971 ± 1.1
saxpy/static workgroup=(1024,)/Float16/64 11.6 ± 0.25 μs 11.6 ± 38 μs 0.994 ± 3.3
saxpy/static workgroup=(1024,)/Float16/65536 0.14 ± 0.011 ms 0.14 ± 0.0072 ms 1 ± 0.092
saxpy/static workgroup=(1024,)/Float32/1024 0.0499 ± 0.04 ms 19.3 ± 40 μs 2.59 ± 5.8
saxpy/static workgroup=(1024,)/Float32/1048576 0.821 ± 0.061 ms 0.804 ± 0.064 ms 1.02 ± 0.11
saxpy/static workgroup=(1024,)/Float32/16384 0.0627 ± 0.0081 ms 0.0592 ± 0.0075 ms 1.06 ± 0.19
saxpy/static workgroup=(1024,)/Float32/2048 0.0556 ± 0.008 ms 0.0552 ± 0.0076 ms 1.01 ± 0.2
saxpy/static workgroup=(1024,)/Float32/256 11.7 ± 20 μs 11.7 ± 0.55 μs 0.998 ± 1.7
saxpy/static workgroup=(1024,)/Float32/262144 0.227 ± 0.025 ms 0.22 ± 0.024 ms 1.03 ± 0.16
saxpy/static workgroup=(1024,)/Float32/32768 0.0732 ± 0.0066 ms 0.0703 ± 0.0075 ms 1.04 ± 0.14
saxpy/static workgroup=(1024,)/Float32/4096 0.0532 ± 0.0095 ms 0.0491 ± 0.013 ms 1.08 ± 0.35
saxpy/static workgroup=(1024,)/Float32/512 0.051 ± 0.039 ms 0.051 ± 0.04 ms 1 ± 1.1
saxpy/static workgroup=(1024,)/Float32/64 11.7 ± 0.21 μs 11.7 ± 0.23 μs 1 ± 0.027
saxpy/static workgroup=(1024,)/Float32/65536 0.0953 ± 0.0084 ms 0.0936 ± 0.01 ms 1.02 ± 0.15
saxpy/static workgroup=(1024,)/Float64/1024 0.0531 ± 0.035 ms 0.0517 ± 0.036 ms 1.03 ± 0.99
saxpy/static workgroup=(1024,)/Float64/1048576 1.34 ± 0.17 ms 1.37 ± 0.18 ms 0.981 ± 0.18
saxpy/static workgroup=(1024,)/Float64/16384 0.0635 ± 0.0069 ms 0.0649 ± 0.0067 ms 0.979 ± 0.15
saxpy/static workgroup=(1024,)/Float64/2048 0.0571 ± 0.004 ms 0.0551 ± 0.0036 ms 1.04 ± 0.1
saxpy/static workgroup=(1024,)/Float64/256 0.0519 ± 0.044 ms 0.0522 ± 0.036 ms 0.994 ± 1.1
saxpy/static workgroup=(1024,)/Float64/262144 0.291 ± 0.037 ms 0.278 ± 0.039 ms 1.05 ± 0.2
saxpy/static workgroup=(1024,)/Float64/32768 0.0792 ± 0.0075 ms 0.0776 ± 0.0079 ms 1.02 ± 0.14
saxpy/static workgroup=(1024,)/Float64/4096 0.0563 ± 0.007 ms 0.0536 ± 0.0075 ms 1.05 ± 0.2
saxpy/static workgroup=(1024,)/Float64/512 20.7 ± 38 μs 22 ± 39 μs 0.938 ± 2.4
saxpy/static workgroup=(1024,)/Float64/64 12.1 ± 40 μs 11.9 ± 41 μs 1.01 ± 4.9
saxpy/static workgroup=(1024,)/Float64/65536 0.108 ± 0.011 ms 0.107 ± 0.012 ms 1.01 ± 0.16
time_to_load 0.512 ± 0.0021 s 0.55 ± 0.0054 s 0.93 ± 0.0098
main 09c3919... main / 09c3919...
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 12 allocs: 0.25 kB 12 allocs: 0.25 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 12 allocs: 0.25 kB 12 allocs: 0.25 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 12 allocs: 0.25 kB 12 allocs: 0.25 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 12 allocs: 0.25 kB 12 allocs: 0.25 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 12 allocs: 0.25 kB 12 allocs: 0.25 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 12 allocs: 0.25 kB 0.562
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 12 allocs: 0.25 kB 12 allocs: 0.25 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 12 allocs: 0.25 kB 12 allocs: 0.25 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 12 allocs: 0.25 kB 12 allocs: 0.25 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 12 allocs: 0.25 kB 12 allocs: 0.25 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 12 allocs: 0.25 kB 12 allocs: 0.25 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 77.10%. Comparing base (0977a07) to head (09c3919).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #847      +/-   ##
==========================================
- Coverage   79.75%   77.10%   -2.66%     
==========================================
  Files          25       23       -2     
  Lines        2139     2105      -34     
==========================================
- Hits         1706     1623      -83     
- Misses        433      482      +49     

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

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