Singe: Leveraging Warp Specialization for High Performance on GPUs(用 Warp 特化实现 GPU 高性能的 DSL 编译器)
PPoPP'14 论文,来自 CudaDMA 同一作者团队(Bauer/Treichler/Aiken, Stanford)。提出 Singe——一个面向燃烧化学(combustion chemistry)的 DSL 编译器,用 warp 特化(warp specialization)作为替代数据并行的编程模型,把一个 CTA 内的 warp 划分为不同子计算,通过硬件生产者-消费者命名屏障(named barriers, PTX bar.arrive/bar.sync)细粒度同步。核心解决燃烧 kernel 的三大难题:超大工作集(每点数百个双精度变量)、不规则计算(多阶段、部分可并行)、不规则访存。Singe 用 warp 特化把大工作集拆分到不同 warp 的片上寄存器/shared memory,避免寄存器溢出。三类 kernel 案例:Viscosity(按物种求和分块,Store 模式)、Diffusion(对 dij 矩阵按列分块,Mixed 模式)、Chemistry(反应速率存寄存器经 shared 交换,Buffer 模式 + QSSA DAG 分块 overlap)。编译器四阶段:分块→映射(FLOPS/寄存器/局部性三指标)→命名屏障放置调度(无死锁定理,16 个命名屏障=SSA 寄存器分配)→代码生成。代码生成三关键技术避免指令 cache 抖动:代码 overlay(同时遍历 AST 森林 + 位掩码/间接分支)、常量去重(Fermi shared 广播 / Kepler shuffle)、warp 索引(不规则访存)。在 Fermi C2070 与 Kepler K20c 上对 DME/Heptane 机制,相比已高度优化的数据并行 baseline 最高加速 3.75×。