[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-home-live-entry-setting":3,"site-header-contests":8,"site-header-camps":49,"news-detail-news-51":104},{"enabled":4,"title":5,"statusText":5,"buttonText":5,"campSlug":5,"stage":6,"classroomId":7,"hasClassroom":4},false,"",0,null,{"total":9,"list":10,"pageNum":44,"pageSize":45,"size":9,"startRow":44,"endRow":9,"pages":44,"prePage":6,"nextPage":6,"isFirstPage":46,"isLastPage":46,"hasPreviousPage":4,"hasNextPage":4,"navigatePages":47,"navigatepageNums":48,"navigateFirstPage":44,"navigateLastPage":44},3,[11,25,35],{"slug":12,"title":13,"logo":7,"liveUrl":14,"prize":15,"sponsor":16,"description":17,"organizer":18,"startTime":19,"endTime":20,"registrationDeadline":21,"status":22,"dashboardVisibility":23,"createdAt":24},"spring2026","2026春季启元人工智能大赛","https:\u002F\u002Fwww.bilibili.com\u002Fblackboard\u002Flive\u002Flive-activity-player.html?cid=1822703816&quality=0","200,000","麒麟软件有限公司","“2026春季启元人工智能大赛”是由启元实验室主办的面向全国人工智能领域开发者、科研人员及高校学生的权威赛事。大赛旨在促进与培养具备工程实践能力和创新能力的优秀人工智能领域开发者、推广国产软硬件技术与生态、助力国家人工智能产业高质量发展。\n各参赛选手需在规定的比赛周期内，依据赛事规则选定赛题并完成相应挑战，优胜者将共同角逐总额20万元的赛事奖金池，并且还将有机会获得实习和知名企业优质岗位内推资格。","启元实验室","2026-04-19 16:00:00","2026-07-13 16:00:00","2026-06-16 16:00:00","ongoing","private","2026-04-16 08:00:00",{"slug":26,"title":27,"logo":7,"liveUrl":14,"prize":28,"sponsor":7,"description":29,"organizer":18,"startTime":30,"endTime":31,"registrationDeadline":32,"status":33,"dashboardVisibility":23,"createdAt":34},"autumn2025","2025秋季启元人工智能大赛","150,000","“2025秋季启元人工智能大赛”是由启元实验室主办的面向全国人工智能领域开发者、科研人员及高校学生的权威赛事。大赛旨在促进与培养具备工程实践能力和创新能力的优秀人工智能领域开发者、推广国产软硬件技术与生态、助力国家人工智能产业高质量发展。","2025-11-08 08:00:00","2026-01-13 08:00:00","2025-12-30 08:00:00","ended","2025-11-03 08:00:00",{"slug":36,"title":37,"logo":7,"liveUrl":14,"prize":38,"sponsor":7,"description":39,"organizer":18,"startTime":40,"endTime":41,"registrationDeadline":42,"status":33,"dashboardVisibility":23,"createdAt":43},"summer2025","启元人工智能大赛(系统方向)","80,000","启元人工智能大赛由启元实验室主办，其中系统赛道基于启元实验室九源软件栈的相关开源项目，通过拉动开源社区力量，一方面促进国产智能计算生态的发展，另一方面也为人工智能系统方向的学生及从业者提供一个实践平台。","2025-07-08 08:00:00","2025-08-25 08:00:00","2025-07-22 08:00:00","2025-06-22 08:00:00",1,5,true,8,[44],{"total":45,"list":50,"pageNum":44,"pageSize":45,"size":45,"startRow":44,"endRow":45,"pages":44,"prePage":6,"nextPage":6,"isFirstPage":46,"isLastPage":46,"hasPreviousPage":4,"hasNextPage":4,"navigatePages":47,"navigatepageNums":103,"navigateFirstPage":44,"navigateLastPage":44},[51,62,73,84,94],{"id":52,"slug":53,"title":54,"logo":55,"publicLiveEmbedUrl":14,"description":56,"introduction":57,"organizer":18,"coOrganizer":5,"sponsor":16,"startTime":58,"endTime":59,"status":22,"dashboardVisibility":60,"createdAt":58,"updatedAt":61},"019eeeff-6b00-7d55-a629-efafded3e232","summer2026","2026年夏季InfiniTensor大模型与人工智能系统训练营","https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fuploads\u002F2026-06\u002F019eef7f-7816-7828-9309-79c2c61dd568.jpg?Expires=1792752862&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=7jhC6c%2BeI%2ByMs8RNBhzySuT4GeE%3D","由启元实验室发起的InfiniTensor大模型与人工智能系统训练营，面向开源社区、高校及产业界伙伴开放。活动以「普及AI全栈知识技术、培养工程实践与创新型人才、推广国产软硬件技术生态」为核心目标，助力国家人工智能产业高质量发展。","...","2026-06-22 08:00:00","2026-10-19 08:00:00","public","2026-10-12 08:00:00",{"id":63,"slug":64,"title":65,"logo":66,"publicLiveEmbedUrl":7,"description":67,"introduction":57,"organizer":18,"coOrganizer":5,"sponsor":68,"startTime":69,"endTime":70,"status":33,"dashboardVisibility":23,"createdAt":71,"updatedAt":72},"019af3f3-e06a-7245-aa8d-37dc99a69c73","winter2025","2025年冬季InfiniTensor大模型与人工智能系统训练营","https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fuploads\u002F2025-12\u002F019afc69-b7ca-7805-91fb-605429671c01.png?Expires=1792752862&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=0rRo61EiWbhwmGJspNv9BzbtJCI%3D","由启元实验室发起的InfiniTensor大模型与人工智能系统训练营，面向开源社区、高校及产业界伙伴开放。活动以「普及AI全栈知识技术、培养工程实践与创新型人才、推广国产软硬件技术生态」为核心目标，助力国家人工智能产业高质量发展。 \n","新华三技术有限公司","2025-12-25 08:00:00","2026-03-27 08:00:00","2025-12-06 08:00:00","2026-10-22 20:24:30",{"id":74,"slug":36,"title":75,"logo":76,"publicLiveEmbedUrl":7,"description":77,"introduction":57,"organizer":18,"coOrganizer":5,"sponsor":78,"startTime":79,"endTime":80,"status":81,"dashboardVisibility":23,"createdAt":82,"updatedAt":83},"01980342-208c-7803-b3f3-19e1d31960ba","2025年夏季InfiniTensor大模型与人工智能系统训练营","https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fuploads\u002F2025-07\u002F0198045e-28fe-78f0-95fe-23835ce58395.jpg?Expires=1792752862&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=n0y%2F4NXPDQeULknJYbGX5mCpXws%3D","InfiniTensor大模型与人工智能系统训练营由启元实验室及清华大学 AI 系统方向团队发起，面向开源社区、高校和产业界，普及人工智能各方面知识和技术，培养相关人才。训练营联合开源项目开发者、学术界大牛、工业界资深工程师参与授课与项目指导。课程采用「线上直播授课 + 在线答疑 + 项目实践辅导 」的方式进行，确保每位同学都能获得充分成长。训练营全程免费，通过视频、直播课、习题和项目实践，在人工智能飞速发展的背景下，为学员提供一窥深层技术的机会。","北京积算科技有限公司","2025-07-14 08:00:00","2025-09-30 08:00:00","upcoming","2025-07-13 08:00:00","2026-10-22 20:24:58",{"id":85,"slug":86,"title":87,"logo":88,"publicLiveEmbedUrl":7,"description":89,"introduction":57,"organizer":18,"coOrganizer":5,"sponsor":5,"startTime":90,"endTime":91,"status":81,"dashboardVisibility":23,"createdAt":92,"updatedAt":93},"01980cf9-a7d8-7796-ae86-0bbe05334add","winter2024","2024年冬季InfiniTensor大模型与人工智能系统训练营","https:\u002F\u002Ftesting-cdn.infinitensor.com\u002Fuploads\u002F2025-07\u002F01981269-ce23-7624-a287-9f07dd0d85f6.jpg","InfiniTensor大模型与人工智能系统训练营由清华大学发起，面向开源社区、高校和产业界，普及人工智能各方面知识和技术，培养相关人才。训练营全程免费，通过视频、直播课、习题和项目实践，在人工智能飞速发展的背景下，为学员提供一窥深层技术的机会。报名学员请阅读“导学”课程页的训练营介绍。","2025-01-05 08:00:00","2025-03-22 08:00:00","2025-07-15 08:00:00","2026-10-22 20:24:39",{"id":95,"slug":96,"title":97,"logo":98,"publicLiveEmbedUrl":7,"description":99,"introduction":57,"organizer":18,"coOrganizer":5,"sponsor":5,"startTime":100,"endTime":101,"status":81,"dashboardVisibility":23,"createdAt":92,"updatedAt":102},"01980c20-363a-7dc3-8f5a-58a68e08dcc4","summer2024","2024年夏季InfiniTensor大模型与人工智能系统训练营","https:\u002F\u002Ftesting-cdn.infinitensor.com\u002Fuploads\u002F2025-07\u002F01981269-fbfa-788a-afcd-17fa9be74ff9.jpg","InfiniTensor大模型与人工智能系统训练营由清华大学发起，面向开源社区和高校，普及人工智能各方面知识和技术，培养相关人才。训练营全程免费，通过课程、习题和项目实践，在人工智能飞速发展的背景下，为学员提供一窥深层技术的机会。","2024-07-20 08:00:00","2024-09-29 08:00:00","2026-10-22 20:24:49",[44],{"newsDetail":105,"processedData":125},{"publishTime":106,"img":107,"keywords":108,"treeType":44,"showStatus":44,"updateTime":109,"type":44,"title":110,"content":111,"nextArticle":112,"createTime":109,"sortOrder":117,"canonicalPath":118,"id":119,"contentType":120,"prevArticle":121},"2026-07-03 08:00:00","https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002Fportal_news\u002Fnews_logo_fm.jpg?Expires=1792752862&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=vYIv%2FLwuidqRmMOm4eZ7yWE2J5w%3D","九齿编译器,SSA IR,多后端代码生成,大模型辅助开发,Lowering Pipeline,编译器框架","2026-10-22 20:38:11","不到 10 天，用大模型“搓”一个编译器","在不到 10 天的时间里，和大模型一起，把**九齿 Ninetoothed** 从一个主要生成 Triton 代码的 DSL，推进成了一个**具备 SSA IR、lowering pipeline、pass registry 和多后端代码生成雏形的编译器框架**。\r\n\r\n这一过程最有意思的地方并非“大模型写了多少代码”，而是“大模型并非天然会做编译器”。若仅提出“支持 CUDA、TileLang、TVM 后端”的需求，它极易倾向于选择最直接却也最危险的路径——为每个算子编写独立的 Kernel 模板。\r\n\r\n例如，遇到 matmul，就写 `lower_matmul`；遇到 reduction，就写 `lower_reduction`；遇到 flash attention，就写 `lower_flash_attention`。这样看起来很快能跑通几个 demo，但它不是编译器，只是一堆特化代码生成器。\r\n\r\n真正的目标是：输入只有九齿代码，编译器需要理解计算过程，将其降低为通用 IR，随后逐步 lower 至不同后端语言，而非在中间环节识别“这是 attention”，然后替换成一个手写模板。\r\n\r\n### 第一步：重新定义问题\r\n\r\n一开始给大模型的需求很宽泛：九齿要支持 Triton、CUDA、TileLang、TVM 多个后端。但很快会发现，若问题定义不够精确，大模型往往会采用“工程捷径”，倾向于生成针对 Kernel 的字符串模板，使 add、matmul、reduction、attention 这些典型算子看起来能过。\r\n\r\n于是需求约束被不断收紧：任务不再是编写几个后端 Kernel，不再是识别算子名称，也不再是引入 `AttentionOpIR` 这种粗粒度的 IR。\r\n\r\n核心要求变为**从九齿的 Python application 里抽象出计算过程本身，形成细粒度的 IR**，涵盖算术、访存、shape、index、loop、if、reduce、dot、store 等基本操作。这才是编译器。\r\n\r\n### 第二步：把“大模型写 kernel”的冲动拉回编译器路线\r\n\r\n这个过程中最关键的纠偏环节，在于明确要求 IR 的粒度不能宽泛到“一个算子一个节点”。\r\n\r\n也就是说，不应出现：\r\n\r\n```text\r\nAttentionOpIR\r\nFlashAttentionOpIR\r\nMatmulKernelTemplate\r\nlower_flash_attention\r\n```\r\n\r\n应当构建的是：\r\n\r\n```text\r\narith.add\r\narith.mul\r\ntensor.extract\r\nlinalg.dot\r\nreduce.max\r\nreduce.sum\r\nscf.for\r\nscf.if\r\nselect.where\r\nmem.store\r\n```\r\n\r\n这样，flash attention 不再是一个特殊算子，而是一段由 dot、mask、online softmax、循环状态和归约组成的计算图。\r\n\r\n此时，大模型才开始真正沿着编译器的逻辑路径进行思考与代码生成。\r\n\r\n### 第三步：引入 SSA IR\r\n\r\n把九齿的 application Python AST lower 到 SSA 风格 IR。\r\n\r\n一个最简单的 add：\r\n\r\n```python\r\ndef application(x, y, out):\r\n    out = x + y\r\n```\r\n会变成类似：\r\n\r\n```text\r\nssa @elementwise_add {\r\n  inputs:\r\n    x : tensor\u003CBLOCK_SIZE>\r\n    y : tensor\u003CBLOCK_SIZE>\r\n    out : tensor\u003CBLOCK_SIZE>\r\n  outputs:\r\n    out : tensor\u003CBLOCK_SIZE>\r\n  ^entry:\r\n    %0 = arith.add x, y\r\n    mem.store %0, out\r\n}\r\n```\r\nmatmul 则先表示成结构化 linalg：\r\n```text\r\n%0 = linalg.matmul lhs, rhs\r\nmem.store %0, output\r\n```\r\n后续再通过 pass lower 成 index、loop、extract、mul、add、store。\r\n\r\nflash attention 的参考实现也能被拆成：\r\n```text\r\nscf.for\r\nscf.if\r\nlinalg.dot\r\nlinalg.transpose\r\nreduce.max\r\nreduce.sum\r\nmath.exp2\r\nselect.where\r\ntensor.extract\r\ntensor.view\r\nmem.store\r\n```\r\n\r\n此时， IR 已不再依赖于“算子名称”，而是在表达计算本身，从而为后续的优化与后端适配奠定了基础。\r\n\r\n### 第四步：设计 Pass Pipeline\r\n\r\n有了 IR 之后，下一步是 Pass。\r\n\r\n把优化与 lowering 划分为三类：\r\n\r\n```text\r\nhardware-independent passes\r\nhardware-dependent passes\r\nbackend-specific passes\r\n```\r\n\r\n默认 pipeline 类似：\r\n\r\n```text\r\nssa.canonicalize\r\nssa.analyze_effects\r\nssa.select_schedule\r\nssa.\u003Cbackend>.optimize_schedule\r\nssa.decompose_linalg\r\nssa.lower_memory_scopes\r\nssa.lower_backend_intrinsics\r\n```\r\n每个 pass 都只做一件事：\r\n\r\n- `canonicalize` 确认 IR 进入 generic SSA 形态。\r\n\r\n- `analyze_effects` 分析是否有 dot、reduction、loop、store、attention-like exp-reduction-dot pattern。\r\n\r\n- `select_schedule` 根据 IR 形态选择 elementwise-grid、blocked-linalg、exp-reduction-dot-region 等调度粒度。\r\n\r\n- `backend.optimize_schedule` 为 Triton、CUDA、TileLang、TVM 分别附加后端策略。\r\n\r\n- `decompose_linalg` 把高层 linalg 下降成更低层 loop\u002Findex\u002Ftensor\u002Farith。\r\n\r\n- `lower_memory_scopes` 加入 register\u002Fshared\u002Fglobal 的后端映射。\r\n\r\n- `lower_backend_intrinsics` 选择 `tl.program_id`、`blockIdx\u002FthreadIdx`、`T.thread_binding` 等目标后端概念。\r\n\r\n\r\n### 第五步：统一后端代码生成\r\n\r\n在此架构下，后端不再是：\r\n\r\n```text\r\nif matmul: lower_matmul()\r\nif reduction: lower_reduction()\r\nif flash_attention: lower_flash_attention()\r\n```\r\n而是统一走：\r\n```text\r\nlower_unified_ssa_artifact(kernel, backend)\r\n```\r\n**区别只在 target spelling：**\r\n\r\n- Triton 生成 `tl.load`、`tl.store`、`tl.where`。\r\n\r\n- CUDA 生成 pointer load\u002Fstore、`blockIdx.x`、`threadIdx.x`、C++ loop。\r\n\r\n- TileLang 生成 `T.prim_func`、`T.thread_binding`、`T.match_buffer`。\r\n\r\n- TVM 生成 TVMScript\u002FTIR。\r\n\r\n这才使得多后端支持开始具备泛化性。\r\n\r\n### 第六步：测试和反复纠偏\r\n\r\n在整个过程中，测试不仅用于验证正确性，同时也是防止大模型回归“模板化捷径”的约束。\r\n\r\n测试策略包含多个维度：\r\n- 检查后端文件中是否存在特化的 Lowering 入口，如 `lower_matmul`、`lower_flash_attention` ；\r\n- 验证 add、matmul、reduction、rowwise、fused expression、attention 各类算子是否统一走 SSA Lowering 流程；\r\n- 确认四个后端是否能从同一份 SSA 生成可运行代码；\r\n- 检查 pass trace，确保每一层 IR 都是逐步 Lower 而来。\r\n\r\n这些测试确保了交付成果不仅“看起来能用”，而且在结构上符合编译器的标准。\r\n\r\n### 最有价值的经验\r\n\r\n此次实践表明，大模型擅长代码生成，但对“系统边界”的理解往往不够深刻。若指令仅停留在“支持某功能”，模型倾向于寻找捷径；若目标是“设计编译器”，则必须持续引导其关注核心概念：\r\n- IR 是什么？\r\n- IR 的粒度应该多细？\r\n- Lowering 每一步增加什么信息？\r\n- Pass 是否语义清晰？\r\n- 后端差异应该在哪里进入？\r\n- 优化策略是写死在 emitter，还是沉淀成 pass？\r\n- 有没有测试证明这不是模板拼接？\r\n\r\n通过明确这些约束，大模型得以从单纯的代码生成器转变为编译器开发的协作者。\r\n\r\n### 最后沉淀成 Skill\r\n\r\n此次开发过程还沉淀出一组面向编译器开发的 skill，例如：\r\n\r\n- compiler-ir-architecture\r\n- compiler-ssa-lowering\r\n- compiler-pass-pipeline\r\n- compiler-backend-emitter\r\n- compiler-lowering-audit\r\n- compiler-multibackend-porting\r\n- compiler-performance-tuning\r\n- compiler-validation-reporting\r\n\r\n这些 skill 的目标，是让之后的大模型不再从“写 kernel 模板”开始，而是默认按照编译器的方式工作。\r\n\r\n>目前，这套专门为编译器开发使用的 skill 也已经开源成为 **Ninetoothed.skill 仓库**（https:\u002F\u002Fgithub.com\u002FInfiniTensor\u002Fninetoothed.skill）。\r\n\r\n\r\n综上，“不到10天，用大模型搓了一个编译器”这句话，其价值不在于开发速度，而在于验证了一个事实：大模型能够快速生成代码，但要让它写出一个像样的系统，人需要不断定义边界、纠正抽象层级、补足验证方法，并把这些经验沉淀成可复用的工作流。\r\n\r\n这可能才是大模型辅助基础软件开发最有价值的地方。\r\n\r\n\r\n## 🔥**2026 夏季 InfiniTensor 训练营报名火热进行中！**\r\n\r\n欢迎访问 **InfiniTensor 官网**（https:\u002F\u002Fwww.infinitensor.com ）查看报名信息，**关注公众号**获取更多相关内容。\r\n\r\n扫描下方二维码，加入**训练营官方社群**：\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002Fportal_news\u002F2026-xjq.png?Expires=1792752862&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=kAEagCblFUrmvkSXpwPMwIHGfMM%3D)\r\n\r\n### 关注与交流\r\n\r\n![](https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002Fportal_news\u002Fnews_ewm02.jpg?Expires=1792752862&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=4tOuX07FukshnxwpKRgkLQ6EJpI%3D)",{"publishTime":113,"createTime":109,"canonicalPath":114,"id":115,"title":116},"2026-06-23 08:00:00","\u002Fnews\u002Fnews-50","news-50","【论文分享】MSCCL++：让 GPU 通信像 CUDA 一样可编程",23,"\u002Fnews\u002Fnews-51","news-51","markdown",{"publishTime":106,"createTime":109,"canonicalPath":122,"id":123,"title":124},"\u002Fnews\u002Fnews-52","news-52","九源智能计算生态联合体走进兰州大学，共探国产智能计算人才培养新路径",{"htmlContent":126,"headings":127},"\u003Cp>在不到 10 天的时间里，和大模型一起，把\u003Cstrong>九齿 Ninetoothed\u003C\u002Fstrong> 从一个主要生成 Triton 代码的 DSL，推进成了一个\u003Cstrong>具备 SSA IR、lowering pipeline、pass registry 和多后端代码生成雏形的编译器框架\u003C\u002Fstrong>。\u003C\u002Fp>\n\u003Cp>这一过程最有意思的地方并非“大模型写了多少代码”，而是“大模型并非天然会做编译器”。若仅提出“支持 CUDA、TileLang、TVM 后端”的需求，它极易倾向于选择最直接却也最危险的路径——为每个算子编写独立的 Kernel 模板。\u003C\u002Fp>\n\u003Cp>例如，遇到 matmul，就写 \u003Ccode>lower_matmul\u003C\u002Fcode>；遇到 reduction，就写 \u003Ccode>lower_reduction\u003C\u002Fcode>；遇到 flash attention，就写 \u003Ccode>lower_flash_attention\u003C\u002Fcode>。这样看起来很快能跑通几个 demo，但它不是编译器，只是一堆特化代码生成器。\u003C\u002Fp>\n\u003Cp>真正的目标是：输入只有九齿代码，编译器需要理解计算过程，将其降低为通用 IR，随后逐步 lower 至不同后端语言，而非在中间环节识别“这是 attention”，然后替换成一个手写模板。\u003C\u002Fp>\n\u003Ch3 id=\"第一步-重新定义问题\">\u003Ca class=\"anchor\" href=\"#第一步-重新定义问题\" aria-label=\"跳转到标题：第一步：重新定义问题\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>第一步：重新定义问题\u003C\u002Fh3>\u003Cp>一开始给大模型的需求很宽泛：九齿要支持 Triton、CUDA、TileLang、TVM 多个后端。但很快会发现，若问题定义不够精确，大模型往往会采用“工程捷径”，倾向于生成针对 Kernel 的字符串模板，使 add、matmul、reduction、attention 这些典型算子看起来能过。\u003C\u002Fp>\n\u003Cp>于是需求约束被不断收紧：任务不再是编写几个后端 Kernel，不再是识别算子名称，也不再是引入 \u003Ccode>AttentionOpIR\u003C\u002Fcode> 这种粗粒度的 IR。\u003C\u002Fp>\n\u003Cp>核心要求变为\u003Cstrong>从九齿的 Python application 里抽象出计算过程本身，形成细粒度的 IR\u003C\u002Fstrong>，涵盖算术、访存、shape、index、loop、if、reduce、dot、store 等基本操作。这才是编译器。\u003C\u002Fp>\n\u003Ch3 id=\"第二步-把-大模型写-kernel-的冲动拉回编译器路线\">\u003Ca class=\"anchor\" href=\"#第二步-把-大模型写-kernel-的冲动拉回编译器路线\" aria-label=\"跳转到标题：第二步：把“大模型写 kernel”的冲动拉回编译器路线\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>第二步：把“大模型写 kernel”的冲动拉回编译器路线\u003C\u002Fh3>\u003Cp>这个过程中最关键的纠偏环节，在于明确要求 IR 的粒度不能宽泛到“一个算子一个节点”。\u003C\u002Fp>\n\u003Cp>也就是说，不应出现：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">AttentionOpIR\nFlashAttentionOpIR\nMatmulKernelTemplate\nlower_flash_attention\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>应当构建的是：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">arith.add\narith.mul\ntensor.extract\nlinalg.dot\nreduce.max\nreduce.sum\nscf.for\nscf.if\nselect.where\nmem.store\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>这样，flash attention 不再是一个特殊算子，而是一段由 dot、mask、online softmax、循环状态和归约组成的计算图。\u003C\u002Fp>\n\u003Cp>此时，大模型才开始真正沿着编译器的逻辑路径进行思考与代码生成。\u003C\u002Fp>\n\u003Ch3 id=\"第三步-引入-ssa-ir\">\u003Ca class=\"anchor\" href=\"#第三步-引入-ssa-ir\" aria-label=\"跳转到标题：第三步：引入 SSA IR\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>第三步：引入 SSA IR\u003C\u002Fh3>\u003Cp>把九齿的 application Python AST lower 到 SSA 风格 IR。\u003C\u002Fp>\n\u003Cp>一个最简单的 add：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-python\">def application(x, y, out):\n    out = x + y\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>会变成类似：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">ssa @elementwise_add {\n  inputs:\n    x : tensor&lt;BLOCK_SIZE&gt;\n    y : tensor&lt;BLOCK_SIZE&gt;\n    out : tensor&lt;BLOCK_SIZE&gt;\n  outputs:\n    out : tensor&lt;BLOCK_SIZE&gt;\n  ^entry:\n    %0 = arith.add x, y\n    mem.store %0, out\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>matmul 则先表示成结构化 linalg：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">%0 = linalg.matmul lhs, rhs\nmem.store %0, output\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>后续再通过 pass lower 成 index、loop、extract、mul、add、store。\u003C\u002Fp>\n\u003Cp>flash attention 的参考实现也能被拆成：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">scf.for\nscf.if\nlinalg.dot\nlinalg.transpose\nreduce.max\nreduce.sum\nmath.exp2\nselect.where\ntensor.extract\ntensor.view\nmem.store\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>此时， IR 已不再依赖于“算子名称”，而是在表达计算本身，从而为后续的优化与后端适配奠定了基础。\u003C\u002Fp>\n\u003Ch3 id=\"第四步-设计-pass-pipeline\">\u003Ca class=\"anchor\" href=\"#第四步-设计-pass-pipeline\" aria-label=\"跳转到标题：第四步：设计 Pass Pipeline\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>第四步：设计 Pass Pipeline\u003C\u002Fh3>\u003Cp>有了 IR 之后，下一步是 Pass。\u003C\u002Fp>\n\u003Cp>把优化与 lowering 划分为三类：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">hardware-independent passes\nhardware-dependent passes\nbackend-specific passes\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>默认 pipeline 类似：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">ssa.canonicalize\nssa.analyze_effects\nssa.select_schedule\nssa.&lt;backend&gt;.optimize_schedule\nssa.decompose_linalg\nssa.lower_memory_scopes\nssa.lower_backend_intrinsics\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>每个 pass 都只做一件事：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cp>\u003Ccode>canonicalize\u003C\u002Fcode> 确认 IR 进入 generic SSA 形态。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>\u003Ccode>analyze_effects\u003C\u002Fcode> 分析是否有 dot、reduction、loop、store、attention-like exp-reduction-dot pattern。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>\u003Ccode>select_schedule\u003C\u002Fcode> 根据 IR 形态选择 elementwise-grid、blocked-linalg、exp-reduction-dot-region 等调度粒度。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>\u003Ccode>backend.optimize_schedule\u003C\u002Fcode> 为 Triton、CUDA、TileLang、TVM 分别附加后端策略。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>\u003Ccode>decompose_linalg\u003C\u002Fcode> 把高层 linalg 下降成更低层 loop\u002Findex\u002Ftensor\u002Farith。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>\u003Ccode>lower_memory_scopes\u003C\u002Fcode> 加入 register\u002Fshared\u002Fglobal 的后端映射。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>\u003Ccode>lower_backend_intrinsics\u003C\u002Fcode> 选择 \u003Ccode>tl.program_id\u003C\u002Fcode>、\u003Ccode>blockIdx\u002FthreadIdx\u003C\u002Fcode>、\u003Ccode>T.thread_binding\u003C\u002Fcode> 等目标后端概念。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"第五步-统一后端代码生成\">\u003Ca class=\"anchor\" href=\"#第五步-统一后端代码生成\" aria-label=\"跳转到标题：第五步：统一后端代码生成\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>第五步：统一后端代码生成\u003C\u002Fh3>\u003Cp>在此架构下，后端不再是：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">if matmul: lower_matmul()\nif reduction: lower_reduction()\nif flash_attention: lower_flash_attention()\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>而是统一走：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-text\">lower_unified_ssa_artifact(kernel, backend)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>区别只在 target spelling：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cp>Triton 生成 \u003Ccode>tl.load\u003C\u002Fcode>、\u003Ccode>tl.store\u003C\u002Fcode>、\u003Ccode>tl.where\u003C\u002Fcode>。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>CUDA 生成 pointer load\u002Fstore、\u003Ccode>blockIdx.x\u003C\u002Fcode>、\u003Ccode>threadIdx.x\u003C\u002Fcode>、C++ loop。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>TileLang 生成 \u003Ccode>T.prim_func\u003C\u002Fcode>、\u003Ccode>T.thread_binding\u003C\u002Fcode>、\u003Ccode>T.match_buffer\u003C\u002Fcode>。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>TVM 生成 TVMScript\u002FTIR。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>这才使得多后端支持开始具备泛化性。\u003C\u002Fp>\n\u003Ch3 id=\"第六步-测试和反复纠偏\">\u003Ca class=\"anchor\" href=\"#第六步-测试和反复纠偏\" aria-label=\"跳转到标题：第六步：测试和反复纠偏\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>第六步：测试和反复纠偏\u003C\u002Fh3>\u003Cp>在整个过程中，测试不仅用于验证正确性，同时也是防止大模型回归“模板化捷径”的约束。\u003C\u002Fp>\n\u003Cp>测试策略包含多个维度：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>检查后端文件中是否存在特化的 Lowering 入口，如 \u003Ccode>lower_matmul\u003C\u002Fcode>、\u003Ccode>lower_flash_attention\u003C\u002Fcode> ；\u003C\u002Fli>\n\u003Cli>验证 add、matmul、reduction、rowwise、fused expression、attention 各类算子是否统一走 SSA Lowering 流程；\u003C\u002Fli>\n\u003Cli>确认四个后端是否能从同一份 SSA 生成可运行代码；\u003C\u002Fli>\n\u003Cli>检查 pass trace，确保每一层 IR 都是逐步 Lower 而来。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>这些测试确保了交付成果不仅“看起来能用”，而且在结构上符合编译器的标准。\u003C\u002Fp>\n\u003Ch3 id=\"最有价值的经验\">\u003Ca class=\"anchor\" href=\"#最有价值的经验\" aria-label=\"跳转到标题：最有价值的经验\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>最有价值的经验\u003C\u002Fh3>\u003Cp>此次实践表明，大模型擅长代码生成，但对“系统边界”的理解往往不够深刻。若指令仅停留在“支持某功能”，模型倾向于寻找捷径；若目标是“设计编译器”，则必须持续引导其关注核心概念：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>IR 是什么？\u003C\u002Fli>\n\u003Cli>IR 的粒度应该多细？\u003C\u002Fli>\n\u003Cli>Lowering 每一步增加什么信息？\u003C\u002Fli>\n\u003Cli>Pass 是否语义清晰？\u003C\u002Fli>\n\u003Cli>后端差异应该在哪里进入？\u003C\u002Fli>\n\u003Cli>优化策略是写死在 emitter，还是沉淀成 pass？\u003C\u002Fli>\n\u003Cli>有没有测试证明这不是模板拼接？\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>通过明确这些约束，大模型得以从单纯的代码生成器转变为编译器开发的协作者。\u003C\u002Fp>\n\u003Ch3 id=\"最后沉淀成-skill\">\u003Ca class=\"anchor\" href=\"#最后沉淀成-skill\" aria-label=\"跳转到标题：最后沉淀成 Skill\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>最后沉淀成 Skill\u003C\u002Fh3>\u003Cp>此次开发过程还沉淀出一组面向编译器开发的 skill，例如：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>compiler-ir-architecture\u003C\u002Fli>\n\u003Cli>compiler-ssa-lowering\u003C\u002Fli>\n\u003Cli>compiler-pass-pipeline\u003C\u002Fli>\n\u003Cli>compiler-backend-emitter\u003C\u002Fli>\n\u003Cli>compiler-lowering-audit\u003C\u002Fli>\n\u003Cli>compiler-multibackend-porting\u003C\u002Fli>\n\u003Cli>compiler-performance-tuning\u003C\u002Fli>\n\u003Cli>compiler-validation-reporting\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>这些 skill 的目标，是让之后的大模型不再从“写 kernel 模板”开始，而是默认按照编译器的方式工作。\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>目前，这套专门为编译器开发使用的 skill 也已经开源成为 \u003Cstrong>Ninetoothed.skill 仓库\u003C\u002Fstrong>（\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FInfiniTensor\u002Fninetoothed.skill%EF%BC%89%E3%80%82\">https:\u002F\u002Fgithub.com\u002FInfiniTensor\u002Fninetoothed.skill）。\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>综上，“不到10天，用大模型搓了一个编译器”这句话，其价值不在于开发速度，而在于验证了一个事实：大模型能够快速生成代码，但要让它写出一个像样的系统，人需要不断定义边界、纠正抽象层级、补足验证方法，并把这些经验沉淀成可复用的工作流。\u003C\u002Fp>\n\u003Cp>这可能才是大模型辅助基础软件开发最有价值的地方。\u003C\u002Fp>\n\u003Ch2 id=\"2026-夏季-infinitensor-训练营报名火热进行中\">\u003Ca class=\"anchor\" href=\"#2026-夏季-infinitensor-训练营报名火热进行中\" aria-label=\"跳转到标题：🔥2026 夏季 InfiniTensor 训练营报名火热进行中！\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>🔥\u003Cstrong>2026 夏季 InfiniTensor 训练营报名火热进行中！\u003C\u002Fstrong>\u003C\u002Fh2>\u003Cp>欢迎访问 \u003Cstrong>InfiniTensor 官网\u003C\u002Fstrong>（\u003Ca href=\"https:\u002F\u002Fwww.infinitensor.com\">https:\u002F\u002Fwww.infinitensor.com\u003C\u002Fa> ）查看报名信息，\u003Cstrong>关注公众号\u003C\u002Fstrong>获取更多相关内容。\u003C\u002Fp>\n\u003Cp>扫描下方二维码，加入\u003Cstrong>训练营官方社群\u003C\u002Fstrong>：\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002Fportal_news\u002F2026-xjq.png?Expires=1792752862&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=kAEagCblFUrmvkSXpwPMwIHGfMM%3D\" alt=\"\">\u003C\u002Fp>\n\u003Ch3 id=\"关注与交流\">\u003Ca class=\"anchor\" href=\"#关注与交流\" aria-label=\"跳转到标题：关注与交流\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>关注与交流\u003C\u002Fh3>\u003Cp>\u003Cimg src=\"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002Fportal_news\u002Fnews_ewm02.jpg?Expires=1792752862&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=4tOuX07FukshnxwpKRgkLQ6EJpI%3D\" alt=\"\">\u003C\u002Fp>\n",[128,131,134,137,140,143,146,148,151,155],{"id":129,"text":130,"level":9},"第一步-重新定义问题","第一步：重新定义问题",{"id":132,"text":133,"level":9},"第二步-把-大模型写-kernel-的冲动拉回编译器路线","第二步：把“大模型写 kernel”的冲动拉回编译器路线",{"id":135,"text":136,"level":9},"第三步-引入-ssa-ir","第三步：引入 SSA IR",{"id":138,"text":139,"level":9},"第四步-设计-pass-pipeline","第四步：设计 Pass Pipeline",{"id":141,"text":142,"level":9},"第五步-统一后端代码生成","第五步：统一后端代码生成",{"id":144,"text":145,"level":9},"第六步-测试和反复纠偏","第六步：测试和反复纠偏",{"id":147,"text":147,"level":9},"最有价值的经验",{"id":149,"text":150,"level":9},"最后沉淀成-skill","最后沉淀成 Skill",{"id":152,"text":153,"level":154},"2026-夏季-infinitensor-训练营报名火热进行中","🔥2026 夏季 InfiniTensor 训练营报名火热进行中！",2,{"id":156,"text":156,"level":9},"关注与交流"]