HIVM Trait 定义【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills关键词Trait, MacroOpTrait, MacroOpPipeTrait, CoreTypeTrait, ElementwiseNaryOpTrait, BroadcastableOTF, TransposableOTF概述HIVM Trait 是附加在操作上的行为约束标记用于编译器 Pass 中的操作分类和验证。Trait 从 HIVMTraits.td 定义。Rank 相关 TraitHIVMOpSameOperandsAndResultRank验证所有操作数和结果类型除临时缓冲区外的 rank 相同。依赖HIVMStructuredOpInterface适用操作大多数 Elementwise 操作OpLibraryMaxRankTraitMaxRank指定库函数支持的最大 rank。参数说明MaxRank 0静态已知最大 rankMaxRank 0静态未知最大 rank需推断MaxRank -1无 rank 限制StaticMaxRankTraitMaxRank继承自OpLibraryMaxRankTraitMaxRank用于静态已知最大 rank 的操作。操作MaxRank说明debug4调试操作最多 4Dembedding_gather3嵌入查找最多 3Dindirect_load / indirect_store5间接加载/存储最多 5DgatherT / scatterT / index_put5收集/散射最多 5DInferMaxRankTrait继承自OpLibraryMaxRankTrait0用于静态未知最大 rank 的操作。NoMaxRankTrait继承自OpLibraryMaxRankTrait-1无 rank 限制。操作说明mmadL1矩阵乘加rank 由操作数决定matmul / mix_matmul / mix_group_matmul全局矩阵乘无 rank 限制Elementwise TraitElementwiseNaryOpTraitNN 元素逐元素操作 Trait。语义对 N 个输入操作数执行逐元素操作产生单个结果。约束实现 DestinationStyleOpInterface输入操作数数量为 N所有 shaped 操作数和结果的 rank 相同Buffer 语义时最终维度的 stride 相等依赖HIVMStructuredOpInterface, HIVMOpSameOperandsAndResultRank广播与转置 TraitBroadcastableOTF支持内联广播的操作 Trait。语义for i // - broadcast dim for j dst[i, j] some_op(src1[0, j], src2[0, j], ..., srcN[0, j])约束实现 DestinationStyleOpInterface必须有DenseI64ArrayAttr名为broadcastbroadcast 维度唯一broadcast 维度在[0, rank(dst))范围内broadcast 维度上dim(src_i, d) 1 || dim(src_i, d) dim(dst, d)非 broadcast 维度上dim(src_i, d) dim(dst, d)依赖HIVMStructuredOpInterface, HIVMOpSameOperandsAndResultRankTransposableOTF支持内联转置的操作 Trait。语义for i // transpose [1, 0] for j dst[i, j] some_op(src1[j, i], src2[j, i], ..., srcN[j, i])约束实现 DestinationStyleOpInterface必须有DenseI64ArrayAttr名为transposetranspose 是range(rank(dst))的排列transpose[rank(dst) - 1] rank(dst) - 1dim(dst, d) dim(src_i, transpose[d])依赖HIVMStructuredOpInterface, HIVMOpSameOperandsAndResultRankPipe 相关 TraitSinglePipeOpTrait标识操作为单 Pipe 操作。OpPipeTraitPipe参数化 Trait声明操作在单个 Pipeline 上执行。操作Pipe说明embedding_gatherPIPE_VVector Pipeindirect_loadPIPE_VVector Pipeindirect_storePIPE_VVector PipegatherTPIPE_VVector PipescatterTPIPE_VVector Pipeindex_putPIPE_VVector Pipecustom由属性指定用户指定依赖SinglePipeOpTraitMacroOpTrait标识操作为宏操作跨 Pipeline。MacroOpPipeTraitInOutPipes参数化 Trait声明宏操作的输入/输出 Pipeline。操作InOutPipes说明mmadL1 / batchMmadL1PIPE::PIPE_MTE1, PIPE::PIPE_ML1 加载 Cube 计算matmul / mix_matmul / mix_group_matmulPIPE::PIPE_MTE2, PIPE::PIPE_MTE3GM 加载 GM 写回依赖MacroOpTraitCore Type TraitCoreTypeTraitCoreType参数化 Trait静态声明操作的 Core 类型。TraitCoreType适用操作VectorCoreTypeTraitTCoreType::VECTOR大多数 Vector 操作CubeCoreTypeTraitTCoreType::CUBEmmadL1, batchMmadL1CubeVectorCoreTypeTraitTCoreType::CUBE_OR_VECTORget_block_idx, pointer_cast, set_ffts_base_addr其他 TraitNoLibraryFunctionTrait标识操作没有预定义的库函数实现。操作说明batchMmadL1无库函数不支持直接 loweringCommutativeOpTrait标识操作的输入操作数可交换。VectorOnlyTraitidx指定操作数只支持 Vectorshaped类型输入。ScalarOnlyTraitidx指定操作数只支持标量类型输入。OperElemTypeConstraintsindices, types指定操作数的元素类型约束。UniformReassociationFlattenTrait标识操作可以统一展平维度。依赖HIVMStructuredOpInterfaceCollapsibleConsecutiveTargetDimsTrait标识操作在展平时必须保留目标维度的独立性和 rank。依赖HIVMStructuredOpInterface, UniformReassociationFlattenTraitTrait 依赖关系HIVMStructuredOpInterface ├── HIVMOpSameOperandsAndResultRank │ ├── ElementwiseNaryOpTraitN │ ├── BroadcastableOTF │ └── TransposableOTF ├── UniformReassociationFlattenTrait │ └── CollapsibleConsecutiveTargetDimsTrait └── OpLibraryMaxRankTraitMaxRank ├── StaticMaxRankTraitMaxRank ├── InferMaxRankTrait └── NoMaxRankTrait SinglePipeOpTrait └── OpPipeTraitPipe MacroOpTrait └── MacroOpPipeTraitInOutPipes相关文档源码参考HIVMTraits.td【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考