CUDA-Harness:从自然语言驾驭智能体CUDA内核生成与优化
摘要
CUDA-Harness是一个利用智能体技术从自然语言描述生成和优化CUDA内核的框架,通过连接高级语义与低级实现和验证来解决Text2CUDA中的挑战。
arXiv:2609.00058v1 公告类型:新
摘要:开发高性能CUDA内核需要在算法实现、正确性验证和硬件感知并行优化方面的专业知识,这造成了巨大的专业知识壁垒,使得直接从自然语言生成CUDA内核(Text2CUDA)变得至关重要。与此同时,大型语言模型(LLMs)的通用代码生成能力引发了一系列探索基于LLM的CUDA内核生成的工作。它们主要关注从高级框架如PyTorch到CUDA的转译(Torch2CUDA),而非Text2CUDA,后者要求模型理解高级输入语义并处理低级内核实现和验证。此外,由于依赖预定义测试输入,这些方法容易受到奖励黑客攻击的影响。在本文中,我们提出了CUDA-Harness,一个用于从自然语言驾驭智能体CUDA内核生成与优化的框架。具体来说,我们引入了中间结构化生成来连接高级语义理解与低级内核生成。为了减轻Text2CUDA中的奖励黑客攻击,我们构建了基于合成的验证来提供隔离测试数据和渐进式验证。此外,我们提出了反馈自适应进化,一种优先考虑正确性同时优化性能的内核进化策略。最后,通过大量实验,我们证明了CUDA-Harness的有效性,进一步的评估展示了其在LLMs、硬件平台以及C到CUDA转译方面的泛化能力。
查看缓存全文
缓存时间: 2026/09/02 05:44
# CUDA-Harness:利用代理式从自然语言进行CUDA内核生成与优化
来源:https://arxiv.org/html/2609.00058
Qi Fan & An Zou & Yehan Ma††thanks:通讯作者
###### 摘要
开发高性能CUDA内核需要算法实现、正确性验证和硬件感知的并行优化方面的专业知识,这造成了显著的技术门槛,使得从自然语言直接生成CUDA内核(Text2CUDA)成为必要。与此同时,大语言模型(LLM)的通用代码生成能力催生了一系列基于LLM的CUDA内核生成研究。这些工作主要关注从PyTorch等高级框架到CUDA的转译(Torch2CUDA),而非Text2CUDA——后者要求模型在理解高层语义输入的同时,处理底层的内核实现与验证。此外,这些方法由于依赖预定义测试输入,容易遭受奖励欺骗问题。本文提出CUDA-Harness,一个利用代理式从自然语言进行CUDA内核生成与优化的框架。具体而言,我们引入中间结构化生成,连接高层语义理解与底层内核生成;为缓解Text2CUDA中的奖励欺骗问题,构建了基于合成的验证机制,提供隔离的测试数据与渐进式验证;并提出反馈自适应进化策略,在优化性能的同时优先保证正确性。通过大量实验,我们验证了CUDA-Harness的有效性,进一步评估表明其具有跨LLM、跨硬件平台的泛化能力,并可扩展到C到CUDA的转译任务。
## 1 引言
随着高性能计算的发展,CUDA已成为并行计算的主导平台,支持从人工智能(Paszke等,2019 (https://arxiv.org/html/2609.00058#bib.bib1);Shah等,2024 (https://arxiv.org/html/2609.00058#bib.bib2))到量子计算(Guo等,2025 (https://arxiv.org/html/2609.00058#bib.bib3))和科学模拟(Xie等,2025 (https://arxiv.org/html/2609.00058#bib.bib4))的各类应用。然而,开发高性能内核仍然具有挑战性,不仅需要掌握算法实现和测试细节的简明知识,还需对硬件架构和并行优化有专门理解。这些要求构成了显著的技术门槛,限制了GPU编程的可及性。因此,从自然语言直接生成CUDA内核(Text2CUDA)对于弥合高层应用需求与底层并行实现之间的鸿沟至关重要。
图1:Text2CUDA与Torch2CUDA对比。Torch2CUDA从详细的PyTorch代码开始,而Text2CUDA从缺乏可用测试数据的、规格不完整的自然语言提示开始。
大语言模型(LLM)在通用代码生成方面已展现出卓越能力(Zheng等,2025 (https://arxiv.org/html/2609.00058#bib.bib5)),促使一系列研究(Yu等,2026 (https://arxiv.org/html/2609.00058#bib.bib6))利用LLM生成高性能CUDA内核。然而,现有工作(Ouyang等,2025 (https://arxiv.org/html/2609.00058#bib.bib7);Dong等,2025 (https://arxiv.org/html/2609.00058#bib.bib29))主要聚焦于从高级框架(如将PyTorch转译为CUDA的Torch2CUDA)到CUDA的转译,而非Text2CUDA。这种区别是根本性的。转译从算法细节已确定的程序开始,而Text2CUDA则从可能不完整且规格不全的自然语言描述开始。因此,Text2CUDA要求模型更深入地理解高层意图语义,同时处理底层内核实现与验证,如图1(https://arxiv.org/html/2609.00058#S1.F1)所示。因此,一个系统解决输入语义理解的Text2CUDA框架至关重要。
现有的基于LLM的CUDA内核生成方法大致可分为基于训练和基于代理两类。基于训练的方法(Li等,2025 (https://arxiv.org/html/2609.00058#bib.bib24);Dai等,2026 (https://arxiv.org/html/2609.00058#bib.bib27);Du等,2026 (https://arxiv.org/html/2609.00058#bib.bib28))通过监督微调或强化学习增强模型的CUDA内核生成能力。然而,它们严重依赖高质量的内核实现和优化轨迹来构建训练数据(Zhou等,2023 (https://arxiv.org/html/2609.00058#bib.bib8)),这在实践中稀缺且昂贵。基于代理的方法(Dong等,2025 (https://arxiv.org/html/2609.00058#bib.bib29);Zhang等,2025 (https://arxiv.org/html/2609.00058#bib.bib31);Chen等,2025a (https://arxiv.org/html/2609.00058#bib.bib32))利用多代理协作和自我改进(Madaan等,2023 (https://arxiv.org/html/2609.00058#bib.bib9))实现无训练的内核生成与优化。然而,它们通常依赖预定义测试输入进行验证和迭代改进中的反馈构建,这可能导致奖励欺骗(Denison等,2024 (https://arxiv.org/html/2609.00058#bib.bib10))和对有缺陷实现的优化。因此,利用代理式CUDA生成对于生成正确且高效的CUDA内核至关重要。
本文提出CUDA-Harness,一个利用代理式从自然语言进行CUDA内核生成与优化的框架。它包含内核生成、验证和优化三个组件,将输入语义理解与验证引导的改进相结合,以提升正确性和效率。实证表明,CUDA-Harness证明自然语言可作为开发正确且高性能CUDA内核的实用接口。我们的贡献包括四点:
- •引入中间结构化生成,弥合Text2CUDA中高层语义理解与底层内核综合之间的鸿沟。
- •构建基于合成的验证,提供隔离的测试数据合成与渐进式验证,以缓解Text2CUDA中的奖励欺骗。
- •提出反馈自适应进化,优先保证正确性以避免优化过程中的错误累积。
- •通过大量实验验证CUDA-Harness的有效性,并通过扩展评估展示其跨LLM、跨硬件平台的泛化能力以及扩展到C到CUDA转译的能力。
## 2 相关工作
开发高性能CUDA内核仍具挑战性,需同时处理算法正确性、验证、硬件特定约束和并行优化。受这些挑战和LLM强大能力的驱动,基于LLM的内核生成受到广泛关注,可分为基于训练和基于代理两类方法。
基于训练的方法通过大规模后训练(包括监督微调SFT和强化学习RL)增强模型生成高性能CUDA内核的能力。例如,CUDA-L1(Li等,2025 (https://arxiv.org/html/2609.00058#bib.bib24))提出对比RL,使用加速比作为奖励信号优化生成质量;ConCuR(Kong等,2025 (https://arxiv.org/html/2609.00058#bib.bib25))生成并整理带有简洁推理轨迹的高质量内核进行SFT;QiMeng-Kernel(Zhu等,2026b (https://arxiv.org/html/2609.00058#bib.bib26))采用RL使轻量级LLM提供高效优化策略;CUDA-Agent(Dai等,2026 (https://arxiv.org/html/2609.00058#bib.bib27))利用大规模数据合成和代理RL增强模型;KernelSmith(Du等,2026 (https://arxiv.org/html/2609.00058#bib.bib28))利用进化轨迹作为后训练信号优化模型作为局部改进器。然而,这些方法在实践中依赖昂贵的高质量内核实现和优化轨迹。
基于代理的方法在测试时通过多代理协作和迭代改进(Madaan等,2023 (https://arxiv.org/html/2609.00058#bib.bib9))生成和优化内核。例如,cuPilot(Chen等,2025a (https://arxiv.org/html/2609.00058#bib.bib32))利用屋顶线引导提示进行多代理内核优化;STARK(Dong等,2025 (https://arxiv.org/html/2609.00058#bib.bib29))将专家CUDA工程抽象为协作代理以探索内核设计空间;ReGraphT(Gong等,2025 (https://arxiv.org/html/2609.00058#bib.bib30))将历史CUDA优化轨迹组织为图以进行高效搜索;CudaForge(Zhang等,2025 (https://arxiv.org/html/2609.00058#bib.bib31))采用双代理循环与分析工具迭代改进生成的内核。然而,由于依赖预定义测试输入指导优化,它们通常容易遭受奖励欺骗。
尽管现有工作取得了显著成功,但它们主要聚焦于Torch2CUDA等转译任务,而非更通用的Text2CUDA。对于Text2CUDA,CUDA-LLM(Chen等,2025b (https://arxiv.org/html/2609.00058#bib.bib33))提供了基于代理的框架,在验证下迭代改进内核实现;CUDABench(Zhu等,2026a (https://arxiv.org/html/2609.00058#bib.bib16))评估了LLM跨多个领域的Text2CUDA能力。然而,这些努力仍受限于现有基于LLM的内核生成方法的局限性。因此,一个利用代理式Text2CUDA的框架至关重要。
## 3 概述
由于自包含CUDA程序是为内核提供编译、执行和验证完整上下文的基本单元,我们分析其组成和执行模型,并在此节介绍CUDA-Harness。
### 3.1 自包含CUDA程序剖析
`__global__ void vecAddInplace(float* a, float* b, int n) { ... }`
图2:简化的自包含CUDA程序。
自包含CUDA程序通常包含必要的头文件、设备端内核和主机端代码。图2(https://arxiv.org/html/2609.00058#S3.F2)展示了一个简化示例。具体而言,设备端内核执行内存访问和并行计算,而主机端代码准备输入、管理内存,并使用适当的启动配置启动内核。除结构外,执行依赖于精心准备的测试输入进行验证和进一步性能测量。此外,由于问题规模和输入维度直接影响CUDA内核运行时观察到的性能瓶颈,模拟输入并不足够。在Torch2CUDA中,输入的PyTorch代码已揭示算法细节,自然提供了测试构建的基础。然而,Text2CUDA仅接受高层但通常规格不全的自然语言意图作为输入,缺乏验证所需的测试数据。
### 3.2 从剖析到CUDA-Harness
根据自包含CUDA程序的剖析,Text2CUDA的挑战如下:
挑战1\[连接意图与实现\]:如何让代理深入理解高层自然语言意图并完成缺失细节是第一个挑战;如何利用完成的信息引导代理生成易于测试的内核实现是另一个挑战。
挑战2\[验证缺失测试数据\]:如何为内核验证合成测试数据是第一个挑战;如何避免因测试数据合成导致的内核实现奖励欺骗是另一个挑战。
我们提出CUDA-Harness解决上述挑战。CUDA-Harness概述见图3(https://arxiv.org/html/2609.00058#S3.F3)。
1中间结构化生成引入两个中间蓝图:内核实现清单和自包含CUDA脚手架。给定自然语言输入,代理首先生成实现清单以外部化语义理解和实现规划。对于清单中的每个条目,代理随后实例化CUDA脚手架,专注于相应内核的具体实现。
2基于合成的验证将测试数据合成与内核生成解耦,允许代理在隔离环境中构建测试输入进行验证。根据渐进式验证的反馈,
3反馈自适应进化在保持正确性的同时优化内核以获得更好性能。当所有清单条目实现完成后,CUDA-Harness收集最佳性能内核及相应的内核启动器用于下游后处理。
## 4 CUDA-Harness
本节介绍CUDA-Harness的组件。
### 4.1 中间结构化生成
在中间结构化生成中,内核实现清单增强高层语义理解,而自包含CUDA脚手架支持底层内核实现。
#### 4.1.1 内核实现清单
内核实现清单是结构化的逐内核规范,每个条目独立存在。每个条目记录实现内核所需的基本信息,包括内核名称、内核输入输出描述、揭示算法细节的功能描述,以及与语言无关的参考代码片段。此外,每个条目携带详细的测试信息,涵盖测试输入输出的形状和数据类型。当代理从自然语言输入生成清单时,它不关注编写具体内核实现的代码,因此可专注于理解高层语义并完成原始输入中未明确的细节。
#### 4.1.2 自包含CUDA脚手架
`[headers]`
`[kernel and launcher declaration]`
`[launcher]`
`[kernel]`
`T* read_binary_file(...){...}`
`T* write_binary_file(...){...}`
`int main(int argc, char** argv){`
`#pragma message("Calling convention: ...")`
`[check arguments and read test inputs]`
`[invoke the launcher function]`
`[write kernel outputs]`
`}`
图4:简化的自包含CUDA脚手架。
自包含CUDA脚手架是一个代码模板,指导代理如何根据清单条目实现自包含CUDA程序。图4(https://arxiv.org/html/2609.00058#S4.F4)展示了一个简化示例。脚手架包含第3.1节(https://arxiv.org/html/2609.00058#S3.SS1)中描述的自包含CUDA程序组件的占位符。在脚手架内,我们将与内核启动相关的操作(包括内存管理、数据传输和启动配置定义)聚合到专用启动器函数中,而非分散在主机端代码中。通过这种安排,代理可以专注于内核及其启动器。相似文章
Kernel Forge:一个基于LLM的CUDA内核生成与优化智能体框架
Kernel Forge是一个开源智能体框架,利用大语言模型和蒙特卡洛树搜索,为任何未经修改的PyTorch模型自动生成并优化CUDA内核,在Gemma 4 E2B的softmax上实现了高达2.83倍的加速。
HarnessX:可组合、自适应且可演进的智能体夹具工坊
HarnessX 是一个为可组合、自适应且可演进的人工智能智能体夹具打造的工坊,它利用组合原语和轨迹驱动演化来提升智能体性能。在五项基准测试中,它平均提升了 +14.5%(最高达 +44.0%),表明运行时接口演化是模型规模扩展之外的一个互补杠杆。
Hawk:利用硬件感知知识实现高性能NPU内核生成
Hawk是一个无需训练的框架,通过利用硬件感知知识来提升大语言模型在NPU内核生成上的表现,将生成准确率从49.4%提升至80.0%,并相比当前最优基线实现最高2.2倍的执行加速。
学习Harness Engineering
Learn Harness Engineering 是一个免费课程,教授AI编码代理的工程原理,涵盖环境设计、状态管理和验证,使像Codex和Claude Code这样的代理更加可靠。
Claude Code 在一夜之间将我的 Agent 框架性能提升了 40%
作者介绍了“Autoharness”,这是一个利用 Claude Code 通过迭代提示词和超参数来自主优化 Agent 框架的工具。在 tau2-airline 基准测试中,该工具使性能提升了 40%。