CANN ops-tensor Blaze引擎
Blaze【免费下载链接】ops-tensorops-tensor 是 CANN Compute Architecture for Neural Networks算子库中提供张量类计算的基础算子库采用模块化设计支持灵活的算子开发和管理。项目地址: https://gitcode.com/cann/ops-tensorBlazeBasicLinearAlgebraOptimizedEngine是一套面向昇腾 NPU 的高性能线性代数加速引擎为矩阵乘类算子的 Kernel 端实现提供分层、可组合的计算组件header-only即可接入使用。定位与边界聚焦 Kernel 端Blaze 只负责矩阵乘类算子的 Kernel 端计算组件数据搬运、MMAD、调度等不涉及 aclnn 入口与 Host 端逻辑。职责分工算子的 Tiling 计算、内存规划、解决方案注册等 Host 端工作由各算子自身的op_solution.cpp负责Blaze 与之配合而非替代。依赖关系Blaze 依赖include/tensor_api/提供的张量结构抽象Layout / Shape / Coord 等并直接对接 AscendC Kernel 接口。目标算子服务于使用到矩阵乘计算的相关算子包括 Matmul、GroupedMatmul、MC2 等。设计理念分层抽象从 Kernel完整内核到 Block基本块计算再到 Tile细粒度搬运/计算指令逐层下沉关注点分离。策略驱动通过DispatchPolicy将算法变体如全载 / 非全载、量化模式、是否带 scale 等作为类型参数派发到不同的 Block 实现编译期完成最优实现的选择。类型安全的组合A/B/C/Bias 的 dtype 与 LayoutNDExt / DNExt / NZ / ZN 等作为类型参数透传编译期生成最优代码路径。充分利用 Cube 架构直接对接 L1 / L0A / L0B / L0C 的存储层级与 MMAD 指令结合 double-buffer、ND2NZ 自动补零等机制压榨硬件性能。模块组成物理结构如下各子目录下的具体文件随算法扩展而增减下面仅给出代表性示例blaze/ ├── kernel/ # Kernel 层完整算子内核入口 示例kernel_qbmm_mx.h ├── block/ # Block 层Block 级矩阵乘抽象与调度 示例block_mmad_mx.h、block_scheduler_qbmm.h ├── tile/ # Tile 层细粒度搬运与计算原语 示例tile_mmad_mx.h、copy_scale_l1_to_l0a.h ├── epilogue/ # Epilogue 层后处理策略 示例block_epilogue_empty.h ├── policy/ # Dispatch Policy派发策略定义 示例dispatch_policy.h └── utils/ # 通用工具与常量 示例common_utils.h、layout_utils.h各层职责自上而下子目录命名空间职责kernel/Blaze::Gemm::Kernel完整算子内核入口组合 Block Epilogue Scheduler 形成可启动的 Kernelblock/Blaze::Gemm::BlockBlock 级 Mmad 抽象及其针对不同 Policy 的实现以及 Block 调度器epilogue/Blaze::Gemm::Block后处理策略可按需扩展 Bias / 激活 / 反量化等tile/Blaze::Gemm::Tile/AscendC::TeTile 级原语MMAD trait、L1↔L0 搬运、K 方向补零等policy/Blaze::Gemm::派发策略定义控制全载模式、量化模式等行为utils/Blaze::Gemm::通用工具与常量CeilDiv、Layout 推导、量化模式常量等【免费下载链接】ops-tensorops-tensor 是 CANN Compute Architecture for Neural Networks算子库中提供张量类计算的基础算子库采用模块化设计支持灵活的算子开发和管理。项目地址: https://gitcode.com/cann/ops-tensor创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考