Skip to content

Add register-tiled GEMM and 3D diffusion stencil benchmarks - #1061

Merged
luraess merged 1 commit into
JuliaGPU:mainfrom
gbaraldi:perf-real-kernels
Sep 1, 2026
Merged

Add register-tiled GEMM and 3D diffusion stencil benchmarks#1061
luraess merged 1 commit into
JuliaGPU:mainfrom
gbaraldi:perf-real-kernels

Conversation

@gbaraldi

Copy link
Copy Markdown
Member

Adds two real-workload benchmarks distilled from an ISA-level analysis of Oceananigans/ParallelStencil/Trixi kernels on MI300A, chosen because each pins a codegen behavior the existing suite doesn't cover:

Kernel correctness and timings were validated on MI300A (gfx942, ROCm 7.2.4).

🤖 Generated with Claude Code

https://claude.ai/code/session_01FJL9JQhcpXUVWkhuuiA7ad

…ions

All come from real-workload codegen analysis:
- gemm/tiled vs tiled_unbounded: register-bound, tracks launch-bounds support
- stencil/diffusion3d vs _checked: short and bandwidth-bound, sensitive to
  per-wave dimension-read costs and bounds-check control flow
- applications/: rocm-examples Applications ports (histogram with LDS byte
  counters, multi-launch prefix-sum sweep, 5x5 convolution with a kernarg
  mask, bitonic sort and floyd-warshall as launch-overhead sentinels)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@gbaraldi

Copy link
Copy Markdown
Member Author

Added the rocm-examples Applications ports as applications/: histogram (LDS byte counters), prefix_sum (multi-launch scan sweep), convolution (kernarg mask), bitonic_sort (210 launches) and floyd_warshall (1024 dependent launches — the sharpest launch-overhead sentinel). Full suite smoke-tested on MI300A: gemm 1.00/1.57 ms (bounded/unbounded), stencil 0.44/0.49 ms, histogram 1.00 ms, convolution 0.054 ms, prefix_sum 0.155 ms, bitonic 3.7 ms, floyd 14.7 ms.

