CANN/cannbot-skills特殊操作 特殊操作【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills1. 概述HFusion 方言的特殊操作包括调试操作、排序、直方图、嵌入聚集、数值检查和扩展乘法等。源码参考HFusionOps.td2. print2.1 功能Device 端打印操作用于调试。2.2 操作签名操作数类型说明prefixStrAttr前缀字符串hexBoolAttr是否以十六进制打印argAnyTypeOf[AnyInteger, AnyFloat, AnyRankedTensor]待打印的值2.3 MLIR 示例hfusion.print value: hex true %val : tensor128xf323. assert3.1 功能Device 端断言操作用于调试。3.2 操作签名操作数类型说明msgStrAttr断言消息condAnyTypeOf[AnyInteger, AnyRankedTensor]条件值3.3 MLIR 示例hfusion.assert index out of range %cond : i324. barrier4.1 功能同步一个 Core 上所有 Pipeline 的执行。4.2 操作签名无操作数无结果。4.3 MLIR 示例hfusion.barrier5. sort5.1 功能沿指定轴对张量排序输出排序后的值和对应索引。5.2 操作签名操作数类型说明srcTensorOrMemref待排序张量descendingBoolAttr(默认: false)是否降序sort_axisI64Attr排序轴resultVariadicAnyRankedTensor排序结果5.3 约束输入和输出必须具有相同的 rank当前仅支持尾轴排序5.4 MLIR 示例%result hfusion.sort ins(%src : tensor?xf32) descending true sort_axis 0 - tensor?xf326. histogram6.1 功能计算整数张量的直方图支持可选掩码。6.2 操作签名操作数类型说明inputRankedTensorOf[I8, UI8, I16, UI16, I32, UI32, I64, UI64]输入张量num_binsI64Attr直方图桶数maskOptionalRankedTensorOf[I1]掩码outputRankedTensorOf[I8, I16, I32, I64]输出直方图6.3 语义对输入张量的每个元素递增输出直方图中对应的桶。如果提供掩码仅统计 mask[i]true 的元素。输出必须为 1D 张量长度等于 num_bins。6.4 MLIR 示例%hist hfusion.histogram %input, 256, %mask : tensor1024xi32, tensor1024xi1 - tensor256xi647. embedding_gather7.1 功能使用 Gather 语义执行嵌入查找操作。7.2 操作签名操作数类型说明srcAnyMemRef2D 嵌入表GMindexAnyRankedTensor1D/2D 索引张量dstAnyRankedTensor目标张量boundAnyTypeOf[I32, I64]词汇表大小边界检查offsetsVariadicAnyTypeOf[I32, I64]偏移量numelsVariadicAnyTypeOf[I32, I64]元素数量resultOptionalAnyRankedTensor输出7.3 语义result[b][i][d] src[index[b][i]][d]7.4 MLIR 示例%result hfusion.embedding_gather ins(%src, %index, %bound, [], [] : memref10000x768xf16, tensor128xi32, i32) outs(%dst : tensor128x768xf16) - tensor128x768xf168. is_inf8.1 功能判断浮点张量元素是否为正无穷或负无穷。8.2 操作签名操作数类型说明inputRankedTensorOf[BF16, F16, F32]输入张量outputRankedTensorOf[I1]输出布尔张量8.3 MLIR 示例%result hfusion.isinf %input : tensor128xf32 - tensor128xi19. is_nan9.1 功能判断浮点张量元素是否为 NaN。9.2 操作签名操作数类型说明inputRankedTensorOf[BF16, F16, F32]输入张量outputRankedTensorOf[I1]输出布尔张量9.3 MLIR 示例%result hfusion.isnan %input : tensor128xf32 - tensor128xi110. is_finite10.1 功能判断浮点张量元素是否为有限值非 NaN 且非无穷。10.2 操作签名操作数类型说明inputRankedTensorOf[BF16, F16, F32]输入张量outputRankedTensorOf[I1]输出布尔张量10.3 TraitsBiShengIRAggregatedOpInterface支持 decomposeOperation10.4 MLIR 示例%result hfusion.isfinite %input : tensor128xf32 - tensor128xi111. mulext11.1 功能扩展有符号整数乘法返回 2N 位乘积的低半部分和高半部分。11.2 操作签名操作数类型说明lhsSignlessIntegerLike左操作数rhsSignlessIntegerLike右操作数lowSignlessIntegerLike乘积低半部分highSignlessIntegerLike乘积高半部分11.3 TraitsPure,CommutativeAllTypesMatch[lhs, rhs, low, high]11.4 MLIR 示例%low, %high hfusion.mulext %a, %b : i3212. symbolic_dim12.1 功能引用符号维度并返回 index 类型值。12.2 操作签名操作数类型说明symbolNameSymbolRefAttr符号名称resultIndex结果12.3 MLIR 示例%0 hfusion.symbolic_dim SymName : index【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考