CANN/cannbot-skills: HFusion→HIVM 转换规则 HFusion→HIVM 转换规则【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills本文档详细描述 HFusion 方言到 HIVM 方言的转换 Pass。源码参考Conversion/Passes.td1. 转换概述HFusion→HIVM 转换是 BishengIR 编译流水线的关键步骤将高级算子融合图转换为硬件指令映射图。此转换决定了算子如何映射到具体的硬件执行单元Cube/Vector/DMA。┌─────────────────────────────────────────────────┐ │ HFusion Dialect │ │ 融合后的命名算子 linalg.generic │ │ 调度信息 tiling 信息 │ └──────────────────────┬──────────────────────────┘ │ │ ConvertHFusionToHIVM │ ▼ ┌─────────────────────────────────────────────────┐ │ HIVM Dialect │ │ 硬件指令映射Cube/Vector/DMA │ │ 内存规划 同步 多缓冲 │ └─────────────────────────────────────────────────┘2. ConvertHFusionToHIVM2.1 Pass 定义项目内容Pass 名称ConvertHFusionToHIVMCLI 参数convert-hfusion-to-hivm作用域ModuleOp构造函数mlir::createConvertHFusionToHIVMPass()依赖方言func::FuncDialect,hivm::HIVMDialect,memref::MemRefDialect,arith::ArithDialect,affine::AffineDialect,scf::SCFDialect,vector::VectorDialect,linalg::LinalgDialect2.2 Pass 选项选项类型默认值说明mm-map-modeMmMapModecore_op矩阵乘法映射模式2.3 mm-map-mode 选项详解mm-map-mode控制矩阵乘法算子如何映射到 HIVM 指令模式枚举值说明core_opCoreOp映射为 HIVM Core 操作Cube 单元使用 Fractal 数据布局macro_instrMacroInstr映射为 HIVM 宏指令使用更高级的抽象core_op 模式矩阵乘法映射为 Cube Core 操作数据布局转换为 Fractal 格式Z 形/N 形适用于大规模矩阵乘法macro_instr 模式矩阵乘法映射为宏指令提供更高级的抽象允许编译器进行更激进的优化适用于需要灵活调度的场景3. 转换语义3.1 算子映射规则HFusion 算子HIVM 映射执行单元矩阵乘法 (core_op)hivm.cube_matmulCube矩阵乘法 (macro_instr)hivm.macro_matmulCube逐元素运算hivm.vector_*Vector归约运算hivm.vector_reduceVector数据搬运hivm.dma_copyDMA广播/转置hivm.vector_broadcast/transposed_copyVector/DMA3.2 内存布局转换HFusion→HIVM 转换中数据布局从 ND 格式转换为硬件特定的格式场景输入布局输出布局说明Cube 矩阵乘法 AND (M×K)Fractal (zN)行优先→Z 形 FractalCube 矩阵乘法 BND (K×N)Fractal (nZ)列优先→N 形 FractalCube 矩阵乘法 CFractal (zN)ND (M×N)Z 形 Fractal→行优先Vector 运算NDND保持 ND 布局3.3 同步操作插入转换过程中自动插入同步操作Cube→Vector 依赖插入hivm.sync确保 Cube 计算完成DMA→计算依赖插入hivm.sync确保数据搬运完成多缓冲切换插入hivm.sync确保前一个缓冲使用完毕4. 辅助转换 Pass4.1 ConvertHFusionToVector将 HFusion 操作转换为 vector 方言操作寄存器模式。项目内容CLI 参数convert-hfusion-to-vector构造函数mlir::createConvertHFusionToVectorPass()依赖方言vector::VectorDialect,linalg::LinalgDialect,memref::MemRefDialect,arith::ArithDialect,scf::SCFDialect此 Pass 用于 SIMT 路径将 HFusion 算子直接转换为 vector 操作跳过 HIVM 的 Cube 映射。4.2 ConvertTensorToHIVM将 tensor 操作直接转换为 HIVM 操作跳过 HFusion 层。项目内容CLI 参数convert-tensor-to-hivm构造函数mlir::createTensorToHIVMConversionPass()依赖方言tensor::TensorDialect,hivm::HIVMDialect5. 转换后的 HIVM 结构5.1 典型 HIVM 函数结构func kernel(...) { %buf_a hivm.local_alloc ... ; 分配 Cube 输入缓冲 %buf_b hivm.local_alloc ... ; 分配 Cube 输入缓冲 %buf_c hivm.local_alloc ... ; 分配 Cube 输出缓冲 %dma_a hivm.dma_copy %a - %buf_a ; DMA 搬运 A %dma_b hivm.dma_copy %b - %buf_b ; DMA 搬运 B hivm.sync [%dma_a, %dma_b] ; 等待 DMA 完成 %cube hivm.cube_matmul %buf_a, %buf_b - %buf_c ; Cube 矩阵乘 hivm.sync [%cube] ; 等待 Cube 完成 %vec hivm.vector_add %buf_c, %bias ; Vector 逐元素加 hivm.dma_copy %vec - %output ; DMA 写回 }5.2 多缓冲模式func kernel_multibuf(...) { %buf_a0 hivm.local_alloc ... ; 缓冲 A 第 0 片 %buf_a1 hivm.local_alloc ... ; 缓冲 A 第 1 片 %dma0 hivm.dma_copy %a0 - %buf_a0 ; 搬运第 0 片 hivm.sync [%dma0] %cube0 hivm.cube_matmul %buf_a0, %buf_b - %buf_c0 %dma1 hivm.dma_copy %a1 - %buf_a1 ; 搬运第 1 片与计算重叠 hivm.sync [%cube0, %dma1] %cube1 hivm.cube_matmul %buf_a1, %buf_b - %buf_c1 ... }6. 与后续 Pass 的衔接ConvertHFusionToHIVM 完成后进入 HIVM 变换阶段HIVM Tensor 优化布局推断、内存规划、同步优化HIVM LoweringHIVM→TritonGPUSIMD或 HIVM→LLVMSIMT后端代码生成LLVM→二进制详细内容参见04-hivm-transforms.md — HIVM 变换 Pass05-hivm-to-backend.md — HIVM→后端转换【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

