CANN/cannbot-skills自定义操作文档

发布时间:2026/7/11 17:04:26
CANN/cannbot-skills自定义操作文档 hir.custom — 自定义单 Pipe 操作【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills关键词custom, CustomOp, Builtin, __builtin_gather_load, __builtin_index_select, SinglePipe概述hir.custom是 HIVM 方言中的自定义单 Pipe 操作允许用户在现有操作无法满足需求时编写自定义实现。该操作在单个 Pipeline 上执行通过name属性标识操作类型。Custom 操作适用于以下场景现有操作无法实现所需功能现有操作可以实现但性能不佳需要私有操作内置操作name 以__builtin开头由编译器自带实现用户无需指定属性即可使用。Python API 对应Triton 的自定义操作可以通过tl.extern等机制映射为 hir.custom。IR 操作定义从 HIVMOps.td 提取def CustomOp : HIVM_CustomOpcustom, [SinglePipeOpTrait] { let arguments (ins StrAttr:$name, VariadicAnyType:$inputs, VariadicAnyType:$outputs); let results (outs VariadicAnyType:$results); }基类HIVM_CustomOp定义HIVMOps.tdclass HIVM_CustomOpstring mnemonic, listTrait traits [] : HIVM_StructuredOpmnemonic, !listconcat([AttrSizedOperandSegments, MemoryEffects[MemRead, MemWrite], HIVMInferCoreTypeInterface], traits) { dag args (ins StrAttr:$name, VariadicAnyType:$inputs, VariadicAnyType:$outputs); dag res (outs VariadicAnyType:$results); }参数说明输入操作数ins参数类型必选说明$nameStrAttr是操作名称__builtin_前缀为内置操作$inputsVariadicAnyType是输入参数可变数量$outputsVariadicAnyType是输出/初始化参数DestinationStyle输出结果outs参数类型说明$resultsVariadicAnyType结果值必需属性属性类型说明hivm.tcore_typeTCoreTypeAttr执行的 Core 类型hivm.pipePipeAttr执行的 Pipelinehivm.vf_modeVFModeAttrVector 运行模式Cube Core 时忽略可选属性属性类型说明gm_addr_args_indicesDenseI32ArrayAttr指示哪些参数包含 GM 纯地址额外类方法方法返回类型说明getCoreType()optionalTCoreType获取 Core 类型setCoreType(TCoreType)void设置 Core 类型getPipe()PIPE获取 PipesetPipe(PIPE)void设置 PipegetVFMode()optionalVFMode获取 VF 模式setVFMode(VFMode)void设置 VF 模式getGMAddrArgsIndices()optionalSmallVectorsize_t获取 GM 地址参数索引setGMAddrArgsIndices(SmallVectorsize_t)void设置 GM 地址参数索引isBuiltin()bool判断是否为内置操作getDpsInitsMutable()MutableOperandRangeDestinationStyleOpInterface内置操作常量static constexpr StringLiteral kBuiltinGatherLoadName __builtin_gather_load; static constexpr StringLiteral kBuiltinIndexSelectName __builtin_index_select;IR 示例自定义操作%empty tensor.empty() : tensor3x3xf32 %0 hivm.hir.custom { hivm.tcore_type #hivm.tcore_typeVECTOR, hivm.pipe #hivm.pipePIPE_V, hivm.vf_mode #hivm.vf_modeSIMD } my_custom_op ins(%arg0, %arg1, %c4_i64, %c0_i32, %c2_i64, %c1_i64, %c2_i32, %c2_i32, %c0_i32, %c0_i32 : memref?xf32, tensor3x3xi64, i64, i32, i64, i64, i32, i32, i32, i32) outs(%empty : tensor3x3xf32) - tensor3x3xf32内置操作无需指定属性%empty tensor.empty() : tensor3x3xf32 %0 hivm.hir.custom __builtin_gather_load ins(%arg0, %arg1, %c4_i64, %c0_i32, %c2_i64, %c1_i64, %c2_i32, %c2_i32, %c0_i32, %c0_i32 : memref?xf32, tensor3x3xi64, i64, i32, i64, i64, i32, i32, i32, i32) outs(%empty : tensor3x3xf32) - tensor3x3xf32__builtin_index_select%0 tensor.empty() : tensor1x4x32xf32 %1 hivm.hir.custom {extra_attr srcStrideLength3, hivm.vf_mode #hivm.vf_modeSIMT} __builtin_index_select ins(%arg0, %arg1, %c0_i32, %c9000_i64, %c0_i32, %c0_i32, %c0_i32, %c0_i32, %c0_i32, %c0_i32, %c32_i32, %c4000_i32, %c32_i32 : memref?xf32, tensor16x400xi32, i32, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32) outs(%0 : tensor1x4x32xf32) - tensor1x4x32xf32IR 层约束与验证SinglePipeOpTrait操作在单个 Pipeline 上执行。AttrSizedOperandSegmentsinputs 和 outputs 的数量由属性决定。DestinationStyleOpInterfaceoutputs 作为 DPS init 操作数。Core Type必须通过hivm.tcore_type属性指定内置操作可省略编译器自动推断。Pipe必须通过hivm.pipe属性指定内置操作可省略。VFMode必须通过hivm.vf_mode属性指定内置操作可省略Cube Core 时忽略。Builtin 验证内置操作编译器会检查参数正确性并规范化属性。常见问题Q: 自定义操作如何提供实现A: 当前自定义操作的用户实现机制尚未完全开放标记为 TODO。内置操作由编译器自动链接到模板库。Q: __builtin_gather_load 和 hir.gather_load 的区别A:__builtin_gather_load是通过 custom 操作机制实现的 gather load而hir.gather_load是独立的 HIVM 操作。两者功能类似但 custom 版本更灵活可以通过属性配置。Q: gm_addr_args_indices 的用途A: 指示哪些输入参数包含 GM 的纯地址值。Lowering Pass 在处理这些参数时会保留地址值而不是尝试从 memref 中提取数据。相关文档源码参考HIVMOps.td测试用例custom-op.mlirCustomMacroOp02-custom-macro-op.md【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

网站建设站建设好吗?别被忽悠了,看完这篇再掏钱

网站建设站建设好吗?别被忽悠了,看完这篇再掏钱

很多老板一开口就问:网站建设站建设好吗?其实这个问题本身就有点问题。因为“好”与“坏”,从来不是绝对的。就像问“吃饭好吗?”一样荒谬。关键是你吃的是什么,怎么吃。我见过太多公司花几万块做个网站。结果上线第一天,打开速度像蜗牛。客户逛了两秒就关掉,转化率几乎…

发布时间:2026/7/11 17:03:33
精品网站建设费用 找磐石网络一流 到底贵在哪?老站长掏心窝子说真话

精品网站建设费用 找磐石网络一流 到底贵在哪?老站长掏心窝子说真话

很多人问做网站到底要花多少钱,怕被坑又怕质量差。这篇文章直接拆解真实报价和隐形坑,帮你省下冤枉钱。看完你就知道,为什么有的网站几千块,有的要几万,差别到底在哪。记得去年给公司翻新官网,我差点就在路边小店签了合同。那时候不懂行,觉得网站不就是套个模板吗?结果…

发布时间:2026/7/11 17:03:24
如何快速上手openEuler/imageTailor?3分钟掌握ISO裁剪核心功能

如何快速上手openEuler/imageTailor?3分钟掌握ISO裁剪核心功能

如何快速上手openEuler/imageTailor?3分钟掌握ISO裁剪核心功能 【免费下载链接】imageTailor a tool for tailoring image 项目地址: https://gitcode.com/openeuler/imageTailor 前往项目官网免费下载:https://ar.openeuler.org/ar/ 想要快速上…

发布时间:2026/7/11 17:03:22
别整虚的!一份接地气的智慧政务门户网站建设方案,到底该怎么搞?

别整虚的!一份接地气的智慧政务门户网站建设方案,到底该怎么搞?

昨天跟几个做政务信息化朋友喝酒,聊起现在的政府网站,大家吐槽的点出奇的一致。你说怪不怪?明明技术都发展到AI时代了,好多地方的官网还是像上个世纪遗留下来的产物。打开慢、搜索不准、办事指引像天书,老百姓进去转一圈,最后还得去大厅排队。这体验,真的没法看。我最近…

发布时间:2026/7/11 18:02:21
别瞎折腾了,南宁太阳能网站建设真没你想的那么玄乎,听句劝

别瞎折腾了,南宁太阳能网站建设真没你想的那么玄乎,听句劝

做太阳能这行,天天跟光伏板、逆变器打交道,结果自家网站打开慢得像蜗牛,手机端看个产品介绍还得放大缩小,客户转个身就跑了。你是不是也遇到过这种糟心事?明明技术牛掰,报价实在,可线上流量就是进不来。别急着骂娘,先看看你的网站是不是还在用十年前的模板,或者找那种…

发布时间:2026/7/11 18:01:07
常用网站建设软件有哪些:小白也能搭建高转化官网的避坑指南

常用网站建设软件有哪些:小白也能搭建高转化官网的避坑指南

别再花冤枉钱找外包做展示页了,这篇干货直接教你用对工具,省下大几千块开发费。咱们不整虚的,只聊怎么用最顺手、性价比最高的软件,把网站从0到1搭起来,还能跑得飞快。不管你是想做个个人作品集,还是搞个小型电商,选对家伙事儿,这事儿其实没那么难。很多人一听到“建站…

发布时间:2026/7/11 18:00:51
别瞎找了!柞水县住房和城乡建设局网站入口及办事避坑指南

别瞎找了!柞水县住房和城乡建设局网站入口及办事避坑指南

说实话,每次看到那种冷冰冰、排版像上世纪90年代遗留下来的政府官网,我就忍不住想骂人。真的,不是针对谁,我是说这种体验。咱们老百姓去办事,图个啥?不就图个快、图个清楚吗?结果呢?搜个“柞水县住房和城乡建设局网站”,跳出来一堆乱七八糟的链接,有的还是过期的新闻…

发布时间:2026/7/11 17:59:15
建设银行的网站用户名怎么找?手把手教你找回被遗忘的登录名

建设银行的网站用户名怎么找?手把手教你找回被遗忘的登录名

你是不是也遇到过这种情况,明明记得自己办过建行卡,却在登录网银时死活想不起那个长长的用户名,急得满头大汗?这篇文章直接告诉你怎么在几分钟内找回或重置你的建设银行的网站用户名,别再对着屏幕干瞪眼了。记得去年年底,我想给家里交一笔大额的生活费,顺手想通过网银转…

发布时间:2026/7/11 17:59:11
别瞎忙了!在山东省工程建设信息官方网站找项目,90%的人都踩了这三个坑

别瞎忙了!在山东省工程建设信息官方网站找项目,90%的人都踩了这三个坑

做工程的兄弟,你是不是也有这种绝望时刻?明明手里有资质,有人脉,也有资金。可就是找不到靠谱的项目。每天刷手机,看到那些“急招”、“高价”的广告,心里痒痒。点进去一看,全是套路。要么是要你交保证金,要么是挂个羊头卖狗肉。钱没赚到,反而搭进去不少咨询费。其实,…

发布时间:2026/7/11 17:58:47
别瞎找了!稼禾建设集团网站到底长啥样?扒开内幕看真相

别瞎找了!稼禾建设集团网站到底长啥样?扒开内幕看真相

你是不是也在找那个传说中的稼禾建设集团网站?我也找过。真的,那种感觉太难受了。就像你在深夜饿得前胸贴后背,打开冰箱却发现里面空空如也。你想知道他们家到底接没接过什么大项目,想知道他们的资质有多硬,想看看那些高楼大厦背后有没有他们的名字。结果呢?搜出来的全是…

发布时间:2026/7/11 0:00:38
温江区建设局网站怎么查进度?新手避坑指南与真实操作细节

温江区建设局网站怎么查进度?新手避坑指南与真实操作细节

最近好多朋友私信我, 问温江区那边搞装修或者买房, 到底怎么查审批进度。 很多人第一反应就是去现场排队, 其实现在都数字化了, 大部分业务都能在温江区建设局网站搞定。 但这里头水挺深, 稍微不注意就容易踩坑。 今天我就结合这几年在温江跑工地的经验, 给大家捋一捋, …

发布时间:2026/7/11 0:00:41
上海最好网站建设公司怎么选?老站长掏心窝子的避坑指南

上海最好网站建设公司怎么选?老站长掏心窝子的避坑指南

本文关键词:上海最好网站建设公司说实话,在这个行当摸爬滚打这么多年,见过太多老板被坑得底裤都不剩。昨天有个做建材的朋友找我喝茶,一脸愁容。他说之前找了一家所谓的“高端”团队,花了八万块,结果做出来的网站跟十年前的模板似的,连个手机适配都搞不定。他问我,到底…

发布时间:2026/7/11 0:01:45
做个人信息管理网站建设,这3个坑我踩了七年,你千万别再跳

做个人信息管理网站建设,这3个坑我踩了七年,你千万别再跳

做了七年建站,见过太多老板花大钱买模板,最后发现根本没法用。特别是现在大家都讲究数据隐私,想搞个个人信息管理网站建设,结果越搞越乱。这篇文不整虚的,直接说怎么把这套系统落地,让你自己的数据真正听话。先说个真事儿。去年有个做自由职业的朋友找我,他说想建个网站…

发布时间:2026/7/10 15:55:18
杨凌规划建设局网站怎么查最新规划?老杨说点大实话

杨凌规划建设局网站怎么查最新规划?老杨说点大实话

杨凌规划建设局网站你是不是也遇到过这种情况?想看看自家旁边要修路,还是建公园。翻遍了手机,搜出来的全是几年前的旧闻。或者好不容易找到个入口,页面加载慢得像蜗牛。心里那个急啊,真的,懂的人都懂。我是老杨,在杨凌混了十几年,跟这行打交道不少。今天不跟你扯那些虚…

发布时间:2026/7/11 16:17:41
杭州网站建设 seo 避坑指南:别被那些只会套模板的忽悠了

杭州网站建设 seo 避坑指南:别被那些只会套模板的忽悠了

昨天半夜两点,我还在改一个客户的后台,咖啡都凉透了。这哥们儿是做机械配件的,在余杭那边,找的前一家公司花了八千块做了个站,结果上线一个月,百度连个影子都没有。他急得给我打电话,说是不是被黑了。我让他把链接发过来,打开一看,好家伙,那代码乱得跟刚被猫抓过的毛…

发布时间:2026/7/11 12:24:48
建站7年才悟出的网站建设思路,别再花冤枉钱了

建站7年才悟出的网站建设思路,别再花冤枉钱了

做建站这行整整7年了。 见过太多老板花几万块, 最后做出来的网站像个垃圾场。 今天不整那些虚头巴脑的术语。 就聊聊我踩过的坑, 和真正能落地的网站建设思路。很多老板一上来就问: “多少钱能做个高大上的?” 我通常直接劝退。 因为方向错了, 你给再多钱也是打水漂。 真正…

发布时间:2026/7/11 8:50:55
合肥的网站建设避坑指南:别被低价忽悠,这3个细节决定生死

合肥的网站建设避坑指南:别被低价忽悠,这3个细节决定生死

做企业官网最怕什么?不是技术难,是交钱后没人管,或者上线一个月连个访客都没有。这篇东西不扯虚的,直接告诉你怎么在合肥找个靠谱的团队,或者自己怎么避坑。先说个大实话,我在合肥混这行五年多,见过太多老板因为贪便宜吃大亏。你去百度搜“合肥的网站建设”,出来一堆报…

发布时间:2026/7/10 18:05:06
别被忽悠了!德州网站建设那些坑,我拿真金白银换来的教训

别被忽悠了!德州网站建设那些坑,我拿真金白银换来的教训

做这行久了,心里就憋着一股火。每次看到客户拿着网上抄来的模板,问我能不能做成“苹果官网”那种效果。我就想笑。真的,太想笑了。今天咱不整那些虚头巴脑的专业术语。就聊聊德州网站建设里,那些让人头秃的真实事儿。我有个客户,老张。他是做德州本地建材的,实在人。当初…

发布时间:2026/7/10 16:48:50