Files
project_6/CCCL_TUNING_GAP_REPORT.md

4.5 KiB
Raw Blame History

CCCL ↔ muh Tuning Header Gap Report

Generated: 2026-08-06 (auto-analyzed from source code) Source of truth: cccl_upstream/cub/cub/device/dispatch/tuning/tuning_*.cuh muh headers: muh/include/muh/tuning/tuning_*.cuh

Executive summary

  • 26 algorithms have both CCCL original and muh BI-V100 tuning headers.
  • muh covers 19% of CCCL lines (3568 / 18094).
  • CCCL contains 294 benchmark annotations across all algorithms. muh has 1 benchmarked algorithm (scan, partial).
  • The #1 gap is not code coverage — it's the absence of BI-V100 benchmark data in ipt_N.tpb_M speedup format.

Per-algorithm coverage

Algorithm CCCL lines muh lines Coverage CCCL bench pts muh bi100 structs muh benchmarked?
reduce 478 297 62% 6 14
scan 1525 591 38% 16 22 ✓ (partial)
topk 121 113 93% 0 0
radix_sort 2381 222 9% 70 0
select_if 2729 459 16% 82 0
scan_by_key 2008 145 7% 30 0
reduce_by_key 1735 171 9% 32 0
unique_by_key 1539 166 10% 29 0
three_way_partition 788 99 12% 13 0
rle_non_trivial_runs 691 68 9% 8 0
segmented_sort 640 189 29% 0 0
rle_encode 626 63 10% 4 0
transform 549 185 33% 0 0
histogram 363 76 20% 4 0
segmented_radix_sort 311 48 15% 0 0
batch_memcpy 227 95 41% 0 0
batched_topk 186 66 35% 0 0
merge_sort 193 83 43% 0 0
merge 180 89 49% 0 0
segmented_reduce 189 51 26% 0 0
segmented_scan 158 45 28% 0 0
adjacent_difference 118 77 65% 0 0
find 90 39 43% 0 0
find_bound_sorted_values 106 47 44% 0 0
transform_tile 85 33 38% 0 0
for 78 51 65% 0 1
TOTAL 18094 3568 19% 294 37 1/26

Reduce: CCCL SM100 → muh BI-V100 divergence analysis

SM100 benchmark annotations in CCCL

ipt_15.tpb_512.ipv_2  1.020  1.000  1.018  1.058  (geo=1.024) — accum8, offset4
ipt_15.tpb_512.ipv_1  1.019  1.000  1.017  1.057  (geo=1.023) — accum8, offset8
ipt_16.tpb_512.ipv_2  1.061  1.000  1.065  1.167  (geo=1.072) — float32, offset4
ipt_16.tpb_640.ipv_1  1.018  1.000  1.016  1.057  (geo=1.022) — float64, offset4
ipt_13.tpb_224        1.107  1.010  1.097  1.317  (geo=1.127) — deterministic float32 (sm90)
ipt_6.tpb_224         1.034  1.000  1.032  1.091  (geo=1.039) — deterministic float32 (sm86)

Key divergences

Parameter CCCL SM100 muh BI-V100 Rationale Risk
float32+plus items 16 24 Compensate for 16 vs 148 SMs Unvalidated: may hurt L1 hit rate
float64+plus threads 640 384 Clean 12-warp config May underutilize vs 20-warp original
float64+plus vec 1 2 16B vectorized loads Alignment risk with non-contiguous data
det float32 items 13 32 More work per CTA on 16 SMs 2.5× register pressure increase
accum1/2/16 absent added Extrapolated from scaling Not in CCCL SM100, completely theoretical

Scan: lookback delay calibration gap

CCCL SM100 lookback delay parameters (from benchmark annotations):

  • delay_ns range: 228 1904 ns
  • dcid (delay constructor ID) range: 1 7
  • l2_write_latency range: 520 965 ns

These are calibrated on SM100's 50MB L2 cache. BI-V100 has 6MB L2 → delay parameters need re-calibration. Current muh values use heuristic scaling (SM100 × 0.5 for ns, × 0.6 for l2w) without hardware validation.

Priority action items (by Output TPS impact)

# Algorithm CCCL bench pts needed vllm hot path Weight
1 reduce 6 paged_attention score reduction 83%
2 scan 16 (8 remaining) softmax denominator 83%
3 topk 0 (format from radix_sort) vocab=152064 sampling 83%
4 radix_sort 70 logit sorting for top-k/top-p 83%
5 select_if 82 top-p token filtering 83%
6 transform 0 (no CCCL benches) RMSNorm/SiLU/RoPE 10-15%
7 scan_by_key 30 per-sequence softmax ~5%
8 reduce_by_key 32 per-sequence aggregation ~3%
9 batch_memcpy 0 KV cache block copy 3%