24inline constexpr std::array<std::string_view, 6>
key_names{
25 "side:exact",
"trans:exact",
"m:log",
"k:log",
"q:log",
"batch:log"};
28inline constexpr std::array<int, 4>
grid_m{1, 8, 64, 512};
29inline constexpr std::array<int, 3>
grid_q{1, 32, 1024};
30inline constexpr std::array<int, 3>
grid_batch{128, 2048, 32768};
constexpr auto all_of()
Every alternative of a field-less choice variant, in declaration (= tie-break) order.
constexpr std::array< int, 4 > grid_m
The transcription grid; the transcriber (tuned/README.md) spells the same one (k <= m).
constexpr std::array< int, 3 > grid_batch
constexpr select::OpSpec spec
last resort (§5.5): blocked, vendor
std::variant< Blocked, Vendor > OrmqrChoice
fieldless: WY width and gemm/trmm spelling are derived
constexpr std::array< int, 3 > grid_q
constexpr auto candidates()
Every compiled choice, in tie-break order (§6.3).
constexpr std::array< std::string_view, 6 > key_names
m: Q's order, k: reflectors, q: C's other extent
Flat kernel selection: one choose() per op over measured per-device tables.
ormqr_blocked (larft + level-3 WY updates); GPU, no complex Trans
backend::ormqr_vendor; no complex Trans either
Base of a family with no knobs: struct Cta : NoFields<"cta"> {};.
What an op's choice.hh declares once: its name, the library its Vendor family calls (one gate for can...