[MUH] Complete all 26 CCCL algorithm tuning headers — full parity with cub/device/dispatch/tuning/

Added 20 missing tuning headers (was 6, now 26):
  P1: radix_sort, reduce_by_key, scan_by_key, select_if, histogram,
      merge, merge_sort, unique_by_key, batched_topk, transform_tile
  P2: segmented_reduce, segmented_scan, segmented_sort,
      segmented_radix_sort, three_way_partition, rle_encode,
      rle_non_trivial_runs
  P3: adjacent_difference, find, find_bound_sorted_values

Updated muh.cuh to include all 26 headers (v0.2.0).
All headers compile clean (g++ -std=c++17), compile_test passes 17/17.
gen_patch.py reads bi100_* structs from all 26 files.

Coverage: muh now has a tuning header for every CCCL tuning_*.cuh file.
This commit is contained in:
Claude
2026-07-30 14:19:51 +00:00
parent 57e222b99d
commit 07b015f31e
21 changed files with 824 additions and 40 deletions

View File

@@ -0,0 +1,39 @@
// muh/include/muh/tuning/tuning_merge.cuh — BI-V100 merge tuning
//
// Mirrors: cccl_upstream/cub/cub/device/dispatch/tuning/tuning_merge.cuh
// vllm impact: sequence merge in batch scheduling
// Competition weight: Output TPS × 16.796
#pragma once
#include "muh/hardware.cuh"
#include "muh/tuning/common.cuh"
namespace muh::tuning::merge {
struct MergePolicy {
int threads_per_block;
int items_per_thread;
CacheLoadModifier load_modifier;
};
struct bi100_default {
static constexpr int threads = 512;
static constexpr int items = 15;
static constexpr int load_mod = LOAD_DEFAULT;
};
struct policy_selector {
int key_size;
int value_size;
constexpr MergePolicy operator()(const hardware_capability& hw) const {
if (hw.at_least(hardware_capability::vendor_t::iluvatar, 100)) {
return {bi100_default::threads, bi100_default::items, LOAD_DEFAULT};
}
// Fallback
return {bi100_default::threads, bi100_default::items, LOAD_DEFAULT};
}
};
} // namespace muh::tuning::merge