22inline constexpr std::array<std::string_view, 2>
last_resort{
"vendor",
"blocked"};
25inline constexpr std::array<std::string_view, 2>
key_names{
"m:log",
"n:log:2"};
28inline constexpr std::array<int, 17>
grid{1, 2, 4, 8, 16, 32, 64, 128, 256, 384, 512, 513, 768, 1024, 2048, 4096,
constexpr auto all_of()
Every alternative of a field-less choice variant, in declaration (= tie-break) order.
constexpr std::array< std::string_view, 2 > last_resort
§5.5: vendor is the general one
constexpr std::array< std::string_view, 2 > key_names
work ~ m n^2; no batch key
std::variant< Blocked, Vendor > OrgqrChoice
fieldless: orgqr_nb is derived from type and min(m, n)
constexpr select::OpSpec spec
op, library, rules
constexpr std::array< int, 17 > grid
Both sides of the transcribed 512 ceiling, a coarse log grid elsewhere, n <= m (transcriber: tuned/RE...
constexpr auto candidates()
Every compiled choice, in tie-break order (§6.3).
Flat kernel selection: one choose() per op over measured per-device tables.
orgqr_blocked_dispatch: identity + the public ormqr; GPU, n <= m
backend::orgqr_vendor; any shape (n > m, CPU, heterogeneous)
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...