源码系统概览
文章正文
ForgeStencil 是 OpenBMB 开源的模板计算算子优化项目,核心思路是让大模型智能体自己写并调优 CUDA 内核。
它把生成、编译、测量、迭代做成了闭环,而不是丢一段提示词就完事。
对做编译优化、算子调优或者高性能计算方向的人来说,这份源码的工程组织方式很值得看。
源码简介
仓库主要由 agents、kernel、harness、baselines、operator_bench、applications 六个目录构成。
agents 目录承载智能体侧逻辑,负责生成候选内核实现并根据测量结果继续改写。
kernel 目录是生成产物与手工优化实现的集合,可以看到 apply_stencil 这类统一入口,以及按应用拆分的内核文件。
kernel 内部还有 get_stencil 与 make_star、make_box、make_diamond 等形状构造函数,用来描述不同的模板计算算子。
harness 目录提供端到端运行与测量脚本,run_e2e 负责跑通完整流程,measure_e2e 负责重复采样取中位数。
baselines 目录接了多套对照实现,包括 ConvStencil、Ebisu、DRStencil、Halide 等,用于横向比较。
operator_bench 目录规模最大,收录了二十多个真实科学计算应用的基准内核,涵盖地震波模拟、等离子体、电磁场、格子玻尔兹曼等方向。
适用场景
适合做 GPU 算子优化的工程师,参考智能体如何在生成与测量之间迭代收敛。
适合高性能计算研究者,直接复用内置的应用基准做横向对比实验。
适合编译器与代码生成方向的团队,观察一套完整的自动调优流水线怎么落地。
也适合作为教学材料,展示模板计算这类经典问题在现代硬件上的优化空间。
功能亮点
双智能体协作生成内核,生成与评审分工明确,避免单轮输出直接当结果用。
端到端测量框架完备,支持多次采样与交错测量,尽量压掉单次运行的抖动。
内置二十余个真实应用基准,覆盖面比常见的合成算例宽得多。
接了多套公开对照基线,实验结论有横向参照而不是自说自话。
内核形状构造做了抽象,星形、盒形、菱形等模板可以统一描述与切换。
结果目录保留了运行记录,方便复现与追溯每一次调优的数据。
技术架构与部署指南
| 维度 | 本套源码 | 同类通用方案 |
|---|---|---|
| 技术栈 | 前端:无网页前端界面,全部通过命令行脚本驱动,没有管理后台 后端:Python 编写的调度与智能体逻辑,配合 CUDA |
依具体方案选型,需自行搭建与维护 |
| 部署方式 | 先用 git 拉取仓库,确认本机已安装 CUDA 工具链并能正常编译。 | 多托管于第三方平台或订阅云服务 |
| 功能侧重 | 双智能体协作生成内核,生成与评审分工明确,避免单轮输出直接当结果用。 | 功能通用,定制深度有限 |
| 数据归属 | 数据自持,部署在自有服务器,不出站 | 数据通常留存于服务商侧 |
| 成本模式 | 获取后自主部署,无持续授权费用 | 通常按订阅或调用量计费 |
技术栈与运行环境
前端:无网页前端界面,全部通过命令行脚本驱动,没有管理后台
后端:Python 编写的调度与智能体逻辑,配合 CUDA C++ 内核代码,另有上百个 Shell 脚本负责编译与批量运行
数据库:不依赖数据库,实验数据以 JSON 与文本结果文件形式落在 results 目录
运行环境:Linux 服务器加 NVIDIA GPU,需要安装 CUDA 工具链与配套编译器
其他依赖:NumPy、CuPy 等 Python 科学计算库,以及各对照基线自身的编译依赖
安装与部署提示
先用 git 拉取仓库,确认本机已安装 CUDA 工具链并能正常编译。
按 README 提示安装 Python 依赖,之后用一行导入语句验证 NumPy 与 CuPy 是否可用。
可以先用 tools 目录下的运行脚本跑一个小规模模板算例,确认 GPU 能被正确识别。
端到端流程通过 harness 目录的脚本启动,指定应用名称与显卡编号即可。
对照基线需要单独编译,缺少某个基线时相关对比会自动跳过。
智能体环节需要配置可访问的大模型接口,密钥请通过环境变量注入而不要写进脚本。
截图与演示说明
本项目没有网页界面,运行过程全部在终端完成,因此这里用代码结构代替截图说明。
跑通 harness 目录的端到端脚本后,终端会依次打印应用名称、编译状态、运行耗时与中位数结果。
kernel 目录下能看到每个应用对应的内核源文件,文件名区分原始实现与优化实现,方便直接对读差异。
operator_bench 目录里每个应用都带有基准程序与优化版本两份入口,可以单独编译运行观察加速比。
results 目录保存历次运行产出的结果文件,是复现实验数据的主要依据。
baselines 目录的运行脚本会输出各对照实现的耗时,和本项目结果并列展示便于比较。
常见问题
问:没有显卡能跑吗?
不能完整运行,内核编译与测量都依赖 NVIDIA GPU 环境。
问:智能体部分必须联网吗?
生成环节需要调用大模型接口,如果只想跑已有内核和基准,可以跳过智能体直接用 kernel 目录的实现。
问:二十多个应用都要装吗?
不需要,运行脚本按应用名称单独执行,缺少依赖的应用跳过即可。
问:结果能直接引用吗?
结果受硬件型号和驱动版本影响较大,建议在自己的机器上重新测量。
安全风险提示
特别提示:本源码未检测安全风险文件,下载后请务必进行安全审计,删除恶意代码后再部署使用!
下载说明
本源码采用 Apache-2.0 许可,下载后可用于学习研究与本地实验。
源码仅供学习研究、测试部署和二次开发参考,商用前请自行确认授权、版权和安全风险。
项目会在本地编译并执行生成的内核代码,请在隔离的实验环境中运行,不要直接放到生产集群上跑未审阅的生成产物。
调用大模型接口时请通过环境变量管理密钥,避免凭据随脚本一起泄露。
GitHub项目开源地址:https://github.com/OpenBMB/ForgeStencil