Skip to content

Mettle v0.15.1

Choose a tag to compare

@suidvandiewereld suidvandiewereld released this 31 Jul 15:58
· 708 commits to main since this release

One improvement to --report-occupancy, filed as feature request 9 by the
same inference engine after using the report in anger.

The occupancy report now shows whether a launch can fill the card

The per-SM residency ceiling says nothing about whether a kernel has enough
work to reach it. A 16-block launch on a 36-SM card is work-limited at any
residency, but the report read "50%, register-limited" and invited a tuning
detour that changed nothing.

When the SM count is known, the header now names it and every kernel line
carries the whole-card fill threshold, so the reader can put their grid size
next to it and see at a glance whether the ceiling is reachable:

Occupancy report (sm_121a; ... allocation unit 1; 36 SMs, local GPU):
  attention: 50 registers, block 32 (1 warps/block, 24 blocks)
    -> 24/48 resident warps (50%), register-limited; full card = 864 blocks (36 SMs x 24)

Sixteen attention heads against a 864-block threshold is the work-limited
verdict in one line.

The SM count comes from --sms=N, or from the local driver when the flag is
absent. The driver is loaded dynamically, so the compiler keeps no CUDA link
dependency; on a machine where neither answers, the report prints exactly
what it printed before. The grid itself is a runtime value the compiler
never sees, which is why the report gives the threshold rather than a
launched-work percentage.

The backend half is libmtlc eefb5e6, named in libmtlc.version as always.
Both test suites pass in full (761 of 761, 759 of 759).

Full Changelog: v0.15.0...v0.15.1