use AMDGPU_LLVM_Backend_jll instead of in-tree backend - #1005
Conversation
|
Oh did I never finish that part :) |
|
Interestingly, we have documentation and benchmark CI jobs that are failing, while others pass (with exception of this failing for known reason) |
|
Ah, I think I see what's happening: LLD_jll is a Julia stdlib, so we're forced to use the version Julia ships with. That version is too old to handle the code produced by AMDGPU_LLVM_Backend_jll, which is based on LLVM 22, though. I (hopefully) fixed the precompile issues by just skipping creating the executable altogether, but this means we are now relying on the lld shipped by ROCm and we can't fall back to LLD_jll anymore. Maybe that's ok though and we should just remove the artifact fallback path for lld? |
There was a problem hiding this comment.
AMDGPU.jl Benchmarks
Details
| Benchmark suite | Current: 131d6cd | Previous: 724d15f | Ratio |
|---|---|---|---|
amdgpu/synchronization/context/device |
592.5 ns |
577.5 ns |
1.03 |
amdgpu/synchronization/stream/blocking |
242.5 ns |
237.5 ns |
1.02 |
amdgpu/synchronization/stream/nonblocking |
337.5 ns |
322.5 ns |
1.05 |
array/accumulate/Float32/1d |
73401 ns |
72383.75 ns |
1.01 |
array/accumulate/Float32/dims=1 |
269466.25 ns |
278954.25 ns |
0.97 |
array/accumulate/Float32/dims=1L |
81178.75 ns |
80043.75 ns |
1.01 |
array/accumulate/Float32/dims=2 |
72686 ns |
71466 ns |
1.02 |
array/accumulate/Float32/dims=2L |
2758000.5 ns |
2620236.25 ns |
1.05 |
array/accumulate/Int64/1d |
77081.25 ns |
76381 ns |
1.01 |
array/accumulate/Int64/dims=1 |
243728.5 ns |
243786 ns |
1.00 |
array/accumulate/Int64/dims=1L |
84011.25 ns |
84088.75 ns |
1.00 |
array/accumulate/Int64/dims=2 |
83861.25 ns |
83453.75 ns |
1.00 |
array/accumulate/Int64/dims=2L |
2893604.75 ns |
2864940.25 ns |
1.01 |
array/broadcast |
74278.5 ns |
68581 ns |
1.08 |
array/construct |
2347.5 ns |
2195 ns |
1.07 |
array/copy |
37568.25 ns |
37048 ns |
1.01 |
array/copyto!/cpu_to_gpu |
91788.75 ns |
104081.5 ns |
0.88 |
array/copyto!/gpu_to_cpu |
104156.25 ns |
104479 ns |
1.00 |
array/copyto!/gpu_to_gpu |
59395.75 ns |
37960.5 ns |
1.56 |
array/iteration/findall/bool |
137027 ns |
134574.5 ns |
1.02 |
array/iteration/findall/int |
152282.25 ns |
148672.25 ns |
1.02 |
array/iteration/findfirst/bool |
147847.25 ns |
123486.75 ns |
1.20 |
array/iteration/findfirst/int |
144967 ns |
124531.75 ns |
1.16 |
array/iteration/findmin/1d |
111424 ns |
110069 ns |
1.01 |
array/iteration/findmin/2d |
108049 ns |
96364 ns |
1.12 |
array/iteration/logical |
249688.75 ns |
245316.25 ns |
1.02 |
array/iteration/scalar |
308662 ns |
296437 ns |
1.04 |
array/permutedims/2d |
72766 ns |
71361 ns |
1.02 |
array/permutedims/3d |
72088.5 ns |
70816 ns |
1.02 |
array/permutedims/4d |
75013.5 ns |
73823.5 ns |
1.02 |
array/random/rand/Float32 |
45880.75 ns |
45335.75 ns |
1.01 |
array/random/rand/Int64 |
55385.75 ns |
54068.25 ns |
1.02 |
array/random/rand!/Float32 |
56638.25 ns |
47823 ns |
1.18 |
array/random/rand!/Int64 |
72736 ns |
66071 ns |
1.10 |
array/random/randn/Float32 |
76931 ns |
77073.75 ns |
1.00 |
array/random/randn!/Float32 |
81738.5 ns |
81381 ns |
1.00 |
array/reductions/mapreduce/Float32/1d |
88676 ns |
94514 ns |
0.94 |
array/reductions/mapreduce/Float32/dims=1 |
82503.5 ns |
84653.75 ns |
0.97 |
array/reductions/mapreduce/Float32/dims=1L |
833466.25 ns |
776879 ns |
1.07 |
array/reductions/mapreduce/Float32/dims=2 |
80638.75 ns |
83853.75 ns |
0.96 |
array/reductions/mapreduce/Float32/dims=2L |
145414.5 ns |
143094.75 ns |
1.02 |
array/reductions/mapreduce/Int64/1d |
88693.75 ns |
94963.75 ns |
0.93 |
array/reductions/mapreduce/Int64/dims=1 |
83961.25 ns |
84003.75 ns |
1.00 |
array/reductions/mapreduce/Int64/dims=1L |
831863.75 ns |
789344.25 ns |
1.05 |
array/reductions/mapreduce/Int64/dims=2 |
84501 ns |
83641.25 ns |
1.01 |
array/reductions/mapreduce/Int64/dims=2L |
143724.5 ns |
144282.25 ns |
1.00 |
array/reductions/reduce/Float32/1d |
88423.75 ns |
92824 ns |
0.95 |
array/reductions/reduce/Float32/dims=1 |
83018.5 ns |
84624 ns |
0.98 |
array/reductions/reduce/Float32/dims=1L |
838582 ns |
782216.75 ns |
1.07 |
array/reductions/reduce/Float32/dims=2 |
85068.75 ns |
84249 ns |
1.01 |
array/reductions/reduce/Float32/dims=2L |
145022.25 ns |
143379.75 ns |
1.01 |
array/reductions/reduce/Int64/1d |
95243.75 ns |
87928.75 ns |
1.08 |
array/reductions/reduce/Int64/dims=1 |
83736 ns |
84403.75 ns |
0.99 |
array/reductions/reduce/Int64/dims=1L |
834269.5 ns |
789071.75 ns |
1.06 |
array/reductions/reduce/Int64/dims=2 |
84751.25 ns |
83748.75 ns |
1.01 |
array/reductions/reduce/Int64/dims=2L |
145784.75 ns |
142694.5 ns |
1.02 |
array/reverse/1d |
45005.5 ns |
43903.25 ns |
1.03 |
array/reverse/1dL |
70013.5 ns |
71013.5 ns |
0.99 |
array/reverse/1dL_inplace |
80188.75 ns |
79038.5 ns |
1.01 |
array/reverse/1d_inplace |
40200.5 ns |
59903.25 ns |
0.67 |
array/reverse/2d |
49770.75 ns |
49135.75 ns |
1.01 |
array/reverse/2dL |
81181.25 ns |
79608.5 ns |
1.02 |
array/reverse/2dL_inplace |
91601.5 ns |
91884 ns |
1.00 |
array/reverse/2d_inplace |
63113.25 ns |
55113.25 ns |
1.15 |
array/sorting/1d |
336832.25 ns |
338222.5 ns |
1.00 |
integration/byval/reference |
39661 ns |
39280 ns |
1.01 |
integration/byval/slices=1 |
40550 ns |
40360 ns |
1.00 |
integration/byval/slices=2 |
158302 ns |
150632 ns |
1.05 |
integration/byval/slices=3 |
237524 ns |
236914 ns |
1.00 |
integration/volumerhs |
5003920 ns |
5050775 ns |
0.99 |
kernel/indexing |
58080.75 ns |
57423.5 ns |
1.01 |
kernel/indexing_checked |
49203.25 ns |
47713.25 ns |
1.03 |
kernel/launch |
1670 ns |
1567.5 ns |
1.07 |
kernel/rand |
99656.5 ns |
98961.5 ns |
1.01 |
latency/import |
1720972876 ns |
1712872529 ns |
1.00 |
latency/precompile |
37716303741 ns |
37407776408 ns |
1.01 |
latency/ttfp |
5784812270 ns |
5749419423 ns |
1.01 |
This comment was automatically generated by workflow using github-action-benchmark.
|
Or have LLD be coming from AMDGPU_LLVM_Backend_jll |
|
Thanks! |
We might eventually want to switch to using the clang shipped by ROCm, so that the compiler, ld.lld, device libs, and the other vendor libs always stay in sync with upstream, but let's try the jll approach for now.
fixes #1002
cc @vchuravy since you worked on JuliaGPU/GPUCompiler.jl#857