Skip to content

use AMDGPU_LLVM_Backend_jll instead of in-tree backend - #1005

Merged
vchuravy merged 4 commits into
JuliaGPU:mainfrom
simeonschaub:sds/jll
Aug 1, 2026
Merged

use AMDGPU_LLVM_Backend_jll instead of in-tree backend#1005
vchuravy merged 4 commits into
JuliaGPU:mainfrom
simeonschaub:sds/jll

Conversation

@simeonschaub

Copy link
Copy Markdown
Member

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

@vchuravy

Copy link
Copy Markdown
Member

Oh did I never finish that part :)

@luraess

luraess commented Jul 29, 2026

Copy link
Copy Markdown
Member

Interestingly, we have documentation and benchmark CI jobs that are failing, while others pass (with exception of this failing for known reason)

@simeonschaub

Copy link
Copy Markdown
Member Author

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?

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@vchuravy

Copy link
Copy Markdown
Member

Or have LLD be coming from AMDGPU_LLVM_Backend_jll

@simeonschaub
simeonschaub marked this pull request as ready for review July 31, 2026 09:20
@vchuravy
vchuravy merged commit a364664 into JuliaGPU:main Aug 1, 2026
4 checks passed
@luraess

luraess commented Aug 1, 2026

Copy link
Copy Markdown
Member

Thanks!

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.

Int128 regression in Julia 1.12

3 participants