Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ Each release's page on GitHub has its notes and measurements. See [the 1.0.0 rel

## Unreleased

- HIP gate-5 launch records are re-derived with ROCm 10.1's hipcc, now the one reference toolchain; record values only, no kernel or serving change (#1979). Thanks to @laudney.

- GLM on CUDA runs a prompt chunk's MTP pass on its last row past the caches, about 2.7% faster prompts at TP=2 with identical replies (#1577). Thanks to @gilby.

- Flash Next on CUDA runs the MTP head's experts on a call's last row only, the one row that reaches the draft; the head's cache is still written for every row, and replies are unchanged (#1925). Thanks to @jschmied.
Expand Down
3 changes: 2 additions & 1 deletion docs/kernel-contract.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,8 @@ On an AMD machine, run `zig build hip-kernel-contract -Dhip-arch=ARCH -Dhipcc=..
controls are built with the kernels). For the limits of every served chip, `zig build hip-kernel-contract-limits
-Dhipcc=...` compiles every kernel group and the controls for gfx1030, gfx1100, gfx1151 and gfx1201 and checks each
record against them, no GPU needed; `hip-kernel-contract-objects` installs those code objects into `zig-out/hsaco/`.
Its `RECORD` lines are the values `hip_records.zig` holds for that hipcc.
Its `RECORD` lines are the values `hip_records.zig` holds for that hipcc. The records hold ROCm 10.1's hipcc (HIP 7.16),
which ROCm 10.1 installs under `core/bin` of its root.

Every run ends with a `SUMMARY` line: kernels passing gates 1 to 4, known findings, controls red, and limit problems.
The program exits 1 on any failed gate, any control that stayed green, or any limit problem.
Expand Down
140 changes: 70 additions & 70 deletions zig/src/core/contract/hip_records.zig
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,10 @@ const own_records = [_]Record{
.{
.launch = .{ .name = "mamba tf_mamba_conv", .symbol = "tf_mamba_conv", .image = "mamba", .threads = 256 },
.usage = .{
.{ .vgprs = 27, .sgprs = 26, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 26, .sgprs = 26, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 26, .sgprs = 26, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 26, .sgprs = 26, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 27, .sgprs = 27, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 26, .sgprs = 27, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 26, .sgprs = 27, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 26, .sgprs = 30, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
},
},
.{
Expand All @@ -83,18 +83,18 @@ const own_records = [_]Record{
.{
.launch = .{ .name = "mamba tf_mamba_scan", .symbol = "tf_mamba_scan", .image = "mamba", .threads = 128 },
.usage = .{
.{ .vgprs = 127, .sgprs = 41, .lds = 20544, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 126, .sgprs = 41, .lds = 20544, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 125, .sgprs = 42, .lds = 20544, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 121, .sgprs = 42, .lds = 20544, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 127, .sgprs = 42, .lds = 20544, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 126, .sgprs = 42, .lds = 20544, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 125, .sgprs = 43, .lds = 20544, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 121, .sgprs = 43, .lds = 20544, .private = 0, .bound = 128, .wave = 32 },
},
},
.{
.launch = .{ .name = "mamba tf_mamba_gnorm", .symbol = "tf_mamba_gnorm", .image = "mamba", .threads = 128 },
.usage = .{
.{ .vgprs = 23, .sgprs = 23, .lds = 16, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 23, .sgprs = 24, .lds = 16, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 23, .sgprs = 23, .lds = 16, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 23, .sgprs = 24, .lds = 16, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 23, .sgprs = 24, .lds = 16, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 23, .sgprs = 24, .lds = 16, .private = 0, .bound = 128, .wave = 32 },
},
},
Expand Down Expand Up @@ -205,10 +205,10 @@ const own_records = [_]Record{
.threads = 256,
},
.usage = .{
.{ .vgprs = 57, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 57, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 57, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 57, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 42, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 42, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 42, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 42, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
},
},
.{
Expand All @@ -219,10 +219,10 @@ const own_records = [_]Record{
.threads = 256,
},
.usage = .{
.{ .vgprs = 57, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 57, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 57, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 57, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 42, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 42, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 42, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 42, .sgprs = 44, .lds = 8192, .private = 0, .bound = 256, .wave = 32 },
},
},
.{
Expand Down Expand Up @@ -256,19 +256,19 @@ const own_records = [_]Record{
.{
.launch = .{ .name = "add rms tf_add_rms_f16", .symbol = "tf_add_rms_f16", .image = "act", .threads = 1024 },
.usage = .{
.{ .vgprs = 43, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 45, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 45, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 44, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 50, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 51, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 51, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 51, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
},
},
.{
.launch = .{ .name = "add rms tf_add_rms_bf16", .symbol = "tf_add_rms_bf16", .image = "act", .threads = 1024 },
.usage = .{
.{ .vgprs = 44, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 45, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 45, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 44, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 51, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 51, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 51, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 51, .sgprs = 40, .lds = 32772, .private = 0, .bound = 1024, .wave = 32 },
},
},
.{
Expand All @@ -279,10 +279,10 @@ const own_records = [_]Record{
.threads = 256,
},
.usage = .{
.{ .vgprs = 32, .sgprs = 42, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 38, .sgprs = 42, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 37, .sgprs = 42, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 37, .sgprs = 44, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 32, .sgprs = 44, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 32, .sgprs = 44, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 31, .sgprs = 44, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
.{ .vgprs = 31, .sgprs = 45, .lds = 0, .private = 0, .bound = 256, .wave = 32 },
},
},
.{
Expand All @@ -293,82 +293,82 @@ const own_records = [_]Record{
.threads = 128,
},
.usage = .{
.{ .vgprs = 137, .sgprs = 50, .lds = 20544, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 136, .sgprs = 50, .lds = 20544, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 135, .sgprs = 51, .lds = 20544, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 137, .sgprs = 51, .lds = 20544, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 136, .sgprs = 51, .lds = 20544, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 135, .sgprs = 52, .lds = 20544, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 131, .sgprs = 52, .lds = 20544, .private = 0, .bound = 128, .wave = 32 },
},
},
.{
.launch = relu2Tile(1, 2),
.usage = .{
.{ .vgprs = 63, .sgprs = 53, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 65, .sgprs = 54, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 65, .sgprs = 54, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 65, .sgprs = 56, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 62, .sgprs = 53, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 63, .sgprs = 54, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 63, .sgprs = 54, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 63, .sgprs = 56, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
},
},
.{
.launch = relu2Tile(1, 4),
.usage = .{
.{ .vgprs = 101, .sgprs = 56, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 102, .sgprs = 57, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 102, .sgprs = 57, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 102, .sgprs = 59, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 100, .sgprs = 56, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 100, .sgprs = 57, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 100, .sgprs = 57, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 100, .sgprs = 59, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
},
},
.{
.launch = relu2Tile(1, 8),
.usage = .{
.{ .vgprs = 181, .sgprs = 59, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 178, .sgprs = 60, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 178, .sgprs = 60, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 178, .sgprs = 62, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 180, .sgprs = 59, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 176, .sgprs = 60, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 176, .sgprs = 60, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 176, .sgprs = 62, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
},
},
.{
.launch = relu2Tile(2, 2),
.usage = .{
.{ .vgprs = 75, .sgprs = 59, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 68, .sgprs = 60, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 68, .sgprs = 60, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 68, .sgprs = 62, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 91, .sgprs = 60, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 66, .sgprs = 61, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 66, .sgprs = 61, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 66, .sgprs = 63, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
},
},
.{
.launch = relu2Tile(2, 4),
.usage = .{
.{ .vgprs = 93, .sgprs = 61, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 102, .sgprs = 62, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 102, .sgprs = 62, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 102, .sgprs = 64, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 92, .sgprs = 62, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 100, .sgprs = 63, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 100, .sgprs = 63, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 100, .sgprs = 65, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
},
},
.{
.launch = relu2Tile(2, 8),
.usage = .{
.{ .vgprs = 157, .sgprs = 65, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 158, .sgprs = 66, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 158, .sgprs = 66, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 158, .sgprs = 68, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 156, .sgprs = 66, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 156, .sgprs = 67, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 156, .sgprs = 67, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 156, .sgprs = 69, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
},
},
.{
.launch = relu2Tile(4, 2),
.usage = .{
.{ .vgprs = 113, .sgprs = 67, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 114, .sgprs = 68, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 114, .sgprs = 68, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 114, .sgprs = 70, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 112, .sgprs = 68, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 112, .sgprs = 69, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 112, .sgprs = 69, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 112, .sgprs = 71, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
},
},
.{
.launch = relu2Tile(4, 4),
.usage = .{
.{ .vgprs = 147, .sgprs = 69, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 150, .sgprs = 70, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 150, .sgprs = 70, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 150, .sgprs = 72, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 146, .sgprs = 70, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 148, .sgprs = 71, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 148, .sgprs = 71, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
.{ .vgprs = 148, .sgprs = 73, .lds = 0, .private = 0, .bound = 128, .wave = 32 },
},
},
.{
Expand Down Expand Up @@ -473,10 +473,10 @@ const own_records = [_]Record{
.threads = 1024,
},
.usage = .{
.{ .vgprs = 38, .sgprs = 32, .lds = 50688, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 38, .sgprs = 32, .lds = 50688, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 38, .sgprs = 32, .lds = 50688, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 38, .sgprs = 32, .lds = 50688, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 37, .sgprs = 32, .lds = 50688, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 37, .sgprs = 32, .lds = 50688, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 37, .sgprs = 32, .lds = 50688, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 37, .sgprs = 32, .lds = 50688, .private = 0, .bound = 1024, .wave = 32 },
},
},
.{
Expand All @@ -488,7 +488,7 @@ const own_records = [_]Record{
},
.usage = .{
.{ .vgprs = 36, .sgprs = 32, .lds = 50688, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 37, .sgprs = 32, .lds = 50688, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 36, .sgprs = 32, .lds = 50688, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 36, .sgprs = 32, .lds = 50688, .private = 0, .bound = 1024, .wave = 32 },
.{ .vgprs = 36, .sgprs = 32, .lds = 50688, .private = 0, .bound = 1024, .wave = 32 },
},
Expand Down
Loading
Loading