Generated by docs/tools/gen_db_pages.py on every docs build. Do not edit.
Every op routes through flat kernel selection: src/ops/<op>/choice.hh declares the kernel families the op can run (and the knobs each one takes), the table keys a call is matched on, and the tuner's grid; tuned/<op>.<device>.txt ranks the families per measured shape and select::choose takes the first runnable entry of the nearest row. The design is Flat kernel selection; the measurements behind each op's families are on its evidence page.
Each table is generated from its ledger (Tuning data layout). Rows counts the rows per ledger tier: deep, coarse, preview, custom (timed by tools/tune), converted (timed forced-route sweeps on old kernels) or transcribed (the pre-selection router's preference order, untimed). Ranked first counts the rows whose first-ranked family is each family, with the n range those rows cover where the table has an n key.
19 ops, 39 tables.
Source: src/ops/gemm/choice.hh · evidence: GEMM.
| Family | Knobs | Kernel |
|---|---|---|
| direct | — | /< gemm_direct: one work-item per element, any form; max_wg >= 64 |
| tiled | — | /< gemm_tiled: 16x16 shared-memory tile, any form; max_wg >= 256 |
| small | — | /< gemm_small: several matrices per work-group; real, see small_fits |
| reg | m, n, k, u | — |
| wide | m, n, k | — |
| vendor | — | /< backend::gemm_vendor; needs the level-3 library |
Table keys: ta:exact, tb:exact, layout:exact, m:log, n:log, k:log, batch:log. Spec: OpSpec{Op::gemm, select::Lib::level3, {last_resort}} — /< op, vendor library, rules Tuner grid_square: 8, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024. Tuner grid_panel_mn: 32, 64, 128, 256, 512, 1024, 2048. Tuner grid_panel_k: 8, 16, 32, 64, 96, 128. Tuner grid_skinny_mn: 64, 128, 256, 512, 1024, 2048. Tuner grid_skinny_k: 256, 1024. Tuner grid_batch: 128, 2048, 32768. Tuner grid_real_forms: "NN", "NT", "TN", "TT". Tuner grid_real_panel_forms: "NN", "NT", "TN". Tuner grid_complex_forms: "NN", "NT", "TN", "NC", "CN", "CT". Tuner grid_complex_panel_forms: "NN", "NT", "NC", "TN", "CN".
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | deep 7704, transcribed 4149 | 2026-10-11 | vendor 9104 (n 1..2048), wide:m=64:n=64:k=16 1101 (n 32..2048), tiled 520 (n 8..470), reg:m=128:n=128:k=8:u=1 442 (n 70..2048), direct 351 (n 8..362), small 124 (n 1..64), wide:m=32:n=128:k=16 70 (n 70..2048), wide:m=32:n=32:k=16 55 (n 32..2048), wide:m=16:n=16:k=16 51 (n 16..470), wide:m=128:n=32:k=16 34 (n 32..1024), reg:m=32:n=32:k=8:u=1 1 (n 181..181) |
| double | sm_120 | deep 6642, transcribed 6396 | 2026-10-11 | tiled 5896 (n 16..2048), vendor 4081 (n 8..2048), wide:m=64:n=64:k=16 1433 (n 49..2048), direct 1077 (n 8..2048), wide:m=16:n=16:k=16 211 (n 32..2048), wide:m=32:n=32:k=16 172 (n 32..2048), wide:m=128:n=32:k=16 99 (n 32..1117), wide:m=32:n=128:k=16 67 (n 108..2048), small 2 (n 32..32) |
| cfloat | sm_120 | deep 10950, transcribed 1708 | 2026-10-11 | vendor 9041 (n 24..2048), wide:m=64:n=64:k=16 1942 (n 32..2048), tiled 491 (n 8..790), direct 446 (n 8..362), wide:m=32:n=32:k=16 220 (n 24..2048), wide:m=32:n=128:k=16 195 (n 45..2048), wide:m=128:n=32:k=16 170 (n 32..2048), wide:m=16:n=16:k=16 153 (n 16..181) |
| cdouble | sm_120 | deep 6929, transcribed 2480 | 2026-10-11 | vendor 4652 (n 16..2048), wide:m=64:n=64:k=16 2097 (n 35..2048), wide:m=16:n=16:k=16 1431 (n 16..2048), wide:m=32:n=32:k=16 938 (n 24..2048), direct 86 (n 8..939), wide:m=128:n=32:k=16 80 (n 32..211), wide:m=32:n=128:k=16 74 (n 99..2048), tiled 51 (n 32..235) |
| float | sm_89 | transcribed 11226 | 2026-10-05 | vendor 11154 (n 1..2048), small 72 (n 1..48) |
| double | sm_89 | transcribed 12672 | 2026-10-05 | tiled 6956 (n 32..2048), vendor 5440 (n 8..2048), direct 256 (n 8..32), wide:m=64:n=64:k=16 20 (n 256..1024) |
| cfloat | sm_89 | transcribed 7464 | 2026-10-05 | vendor 7464 (n 8..2048) |
| cdouble | sm_89 | transcribed 7464 | 2026-10-05 | vendor 7464 (n 8..2048) |
Source: src/ops/gemv/choice.hh · evidence: GEMV.
| Family | Knobs | Kernel |
|---|---|---|
| cta | — | /< sycl_gemv::gemv_native_cta, sub-group per output; Trans/ConjTrans |
| direct | — | /< sycl_gemv::gemv_native_direct, item per output; every device |
| vendor | — | /< backend::gemv_vendor; any shape, needs the library |
Table keys: trans:exact, out:log, red:log, batch:log. Spec: OpSpec{Op::gemv, select::Lib::level3, {last_resort}} — /< op, vendor library, rules Tuner grid_out: 1, 8, 64, 255, 256, 1024, 4096, 32768. Tuner grid_red: 1, 8, 32, 63, 64, 128, 352, 353, 1024, 4096, 32768. Tuner grid_batch: 1, 16, 128, 319, 320, 1024, 8192, 32768.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | deep 2454, transcribed 138, custom 11 | 2026-10-11 | direct 1171, vendor 729, cta 703 |
| double | sm_120 | deep 2376, transcribed 118, custom 5 | 2026-10-11 | direct 1142, vendor 822, cta 535 |
| cfloat | sm_120 | deep 2376, transcribed 154, custom 7 | 2026-10-11 | direct 1026, vendor 892, cta 619 |
| cdouble | sm_120 | deep 1352, transcribed 210, custom 6 | 2026-10-11 | direct 833, cta 547, vendor 188 |
| float | sm_89 | transcribed 1408 | 2026-10-05 | vendor 1408 |
| double | sm_89 | transcribed 1408 | 2026-10-05 | vendor 1408 |
| cfloat | sm_89 | transcribed 1408 | 2026-10-05 | vendor 1408 |
| cdouble | sm_89 | transcribed 1408 | 2026-10-05 | vendor 1360, cta 48 |
Source: src/ops/geqrf/choice.hh · evidence: QR: geqrf, orgqr and ormqr.
| Family | Knobs | Kernel |
|---|---|---|
| tiny | — | /< geqrf_tiny_dispatch: square, registers, n <= the tiny ceiling |
| cta | — | /< geqrf_cta_dispatch: the whole panel in SLM (geqrf_cta_fits) |
| blocked | — | /< geqrf_blocked_dispatch + the public gemm, any m >= n |
| vendor | — | /< backend::geqrf_vendor; needs the factorization library |
Table keys: form:exact, n:log:3, aspect:log. Spec: OpSpec{Op::geqrf, select::Lib::factorization} — /< last resort (§5.5): blocked, vendor Tuner grid_n: 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 16, 17, 20, 21, 22, 23, 24, 28, 31, 32, 33, 40, 47, 48, 49, 56, 63, 64, 75, 76, 80, 96, 97, 112, 128, 160, 192, 224, 255, 256, 288, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 8192. Tuner grid_aspect: 1, 2, 3, 4, 5, 7, 8, 12, 16, 64, 256. Tuner grid_wide_n: 2, 64, 1024, 8192. Tuner grid_wide_aspect: 1, 4, 64.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | deep 673, transcribed 11 | 2026-10-11 | blocked 339 (n 8..8192), cta 179 (n 1..104), vendor 144 (n 2..8192), tiny 22 (n 1..32) |
| double | sm_120 | deep 491, transcribed 132 | 2026-10-11 | vendor 319 (n 1..8192), blocked 297 (n 15..8192), cta 6 (n 40..48), tiny 1 (n 32..32) |
| cfloat | sm_120 | deep 527, transcribed 147 | 2026-10-11 | cta 267 (n 1..8192), blocked 233 (n 5..2048), vendor 153 (n 2..8192), tiny 21 (n 1..8192) |
| cdouble | sm_120 | deep 495, transcribed 133 | 2026-10-11 | vendor 323 (n 1..8192), blocked 176 (n 16..2048), cta 127 (n 40..8192), tiny 2 (n 8..16) |
| float | sm_89 | transcribed 636 | 2026-10-05 | vendor 279 (n 1..8192), blocked 198 (n 97..8192), cta 119 (n 32..96), tiny 40 (n 4..8192) |
| double | sm_89 | transcribed 636 | 2026-10-05 | vendor 334 (n 1..8192), blocked 277 (n 49..8192), cta 25 (n 32..48) |
| cfloat | sm_89 | transcribed 636 | 2026-10-05 | cta 329 (n 32..8192), vendor 269 (n 1..8192), tiny 38 (n 5..8192) |
| cdouble | sm_89 | transcribed 636 | 2026-10-05 | vendor 404 (n 1..8192), cta 232 (n 32..8192) |
Source: src/ops/gesv/choice.hh · evidence: LU: getrf, getrs, getri, gesv.
| Family | Knobs | Kernel |
|---|---|---|
| tiny | — | /< gesv_tiny_dispatch: fused LU factor + solve (buckets derived) |
| blocked | — | /< public getrf + public getrs; any homogeneous batch |
Table keys: n:log:3, nrhs:log. Spec: OpSpec{Op::gesv} — /< no vendor library; last resort (§5.5): blocked Tuner grid_n: 1, 2, 3, 4, 6, 8, 12, 16, 17, 20, 24, 28, 32, 33, 40, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096. Tuner grid_nrhs: 1, 2, 4, 5, 8, 16, 64, 256.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | deep 214 | 2026-10-11 | blocked 175 (n 1..2048), tiny 39 (n 1..32) |
| double | sm_120 | deep 226 | 2026-10-11 | blocked 202 (n 1..2048), tiny 24 (n 1..30) |
| cfloat | sm_120 | deep 222 | 2026-10-11 | blocked 187 (n 1..2048), tiny 35 (n 1..32) |
| cdouble | sm_120 | deep 215 | 2026-10-11 | blocked 194 (n 1..2048), tiny 21 (n 1..16) |
| float | sm_89 | transcribed 232 | 2026-10-05 | blocked 128 (n 33..4096), tiny 104 (n 1..32) |
| double | sm_89 | transcribed 232 | 2026-10-05 | blocked 232 (n 1..4096) |
| cfloat | sm_89 | transcribed 232 | 2026-10-05 | blocked 168 (n 17..4096), tiny 64 (n 1..16) |
| cdouble | sm_89 | transcribed 232 | 2026-10-05 | blocked 232 (n 1..4096) |
Source: src/ops/gesvd/choice.hh · evidence: GESVD.
| Family | Knobs | Kernel |
|---|---|---|
| jacobi | — | /< gesvdj_cta: one-sided Jacobi, max(m, n) <= 64, not Hermitian |
| cta | — | /< gesvd_cta: normal equations + syev_cta, max(m, n) <= 32, not thin |
| blocked | — | /< gesvd_blocked: bidiagonalisation + bdsdc, or syev_blocked (Lower) |
| vendor | — | /< backend::gesvd_vendor; needs the solver library |
Table keys: herm:exact, vec:exact, m:log:1.5, n:log:1.5. Spec: OpSpec{Op::gesvd, select::Lib::solver} — /< last resort (§5.5): blocked, vendor Tuner grid_mn: 1, 2, 4, 8, 16, 24, 32, 33, 48, 64, 65, 128, 256, 512, 1024. Tuner grid_herm: "N", "L", "U". Tuner grid_vec: "none", "all", "thin".
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | transcribed 1262, deep 722 | 2026-10-11 | vendor 1229 (n 1..1024), blocked 546 (n 1..1024), jacobi 166 (n 1..64), cta 43 (n 1..32) |
| double | sm_120 | transcribed 1258, deep 724 | 2026-10-11 | vendor 1221 (n 1..1024), blocked 556 (n 1..1024), jacobi 125 (n 1..64), cta 80 (n 1..32) |
| cfloat | sm_120 | transcribed 1526, deep 349 | 2026-10-11 | vendor 1536 (n 1..1024), jacobi 280 (n 1..64), blocked 37 (n 1..1024), cta 22 (n 1..32) |
| cdouble | sm_120 | transcribed 1646, deep 239 | 2026-10-11 | vendor 1640 (n 1..1024), jacobi 188 (n 1..64), blocked 32 (n 1..1024), cta 25 (n 1..32) |
| float | sm_89 | transcribed 2025 | 2026-10-05 | vendor 1291 (n 1..1024), blocked 559 (n 1..1024), jacobi 147 (n 1..32), cta 28 (n 1..32) |
| double | sm_89 | transcribed 2025 | 2026-10-05 | vendor 1291 (n 1..1024), blocked 559 (n 1..1024), jacobi 147 (n 1..32), cta 28 (n 1..32) |
| cfloat | sm_89 | transcribed 2025 | 2026-10-05 | vendor 1666 (n 1..1024), jacobi 300 (n 1..64), blocked 31 (n 1..1024), cta 28 (n 1..32) |
| cdouble | sm_89 | transcribed 2025 | 2026-10-05 | vendor 1768 (n 1..1024), jacobi 198 (n 1..64), blocked 31 (n 1..1024), cta 28 (n 1..32) |
Source: src/ops/getrf/choice.hh · evidence: LU: getrf, getrs, getri, gesv.
| Family | Knobs | Kernel |
|---|---|---|
| tiny | — | /< getrf_tiny_dispatch: register-resident, n <= 32 (cdouble 16) |
| cta | — | /< getrf_cta_dispatch: SLM-resident panel, n <= the SLM ceiling |
| blocked | — | /< getrf_blocked_dispatch + the public gemm and trsm |
| vendor | — | /< backend::getrf_vendor (cuBLAS / rocSOLVER / LAPACKE) |
Table keys: n:log:3, batch:log. Spec: OpSpec{Op::getrf, select::Lib::factorization} — /< §5.5: blocked, then vendor (CPU) Tuner grid_n: 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 16, 17, 24, 25, 32, 33, 48, 64, 96, 128, 192, 255, 256, 384, 511, 512, 768, 1024. Tuner grid_batch: 1, 8, 64, 128, 255, 256, 512, 2048, 8192, 32768.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | deep 293, transcribed 5 | 2026-10-11 | tiny 150 (n 1..32), blocked 111 (n 33..1024), vendor 19 (n 36..87), cta 18 (n 33..64) |
| double | sm_120 | deep 285, transcribed 12 | 2026-10-11 | tiny 132 (n 1..32), blocked 79 (n 59..1024), vendor 76 (n 5..1024), cta 10 (n 17..28) |
| cfloat | sm_120 | deep 289, transcribed 13 | 2026-10-11 | tiny 150 (n 1..32), blocked 94 (n 33..1024), vendor 39 (n 33..255), cta 19 (n 33..51) |
| cdouble | sm_120 | deep 274, transcribed 15 | 2026-10-11 | vendor 99 (n 1..1024), tiny 70 (n 1..16), cta 64 (n 5..32), blocked 56 (n 119..1024) |
| float | sm_89 | transcribed 280 | 2026-10-05 | vendor 110 (n 1..255), tiny 110 (n 5..32), blocked 60 (n 256..1024) |
| double | sm_89 | transcribed 280 | 2026-10-05 | vendor 280 (n 1..1024) |
| cfloat | sm_89 | transcribed 280 | 2026-10-05 | vendor 155 (n 1..511), tiny 80 (n 5..24), blocked 45 (n 256..1024) |
| cdouble | sm_89 | transcribed 280 | 2026-10-05 | vendor 280 (n 1..1024) |
Source: src/ops/getri/choice.hh · evidence: LU: getrf, getrs, getri, gesv.
| Family | Knobs | Kernel |
|---|---|---|
| blocked | — | /< getri_blocked_dispatch: P into C + two public trsm; GPU, square |
| vendor | — | /< backend::getri_vendor; also CPU, NETLIB, heterogeneous batches |
Table keys: n:log:3, batch:log. Spec: OpSpec{Op::getri, select::Lib::factorization, {last_resort}} — /< op, library, rules Tuner grid_n: 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 127, 128, 192, 255, 256, 384, 512, 768, 1024, 2048, 4096. Tuner grid_batch: 128, 512, 2048, 8192, 32768.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | deep 90, transcribed 18 | 2026-10-11 | blocked 100 (n 1..4096), vendor 8 (n 1..48) |
| double | sm_120 | deep 91, transcribed 23 | 2026-10-11 | blocked 70 (n 1..768), vendor 44 (n 1..4096) |
| cfloat | sm_120 | deep 90, transcribed 24 | 2026-10-11 | blocked 68 (n 1..4096), vendor 46 (n 1..255) |
| cdouble | sm_120 | deep 92, transcribed 29 | 2026-10-11 | vendor 78 (n 1..4096), blocked 43 (n 4..512) |
| float | sm_89 | transcribed 120 | 2026-10-05 | vendor 70 (n 1..127), blocked 50 (n 128..4096) |
| double | sm_89 | transcribed 120 | 2026-10-05 | vendor 120 (n 1..4096) |
| cfloat | sm_89 | transcribed 120 | 2026-10-05 | vendor 85 (n 1..255), blocked 35 (n 256..4096) |
| cdouble | sm_89 | transcribed 120 | 2026-10-05 | vendor 120 (n 1..4096) |
Source: src/ops/getrs/choice.hh · evidence: LU: getrf, getrs, getri, gesv.
| Family | Knobs | Kernel |
|---|---|---|
| cta | — | /< getrs_fused_dispatch: permute + both solves; B fits in SLM |
| blocked | — | /< getrs_blocked_dispatch: laswp + two public trsm |
| vendor | — | /< backend::getrs_vendor; also takes non-conforming pairs |
Table keys: n:log:2, nrhs:log, batch:log. Spec: OpSpec{Op::getrs, select::Lib::factorization} — /< last resort (§5.5): blocked, vendor Tuner grid_n: 1, 2, 4, 8, 16, 24, 31, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024. Tuner grid_nrhs: 1, 2, 3, 4, 5, 8, 16, 32, 63, 64, 127, 128, 256, 512, 1024. Tuner grid_batch: 1, 16, 127, 128, 512, 2048, 8192, 32768.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | deep 2440, transcribed 130 | 2026-10-11 | blocked 1588 (n 1..1024), cta 719 (n 1..1024), vendor 263 (n 1..1024) |
| double | sm_120 | deep 2918, transcribed 196 | 2026-10-11 | blocked 1765 (n 1..1024), cta 706 (n 1..1024), vendor 643 (n 1..1024) |
| cfloat | sm_120 | deep 3000, transcribed 194 | 2026-10-11 | blocked 1357 (n 1..1024), vendor 997 (n 1..1024), cta 840 (n 1..1024) |
| cdouble | sm_120 | deep 2295, transcribed 270 | 2026-10-11 | blocked 1005 (n 1..1024), vendor 955 (n 1..1024), cta 605 (n 1..1024) |
| float | sm_89 | transcribed 2160 | 2026-10-05 | vendor 1268 (n 1..1024), blocked 540 (n 1..1024), cta 352 (n 32..1024) |
| double | sm_89 | transcribed 2160 | 2026-10-05 | vendor 1624 (n 1..1024), blocked 360 (n 1..1024), cta 176 (n 32..1024) |
| cfloat | sm_89 | transcribed 2160 | 2026-10-05 | vendor 1984 (n 1..1024), cta 176 (n 32..1024) |
| cdouble | sm_89 | transcribed 2160 | 2026-10-05 | vendor 1984 (n 1..1024), cta 176 (n 32..1024) |
Source: src/ops/orgqr/choice.hh · evidence: QR: geqrf, orgqr and ormqr.
| Family | Knobs | Kernel |
|---|---|---|
| blocked | — | /< orgqr_blocked_dispatch: identity + the public ormqr; GPU, n <= m |
| vendor | — | /< backend::orgqr_vendor; any shape (n > m, CPU, heterogeneous) |
Table keys: m:log, n:log:2. Spec: OpSpec{Op::orgqr, select::Lib::factorization, {last_resort}} — /< op, library, rules
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | deep 123, transcribed 17 | 2026-10-11 | blocked 120 (n 1..1024), vendor 20 (n 1..8192) |
| double | sm_120 | deep 121, transcribed 17 | 2026-10-11 | blocked 119 (n 1..1024), vendor 19 (n 1..8192) |
| cfloat | sm_120 | deep 126, transcribed 17 | 2026-10-11 | blocked 112 (n 1..628), vendor 31 (n 1..8192) |
| cdouble | sm_120 | deep 127, transcribed 17 | 2026-10-11 | blocked 114 (n 1..1024), vendor 30 (n 1..8192) |
| float | sm_89 | transcribed 153 | 2026-10-05 | vendor 87 (n 1..8192), blocked 66 (n 1..512) |
| double | sm_89 | transcribed 153 | 2026-10-05 | vendor 87 (n 1..8192), blocked 66 (n 1..512) |
| cfloat | sm_89 | transcribed 153 | 2026-10-05 | vendor 87 (n 1..8192), blocked 66 (n 1..512) |
| cdouble | sm_89 | transcribed 153 | 2026-10-05 | vendor 87 (n 1..8192), blocked 66 (n 1..512) |
Source: src/ops/ormqr/choice.hh · evidence: QR: geqrf, orgqr and ormqr.
| Family | Knobs | Kernel |
|---|---|---|
| blocked | — | /< ormqr_blocked (larft + level-3 WY updates); GPU, no complex Trans |
| vendor | — | /< backend::ormqr_vendor; no complex Trans either |
Table keys: side:exact, trans:exact, m:log, k:log, q:log, batch:log. Spec: OpSpec{Op::ormqr, select::Lib::factorization} — /< last resort (§5.5): blocked, vendor Tuner grid_m: 1, 8, 64, 512. Tuner grid_q: 1, 32, 1024. Tuner grid_batch: 128, 2048, 32768.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | deep 426 | 2026-10-11 | blocked 426 |
| double | sm_120 | deep 414 | 2026-10-11 | blocked 414 |
| cfloat | sm_120 | deep 278, transcribed 192 | 2026-10-11 | blocked 289, vendor 181 |
| cdouble | sm_120 | deep 252, transcribed 180 | 2026-10-11 | blocked 252, vendor 180 |
| float | sm_89 | transcribed 540 | 2026-10-05 | blocked 540 |
| double | sm_89 | transcribed 540 | 2026-10-05 | blocked 540 |
| cfloat | sm_89 | transcribed 540 | 2026-10-05 | blocked 360, vendor 180 |
| cdouble | sm_89 | transcribed 540 | 2026-10-05 | blocked 360, vendor 180 |
Source: src/ops/posv/choice.hh · evidence: POTRF and POSV.
| Family | Knobs | Kernel |
|---|---|---|
| tiny | — | /< posv_tiny_dispatch: fused factor + solve, small n and nrhs |
| cta | — | /< public potrf + potrs_fused_dispatch; B fits in SLM |
| blocked | — | /< public potrf + two public trsm; any homogeneous batch |
Table keys: uplo:exact, n:log:3, nrhs:log, batch:log. Spec: OpSpec{Op::posv, select::Lib::none} — /< no library; blocked's children report errors Tuner grid_n: 1, 2, 3, 4, 6, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 288, 320, 384, 448, 512, 640, 768, 1024. Tuner grid_nrhs: 1, 2, 4, 8, 16, 64. Tuner grid_batch: 128, 512, 2048, 8192, 32768.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | deep 2483 | 2026-10-11 | blocked 1313 (n 1..1024), cta 750 (n 1..1024), tiny 420 (n 1..32) |
| double | sm_120 | deep 2126 | 2026-10-11 | blocked 1321 (n 1..1024), cta 474 (n 1..1024), tiny 331 (n 1..32) |
| cfloat | sm_120 | deep 2203, custom 2 | 2026-10-11 | blocked 1393 (n 1..1024), cta 648 (n 1..1024), tiny 164 (n 1..32) |
| cdouble | sm_120 | deep 1802 | 2026-10-11 | blocked 1307 (n 1..768), cta 427 (n 1..768), tiny 68 (n 1..14) |
| float | sm_89 | transcribed 1980 | 2026-10-04 | cta 1260 (n 36..1024), tiny 720 (n 1..32) |
| double | sm_89 | transcribed 1980 | 2026-10-04 | cta 1260 (n 36..1024), tiny 720 (n 1..32) |
| cfloat | sm_89 | transcribed 1980 | 2026-10-04 | cta 1300 (n 28..1024), tiny 680 (n 1..32) |
| cdouble | sm_89 | transcribed 1980 | 2026-10-04 | cta 1500 (n 20..1024), tiny 480 (n 1..16) |
Source: src/ops/potrf/choice.hh · evidence: POTRF and POSV.
| Family | Knobs | Kernel |
|---|---|---|
| tiny | — | /< potrf_tiny_dispatch: registers; n <= potrf_tiny_max_n, max_wg >= 64 |
| cta | — | /< potrf_cta_dispatch: whole matrix in SLM; n <= the CTA SLM ceiling |
| lpanel | panel | — |
| blocked | — | /< potrf_blocked_dispatch + gemm/trsm, Lower; nb/W: PotrfBlockedConst + env |
| vendor | — | /< backend::potrf_vendor; needs the solver library |
Table keys: uplo:exact, n:log:3, batch:log. Spec: OpSpec{Op::potrf, select::Lib::solver} — /< default last resort: blocked, vendor Tuner grid_n: 1, 2, 3, 4, 6, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 288, 320, 384, 448, 512, 640, 768, 1024, 1280. Tuner grid_batch: 128, 512, 2048, 8192, 32768.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | deep 351 | 2026-10-11 | tiny 120 (n 1..32), vendor 82 (n 64..1280), lpanel:panel=8 75 (n 17..479), cta 40 (n 34..76), lpanel:panel=16 21 (n 42..304), blocked 13 (n 541..1280) |
| double | sm_120 | deep 379 | 2026-10-11 | vendor 163 (n 12..1280), lpanel:panel=8 84 (n 1..288), tiny 62 (n 1..32), cta 51 (n 1..52), blocked 19 (n 68..1280) |
| cfloat | sm_120 | deep 316 | 2026-10-11 | vendor 134 (n 34..1280), tiny 115 (n 1..32), lpanel:panel=8 56 (n 17..351), cta 11 (n 34..52) |
| cdouble | sm_120 | deep 328 | 2026-10-11 | vendor 141 (n 9..1280), lpanel:panel=8 81 (n 1..175), cta 57 (n 1..38), tiny 49 (n 1..16) |
| float | sm_89 | converted 87 | 2026-10-04 | tiny 45 (n 1..32), vendor 29 (n 44..384), cta 11 (n 24..65), blocked 2 (n 512..512) |
| double | sm_89 | converted 34 | 2026-10-04 | tiny 20 (n 1..16), vendor 12 (n 1..256), blocked 2 (n 512..512) |
| cfloat | sm_89 | converted 88 | 2026-10-04 | tiny 45 (n 1..32), vendor 37 (n 36..512), cta 5 (n 24..36), blocked 1 (n 512..512) |
| cdouble | sm_89 | converted 32 | 2026-10-04 | tiny 21 (n 1..16), vendor 7 (n 1..512), cta 4 (n 20..32) |
Source: src/ops/spmm/choice.hh · evidence: SPMM: batched CSR kernel and routing.
| Family | Knobs | Kernel |
|---|---|---|
| direct | — | /< sycl_spmm::spmm_native_csr: CSR only, no GPU gate (native_cpu too) |
| vendor | — | /< backend::spmm_vendor (cuSPARSE, rocSPARSE, netlib) less known-defect shapes |
Table keys: transA:exact, transB:exact, m:log, nrhs:log, batch:log. Spec: OpSpec{Op::spmm, select::Lib::sparse, {last_resort}} — /< op, library, rules Tuner grid_m: 1, 16, 256, 4096, 65536. Tuner grid_nrhs: 1, 2, 4, 16, 64. Tuner grid_batch: 1, 8, 128, 1024, 16384.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | cpu | transcribed 500 | 2026-10-05 | direct 250, vendor 250 |
| double | cpu | transcribed 500 | 2026-10-05 | direct 250, vendor 250 |
| cfloat | cpu | transcribed 500 | 2026-10-05 | vendor 375, direct 125 |
| cdouble | cpu | transcribed 500 | 2026-10-05 | direct 250, vendor 250 |
| float | sm_120 | deep 787 | 2026-10-11 | direct 535, vendor 252 |
| double | sm_120 | deep 705, transcribed 8 | 2026-10-11 | direct 498, vendor 215 |
| cfloat | sm_120 | deep 699, transcribed 8 | 2026-10-11 | direct 488, vendor 219 |
| cdouble | sm_120 | deep 703, transcribed 8 | 2026-10-11 | direct 507, vendor 204 |
| float | sm_89 | transcribed 500 | 2026-10-05 | direct 250, vendor 250 |
| double | sm_89 | transcribed 500 | 2026-10-05 | direct 250, vendor 250 |
| cfloat | sm_89 | transcribed 500 | 2026-10-05 | vendor 375, direct 125 |
| cdouble | sm_89 | transcribed 500 | 2026-10-05 | direct 250, vendor 250 |
Source: src/ops/syev/choice.hh · evidence: SYEV.
| Family | Knobs | Kernel |
|---|---|---|
| cta | — | /< syev_cta: sytrd + steqr_cta, n <= 32 |
| cta_fused | — | /< syev_cta_fused: one kernel, n <= 32 |
| jacobi | — | /< syev_jacobi_cta, n <= 32 |
| blocked | — | /< syev_blocked: sytrd_blocked + stedc, any n |
| two_stage | — | /< syev_two_stage: sy2sb + sb2st + stedc, any n |
| vendor | — | /< backend::syev_vendor; needs the solver library |
Table keys: jobz:exact, n:log:3, batch:log. Spec: OpSpec{Op::syev, select::Lib::solver} — /< last resort (§5.5): blocked, vendor (CPU) Tuner grid_n: 1, 2, 3, 4, 6, 8, 9, 12, 16, 20, 24, 25, 28, 32, 33, 40, 48, 64, 96, 128, 192, 256, 257, 320, 321, 384, 448, 449, 512, 513, 640, 768, 1024, 1025, 1536, 2048, 4096. Tuner grid_batch: 128, 512, 2048, 8192, 32768.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | deep 337, transcribed 48 | 2026-10-11 | blocked 146 (n 13..825), cta_fused 109 (n 1..32), vendor 52 (n 11..4096), two_stage 51 (n 33..4096), jacobi 20 (n 2..4), cta 7 (n 9..16) |
| double | sm_120 | deep 295, transcribed 64 | 2026-10-11 | blocked 143 (n 16..640), vendor 58 (n 11..4096), cta_fused 46 (n 1..15), cta 46 (n 9..32), jacobi 36 (n 1..6), two_stage 30 (n 321..4096) |
| cfloat | sm_120 | deep 308, transcribed 68 | 2026-10-11 | blocked 124 (n 12..513), vendor 92 (n 12..4096), cta_fused 80 (n 1..26), cta 33 (n 9..32), two_stage 33 (n 321..4096), jacobi 14 (n 1..2) |
| cdouble | sm_120 | deep 286, transcribed 80 | 2026-10-11 | vendor 114 (n 1..4096), blocked 112 (n 17..512), cta_fused 64 (n 1..18), two_stage 36 (n 33..4096), cta 32 (n 6..32), jacobi 8 (n 1..2) |
| float | sm_89 | transcribed 370 | 2026-10-05 | blocked 115 (n 33..448), two_stage 95 (n 321..4096), cta_fused 80 (n 9..32), jacobi 60 (n 1..8), vendor 20 (n 1025..4096) |
| double | sm_89 | transcribed 370 | 2026-10-05 | jacobi 140 (n 1..32), blocked 115 (n 33..448), two_stage 65 (n 321..4096), vendor 50 (n 449..4096) |
| cfloat | sm_89 | transcribed 370 | 2026-10-05 | blocked 125 (n 33..512), cta 80 (n 9..32), two_stage 65 (n 321..4096), cta_fused 60 (n 1..8), vendor 40 (n 513..4096) |
| cdouble | sm_89 | transcribed 370 | 2026-10-05 | cta 125 (n 1..32), blocked 90 (n 33..320), vendor 90 (n 25..4096), two_stage 65 (n 321..4096) |
Source: src/ops/symm/choice.hh · evidence: Level-3: symm, hemm, syrk, herk, syr2k, her2k, trmm.
| Family | Knobs | Kernel |
|---|---|---|
| expand | — | /< expand_mirrored into scratch + the public gemm; scratch must fit |
| vendor | — | /< backend::symm_vendor (cublas?symm / cblas_?symm loop) |
Table keys: form:exact, m:log, n:log, batch:log. Spec: OpSpec{Op::symm, select::Lib::level3, {last_resort}} — /< op, vendor library, rules Tuner grid_form: "sq", "tall", "wide". Tuner grid_mn: 1, 2, 4, 8, 16, 32, 64, 128, 255, 256, 512, 1024, 2048, 4096. Tuner grid_batch: 1, 2, 3, 4, 8, 128, 1024, 8192, 32768.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | transcribed 3570, deep 1729 | 2026-10-11 | expand 2746 (n 1..4096), vendor 2553 (n 1..4096) |
| double | sm_120 | transcribed 3623, deep 1875 | 2026-10-11 | vendor 4247 (n 1..4096), expand 1251 (n 1..4096) |
| float | sm_89 | transcribed 5292 | 2026-10-06 | vendor 3723 (n 1..4096), expand 1569 (n 1..4096) |
| double | sm_89 | transcribed 5292 | 2026-10-06 | vendor 5292 (n 1..4096) |
Source: src/ops/syr2k/choice.hh · evidence: Level-3: symm, hemm, syrk, herk, syr2k, her2k, trmm.
| Family | Knobs | Kernel |
|---|---|---|
| triangular | — | /< syr2k_triangular_tiles<float>, CUDA GPU; real ConjTrans runs as Trans |
| vendor | — | /< backend::syr2k_vendor (per-item ?syr2k loop) |
Table keys: n:log:2, k:log, batch:log. Spec: OpSpec{Op::syr2k, select::Lib::level3, {last_resort}} — /< op, vendor library, rules Tuner grid_n: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096. Tuner grid_k: 1, 8, 64, 512, 4096. Tuner grid_batch: 1, 2, 3, 128, 1024, 8192, 32768.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | deep 592, transcribed 59 | 2026-10-11 | triangular 449 (n 1..4096), vendor 202 (n 1..4096) |
| double | sm_120 | deep 349, transcribed 42 | 2026-10-11 | vendor 391 (n 1..4096) |
| float | sm_89 | transcribed 455 | 2026-10-06 | triangular 390 (n 1..4096), vendor 65 (n 1..4096) |
| double | sm_89 | transcribed 455 | 2026-10-06 | vendor 455 (n 1..4096) |
Source: src/ops/syrk/choice.hh · evidence: Level-3: symm, hemm, syrk, herk, syr2k, her2k, trmm.
| Family | Knobs | Kernel |
|---|---|---|
| gram | — | /< syrk_gram_tiles: one tile covers C; n <= 128, tile SLM fits |
| triangular | — | /< syrk_triangular_tiles<float>: 128-wide tiles of one half |
| vendor | — | /< backend::syrk_vendor (per-item ?syrk loop) |
Table keys: form:exact, trans:exact, n:log:2, k:log, batch:log. Spec: OpSpec{Op::syrk, select::Lib::level3, {last_resort}} — /< op, vendor library, rules Tuner grid_n: 1, 2, 4, 8, 16, 32, 64, 128, 129, 256, 257, 384, 385, 512, 513, 640, 641, 768, 769, 896, 897, 1024, 1025, 1152, 1153, 1536, 1537, 2176, 2177, 4096. Tuner grid_trans: "N", "T", "C". Tuner grid_k: 1, 7, 8, 64, 512, 4096. Tuner grid_batch: 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 15, 16, 26, 27, 128, 1024, 32768.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | transcribed 12248, deep 7088 | 2026-10-11 | triangular 10730 (n 49..4096), gram 4854 (n 1..128), vendor 3752 (n 1..4096) |
| double | sm_120 | transcribed 8914, deep 5717 | 2026-10-11 | vendor 10997 (n 1..4096), gram 3634 (n 1..128) |
| float | sm_89 | transcribed 18450 | 2026-10-06 | triangular 9088 (n 129..4096), gram 4896 (n 1..128), vendor 4466 (n 1..4096) |
| double | sm_89 | transcribed 18450 | 2026-10-06 | vendor 13554 (n 1..4096), gram 4896 (n 1..128) |
Source: src/ops/trmm/choice.hh · evidence: Level-3: symm, hemm, syrk, herk, syr2k, her2k, trmm.
| Family | Knobs | Kernel |
|---|---|---|
| triangular | — | /< trmm_triangular_tiles: Side::Left; tile grid <= 65535 |
| expand | — | /< expand_triangular + the public gemm; scratch must fit |
| vendor | — | /< backend::trmm_vendor (cublas?trmm loop) |
Table keys: side:exact, order:log:2, q:log, batch:log. Spec: OpSpec{Op::trmm, select::Lib::level3, {last_resort}} — /< op, vendor library, rules Tuner grid_order: 1, 16, 32, 64, 128, 256, 512, 1024, 2048. Tuner grid_q: 1, 16, 128, 1024, 4096. Tuner grid_batch: 1, 128, 1024, 32768.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | deep 756, transcribed 34, custom 2 | 2026-10-11 | expand 275, triangular 267, vendor 250 |
| double | sm_120 | deep 667, transcribed 46, custom 6 | 2026-10-11 | expand 409, vendor 194, triangular 116 |
| cfloat | sm_120 | deep 616, transcribed 46, custom 5 | 2026-10-11 | expand 360, vendor 207, triangular 100 |
| cdouble | sm_120 | deep 510, transcribed 54, custom 4 | 2026-10-11 | expand 280, vendor 172, triangular 116 |
| float | sm_89 | transcribed 360 | 2026-10-06 | triangular 180, expand 180 |
| double | sm_89 | transcribed 360 | 2026-10-06 | triangular 180, expand 180 |
| cfloat | sm_89 | transcribed 360 | 2026-10-06 | triangular 180, expand 180 |
| cdouble | sm_89 | transcribed 360 | 2026-10-06 | triangular 180, expand 180 |
Source: src/ops/trsm/choice.hh · evidence: TRSM.
| Family | Knobs | Kernel |
|---|---|---|
| cta | — | /< trsm_native_v1_dispatch, order <= 32 |
| sg_left | — | /< trsm_native_sg_left_dispatch: Left, order <= 32, sg 32 |
| blocked | — | /< trsm_native_blocked + the public gemm, any order |
| vendor | — | /< backend::trsm_vendor; needs the level-3 library |
Table keys: side:exact, trans:exact, order:log:2, q:log, batch:log. Spec: OpSpec{Op::trsm, select::Lib::level3} — /< last resort (§5.5): blocked, vendor (CPU) Tuner grid_order: 1, 2, 4, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024. Tuner grid_q: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 4096. Tuner grid_batch: 128, 512, 2048, 8192, 32768.
| dtype | device | rows | date | ranked first |
|---|---|---|---|---|
| float | sm_120 | deep 5872 | 2026-10-11 | blocked 1913, cta 1419, vendor 1384, sg_left 1156 |
| double | sm_120 | deep 5029 | 2026-10-11 | blocked 2167, cta 1793, sg_left 733, vendor 336 |
| cfloat | sm_120 | deep 6063, transcribed 508 | 2026-10-11 | blocked 2439, cta 1965, sg_left 1220, vendor 947 |
| cdouble | sm_120 | deep 4672, transcribed 732 | 2026-10-11 | blocked 2208, cta 1625, vendor 975, sg_left 596 |
| float | sm_89 | transcribed 4320 | 2026-10-04 | blocked 2400, cta 1920 |
| double | sm_89 | transcribed 4320 | 2026-10-04 | blocked 2400, cta 1920 |
| cfloat | sm_89 | transcribed 4320 | 2026-10-04 | blocked 2400, cta 1920 |
| cdouble | sm_89 | transcribed 4320 | 2026-10-04 | blocked 2400, cta 1920 |