muh-bot
23e34fde33
[muh] tuning_radix_sort: 148→211行, 基于 CCCL 2381 行源码完整重建 10-子策略架构
从 CCCL tuning_radix_sort.cuh 读入完整 policy_selector::operator():
SM100/SM90: make_onesweep_small_key_policy (benchmark-tuned entries)
SM80: onesweep (key≥4B) + multi_pass (key<4B)
SM70: onesweep (key≥4B) + multi_pass (key<4B) ← BI-V100 基线
SM60: similar to SM70 with different params
SM50: multi_pass only
BI-V100 选择 SM70 策略而非 SM100 的原因:
1. HBM2 vs HBM3 — 内存子系统接近 V100
2. onesweep 的 rank_private_partitions=4 (SM70) vs 1 (SM80+)
SM80+ 有 hardware atomic 改进使 partition=1 可行
BI-V100 atomic 性能未知, 保守用 SM70 的 4
3. onesweep items: SM70 用 23 (key=4B) 或 46 (key=4B value=4B pair)
scale_reg_bound 缩放 (register-bound, NOT SMEM-bound)
关键架构理解:
- radix sort 是 register-intensive (keys/values in regs during ranking)
- SMEM 用于 histogram counting 和 rank arrays (远小于 scan 的 BlockLoad)
- 10 子策略全部通过 factory 函数构建 (make_reg_scaled_*)
- scan 子策略复用 tuning_scan 的 lookback policy