@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: 047b3a5 Previous: 7cf1826 Ratio
amdgpu/synchronization/context/device 560 ns 535 ns 1.05
amdgpu/synchronization/stream/blocking 235 ns 230 ns 1.02
amdgpu/synchronization/stream/nonblocking 317.5 ns 307.5 ns 1.03
applications/bitonic_sort 1651043.75 ns
applications/convolution 107264 ns
applications/floyd_warshall 11770948.75 ns
applications/histogram 791381.25 ns
applications/prefix_sum 251868.75 ns
array/accumulate/Float32/1d 76623.5 ns 77873.75 ns 0.98
array/accumulate/Float32/dims=1 248063.5 ns 272711.5 ns 0.91
array/accumulate/Float32/dims=1L 80976.25 ns 91106.5 ns 0.89
array/accumulate/Float32/dims=2 71406 ns 87163.75 ns 0.82
array/accumulate/Float32/dims=2L 2762639.75 ns 2756483.25 ns 1.00
array/accumulate/Int64/1d 77811.25 ns 81851.25 ns 0.95
array/accumulate/Int64/dims=1 242673.5 ns 245181.25 ns 0.99
array/accumulate/Int64/dims=1L 83988.75 ns 83678.75 ns 1.00
array/accumulate/Int64/dims=2 85726 ns 90186.5 ns 0.95
array/accumulate/Int64/dims=2L 2897179.25 ns 2898395.25 ns 1.00
array/broadcast 73043.75 ns 73666.25 ns 0.99
array/construct 2235 ns 2057.5 ns 1.09
array/copy 33183 ns 37383 ns 0.89
array/copyto!/cpu_to_gpu 111814 ns 111264 ns 1.00
array/copyto!/gpu_to_cpu 111966.75 ns 111711.75 ns 1.00
array/copyto!/gpu_to_gpu 53695.75 ns 59595.75 ns 0.90
array/iteration/findall/bool 135384.25 ns 139419.75 ns 0.97
array/iteration/findall/int 137344.5 ns 149934.75 ns 0.92
array/iteration/findfirst/bool 184492.5 ns 146172.25 ns 1.26
array/iteration/findfirst/int 162022.5 ns 145079.75 ns 1.12
array/iteration/findmin/1d 118321.5 ns 123587 ns 0.96
array/iteration/findmin/2d 108454.25 ns 113761.75 ns 0.95
array/iteration/logical 245131 ns 237901.25 ns 1.03
array/iteration/scalar 287591.75 ns 298014.5 ns 0.97
array/permutedims/2d 71481 ns 71631 ns 1.00
array/permutedims/3d 70581 ns 70726 ns 1.00
array/permutedims/4d 60888.5 ns 73603.75 ns 0.83
array/random/rand/Float32 45635.75 ns 45208 ns 1.01
array/random/rand/Int64 54348.25 ns 54288.25 ns 1.00
array/random/rand!/Float32 64160.75 ns 65161 ns 0.98
array/random/rand!/Int64 71556 ns 66998.5 ns 1.07
array/random/randn/Float32 79106 ns 79741.25 ns 0.99
array/random/randn!/Float32 80946.25 ns 81228.75 ns 1.00
array/reductions/mapreduce/Float32/1d 97088.75 ns 87228.75 ns 1.11
array/reductions/mapreduce/Float32/dims=1 83813.75 ns 75168.75 ns 1.12
array/reductions/mapreduce/Float32/dims=1L 834459.5 ns 831937.25 ns 1.00
array/reductions/mapreduce/Float32/dims=2 83818.75 ns 88813.75 ns 0.94
array/reductions/mapreduce/Float32/dims=2L 144232 ns 142234.5 ns 1.01
array/reductions/mapreduce/Int64/1d 96833.75 ns 101484 ns 0.95
array/reductions/mapreduce/Int64/dims=1 83708.5 ns 91746.5 ns 0.91
array/reductions/mapreduce/Int64/dims=1L 832542 ns 832082.5 ns 1.00
array/reductions/mapreduce/Int64/dims=2 83903.75 ns 90866.25 ns 0.92
array/reductions/mapreduce/Int64/dims=2L 144754.5 ns 217318.25 ns 0.67
array/reductions/reduce/Float32/1d 96846.25 ns 101954 ns 0.95
array/reductions/reduce/Float32/dims=1 84021.25 ns 75456.25 ns 1.11
array/reductions/reduce/Float32/dims=1L 832932 ns 829999.75 ns 1.00
array/reductions/reduce/Float32/dims=2 84116.25 ns 89351.25 ns 0.94
array/reductions/reduce/Float32/dims=2L 143159.75 ns 143432 ns 1.00
array/reductions/reduce/Int64/1d 89141.25 ns 101771.5 ns 0.88
array/reductions/reduce/Int64/dims=1 93796.25 ns 91171.25 ns 1.03
array/reductions/reduce/Int64/dims=1L 829429.5 ns 835642.5 ns 0.99
array/reductions/reduce/Int64/dims=2 83151.25 ns 92804 ns 0.90
array/reductions/reduce/Int64/dims=2L 144569.75 ns 144482.25 ns 1.00
array/reverse/1d 44985.75 ns 45710.5 ns 0.98
array/reverse/1dL 73921 ns 72093.5 ns 1.03
array/reverse/1dL_inplace 65543.5 ns 80361.25 ns 0.82
array/reverse/1d_inplace 37133 ns 61453.5 ns 0.60
array/reverse/2d 49930.75 ns 43585.75 ns 1.15
array/reverse/2dL 83538.75 ns 87671.25 ns 0.95
array/reverse/2dL_inplace 91774 ns 92566.5 ns 0.99
array/reverse/2d_inplace 57886 ns 63991 ns 0.90
array/sorting/1d 334265 ns 333142.5 ns 1.00
gemm/tiled 1870684.5 ns
gemm/tiled_unbounded 1868396.75 ns
integration/byval/reference 38761 ns 38921 ns 1.00
integration/byval/slices=1 39160 ns 41091 ns 0.95
integration/byval/slices=2 116571 ns 159003 ns 0.73
integration/byval/slices=3 233593 ns 231453 ns 1.01
integration/volumerhs 4887940 ns 4910793 ns 1.00
kernel/indexing 57155.75 ns 57765.75 ns 0.99
kernel/indexing_checked 39290.5 ns 51668.25 ns 0.76
kernel/launch 1425 ns 1402.5 ns 1.02
kernel/rand 80776 ns 70716 ns 1.14
latency/import 1720025947 ns 1713216916 ns 1.00
latency/precompile 39753959217 ns 39864575175 ns 1.00
latency/ttfp 2325086865 ns 2323506210 ns 1.00
stencil/diffusion3d 1627126.25 ns
stencil/diffusion3d_checked 1658231.75 ns

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

@luraess
luraess merged commit 8a165c3 into JuliaGPU:main Sep 1, 2026
4 checks passed
@luraess

luraess commented Sep 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.

2 participants