最新新闻

持续推理智能体实战:从RAG到Agent工程落地的核心架构解析

持续推理智能体实战:从RAG到Agent工程落地的核心架构解析

在 2025 年如果还继续用“你问我答”的方式看待 AI,那大概率会错过这一轮 Agent 变革中最关键的分水岭。最近围绕 Perplexity CEO 对持续推理智能体(Continuous Reasoning Agent)的展望,讨论热度明显上升:搜索产品在往…

2026/8/29 2:56:05
图像编辑模型登顶榜单背后:可控性与一致性才是核心门槛

图像编辑模型登顶榜单背后:可控性与一致性才是核心门槛

最近一份图像编辑榜单把 MAI-Image-2.6-Preview 推到了首位。单看这个结果,很多人会以为“又一个生成效果更好的模型”出现了。但放到图像编辑这个具体方向里,这件事的信号意义比分数更高。过去我们在文生图里看到的“好看”,和现在在图像编辑…

2026/8/29 2:56:05
Unity+C#焊接解压游戏开发:物理反馈与实时渲染实践

Unity+C#焊接解压游戏开发:物理反馈与实时渲染实践

简介:焊接模拟作为工业数字孪生的关键技术,常被误解为高精度物理仿真;实际上,其核心原理在于电弧动力学、熔池流变与热传导的简化建模。在游戏化与情绪调节场景中,技术价值已从‘还原真实’转向‘构建可信反馈’——通…

2026/8/29 2:56:05
MSP430定时器A增计数模式详解:从原理到多任务调度实战

MSP430定时器A增计数模式详解:从原理到多任务调度实战

1. 项目概述:为什么从定时器A的增计数模式开始?如果你刚开始接触德州仪器(TI)的MSP430系列单片机,尤其是5xx/6xx这类资源更丰富的型号,那么定时器模块绝对是你绕不开的核心外设。它就像单片机内部一个精准、…

2026/8/29 2:56:05
集成电源开关拓扑解析:从Buck、Boost到反激与LLC的设计实战

集成电源开关拓扑解析:从Buck、Boost到反激与LLC的设计实战

1. 项目概述:为什么我们要深入集成电源开关拓扑?干了十几年硬件设计,画过的板子、调过的电源自己都数不清了。最近在复盘几个老项目时,我发现一个挺有意思的现象:很多工程师,包括当年的我自己,对…

2026/8/29 2:56:05
计算机组成原理实验全攻略:从ALU到CPU设计实战指南

计算机组成原理实验全攻略:从ALU到CPU设计实战指南

简介:计算机组成原理是计算机系统的核心基础,ALU、寄存器堆、存储器与控制器共同构成了CPU的基本骨架。理解这些部件的原理与数据通路,是掌握计算机工作方式的关键,而实验则是将抽象概念转化为可见信号变化的最佳途径。从微程序控…

2026/8/29 2:51:05