Skip to content

RFC: automatic therock artifact selection - #919

Draft
simeonschaub wants to merge 28 commits into
JuliaGPU:mainfrom
simeonschaub:sds/artifacts
Draft

RFC: automatic therock artifact selection#919
simeonschaub wants to merge 28 commits into
JuliaGPU:mainfrom
simeonschaub:sds/artifacts

Conversation

@simeonschaub

Copy link
Copy Markdown
Member

This is a proof of concept for automatically downloading ROCm libraries via the artifact system. Not sure this is the best approach, maybe we should wrap these tarballs as JLLs through Yggdrasil instead?

It's currently partially vibe coded and Linux only, since I couldn't find a reliable way of querying the gfx_target_version on Windows.

@gbaraldi

Copy link
Copy Markdown
Member

Have you seen that multiarch tarballs are available. Though I think they are gigantic

@simeonschaub

Copy link
Copy Markdown
Member Author

Yes, I saw them, but like you said I don't think it's great to ship such huge tarballs to users

@simeonschaub
simeonschaub force-pushed the sds/artifacts branch 2 times, most recently from c0ceec1 to 094e810 Compare June 25, 2026 13:02
@simeonschaub

Copy link
Copy Markdown
Member Author

This is now using the clang shipped by rocm as also proposed by @vchuravy in #931 (comment). Locally I am getting miscompilations in the triangular matmul tests, which I will try to reduce and open an upstream issue.

