RFC: automatic therock artifact selection - #919
Conversation
a78f1f9 to
963eb4c
Compare
|
Have you seen that multiarch tarballs are available. Though I think they are gigantic |
|
Yes, I saw them, but like you said I don't think it's great to ship such huge tarballs to users |
c0ceec1 to
094e810
Compare
|
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. |
There was a problem hiding this comment.
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.
Borrows some of the error handling logic from JuliaGPU/GPUCompiler.jl#857
9ea5a7c to
2212d6f
Compare
|
Only thing is I wonder if you can split therock from using clang just to reduce the diff |
|
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. |
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.