@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: 0d12ab5 Previous: c3e9e19 Ratio
amdgpu/synchronization/context/device 552.5 ns 562.5 ns 0.98
amdgpu/synchronization/stream/blocking 237.5 ns 235 ns 1.01
amdgpu/synchronization/stream/nonblocking 312.5 ns 320 ns 0.98
array/accumulate/Float32/1d 173142.5 ns 74431.25 ns 2.33
array/accumulate/Float32/dims=1 316667.5 ns 279051.75 ns 1.13
array/accumulate/Float32/dims=1L 452844.25 ns 80943.75 ns 5.59
array/accumulate/Float32/dims=2 228906 ns 72506 ns 3.16
array/accumulate/Float32/dims=2L 15564961.25 ns 2617537.5 ns 5.95
array/accumulate/Int64/1d 178197.5 ns 78246 ns 2.28
array/accumulate/Int64/dims=1 331245 ns 243966 ns 1.36
array/accumulate/Int64/dims=1L 484725 ns 83891.25 ns 5.78
array/accumulate/Int64/dims=2 207750.75 ns 81418.75 ns 2.55
array/accumulate/Int64/dims=2L 15867657 ns 2867614.25 ns 5.53
array/broadcast 143444.5 ns 52263.25 ns 2.74
array/construct 2395.25 ns 2372.5 ns 1.01
array/copy 32078 ns 36485.5 ns 0.88
array/copyto!/cpu_to_gpu 111386.75 ns 86611 ns 1.29
array/copyto!/gpu_to_cpu 111921.75 ns 112164.25 ns 1.00
array/copyto!/gpu_to_gpu 38973 ns 35980.5 ns 1.08
array/iteration/findall/bool 254501.5 ns 141492 ns 1.80
array/iteration/findall/int 265581.75 ns 158094.75 ns 1.68
array/iteration/findfirst/bool 481505 ns 127356.75 ns 3.78
array/iteration/findfirst/int 491822.75 ns 127839.25 ns 3.85
array/iteration/findmin/1d 811835 ns 113976.75 ns 7.12
array/iteration/findmin/2d 850786 ns 107709 ns 7.90
array/iteration/logical 550746.25 ns 260086.25 ns 2.12
array/iteration/scalar 277744.5 ns 295631.5 ns 0.94
array/permutedims/2d 117421.75 ns 71536 ns 1.64
array/permutedims/3d 131454.5 ns 71118.5 ns 1.85
array/permutedims/4d 154204.75 ns 74313.5 ns 2.08
array/random/rand/Float32 44510.5 ns 45328 ns 0.98
array/random/rand/Int64 114436.75 ns 55040.75 ns 2.08
array/random/rand!/Float32 64981 ns 65493.5 ns 0.99
array/random/rand!/Int64 154014.75 ns 53880.75 ns 2.86
array/random/randn/Float32 83673.75 ns 76038.5 ns 1.10
array/random/randn!/Float32 76958.75 ns 60518.5 ns 1.27
array/reductions/mapreduce/Float32/1d 340852.75 ns 96758.75 ns 3.52
array/reductions/mapreduce/Float32/dims=1 405808.75 ns 85553.75 ns 4.74
array/reductions/mapreduce/Float32/dims=1L 36221579 ns 781805.75 ns 46.33
array/reductions/mapreduce/Float32/dims=2 411476.25 ns 84621.25 ns 4.86
array/reductions/mapreduce/Float32/dims=2L 1872676.25 ns 144722 ns 12.94
array/reductions/mapreduce/Int64/1d 355515.25 ns 94921.25 ns 3.75
array/reductions/mapreduce/Int64/dims=1 401326.25 ns 84463.75 ns 4.75
array/reductions/mapreduce/Int64/dims=1L 39148376.25 ns 791916 ns 49.44
array/reductions/mapreduce/Int64/dims=2 406641.25 ns 83748.75 ns 4.86
array/reductions/mapreduce/Int64/dims=2L 1860943.75 ns 141764.5 ns 13.13
array/reductions/reduce/Float32/1d 342337.75 ns 96491.5 ns 3.55
array/reductions/reduce/Float32/dims=1 403396.25 ns 85201.25 ns 4.73
array/reductions/reduce/Float32/dims=1L 37828141 ns 782083.25 ns 48.37
array/reductions/reduce/Float32/dims=2 410719 ns 84891 ns 4.84
array/reductions/reduce/Float32/dims=2L 1871578.75 ns 142992 ns 13.09
array/reductions/reduce/Int64/1d 354010.5 ns 88566.25 ns 4.00
array/reductions/reduce/Int64/dims=1 397306 ns 84548.5 ns 4.70
array/reductions/reduce/Int64/dims=1L 36559043.75 ns 788023.5 ns 46.39
array/reductions/reduce/Int64/dims=2 408866.5 ns 83401.25 ns 4.90
array/reductions/reduce/Int64/dims=2L 1868976.5 ns 143302 ns 13.04
array/reverse/1d 101664.25 ns 43483.25 ns 2.34
array/reverse/1dL 449649.75 ns 73061 ns 6.15
array/reverse/1dL_inplace 337150.25 ns 78998.5 ns 4.27
array/reverse/1d_inplace 132677 ns 59848.25 ns 2.22
array/reverse/2d 125659.5 ns 49138.25 ns 2.56
array/reverse/2dL 610169.75 ns 79461.25 ns 7.68
array/reverse/2dL_inplace 487237.75 ns 91798.75 ns 5.31
array/reverse/2d_inplace 132472 ns 62230.75 ns 2.13
array/sorting/1d 13472808.25 ns 340847.5 ns 39.53
integration/byval/reference 112422 ns 39480 ns 2.85
integration/byval/slices=1 112432 ns 40561 ns 2.77
integration/byval/slices=2 223974 ns 121111 ns 1.85
integration/byval/slices=3 1274849 ns 234933 ns 5.43
integration/volumerhs 5056826 ns 5042886 ns 1.00
kernel/indexing 67913.5 ns 57603.25 ns 1.18
kernel/indexing_checked 111301.75 ns 59520.75 ns 1.87
kernel/launch 1502.5 ns 1570 ns 0.96
kernel/rand 134472.25 ns 80076.25 ns 1.68
latency/import 1771562179 ns 1763912896 ns 1.00
latency/precompile 37845526629 ns 37604981379 ns 1.01
latency/ttfp 2373223982 ns 5783496043 ns 0.41

This comment was automatically generated by workflow using github-action-benchmark.

@gbaraldi

Copy link
Copy Markdown
Member

Only thing is I wonder if you can split therock from using clang just to reduce the diff

@simeonschaub

Copy link
Copy Markdown
Member Author

Yes, I agree that makes sense. We'll have to figure out how this should interact with JuliaGPU/GPUCompiler.jl#857 as well, since with those changes we'd have 3 possible backends - in tree, AMDGPU_LLVM_Backend_jll, and clang from the rocm path. What I like about the latter approach is that the compiler, ld.lld, device libs, and the other vendor libs always match and we don't have to worry about keeping all those different jlls up to date and in sync.

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