尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
make_tuple 一文讲透:CANN 昇腾算子开发里最省心的元组创建方式
make_tuple 一文讲透CANN 昇腾算子开发里最省心的元组创建方式【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit这里讲的是 CANN 昇腾算子开发中 AscendC::Std::make_tuple 的用法一行代码创建轻量元组元素类型自动推断多路结果打包不用你手写类型列表。一、什么时候你会用到它你是不是也遇到过kernel 里同时要传偏移量、行数和标志位要么开三个独立变量要么自己定义一个小结构体逐个塞值用起来都很别扭而用 tuple... 时还得把那一长串元素类型手动敲全又累又容易写错。make_tuple 就是为这种场景准备的。二、30 秒上手先花三十秒看这条官方示例里的典型写法直接拷进你的算子代码就能跑AscendC::Std::tupleuint32_t, float, bool test AscendC::Std::make_tuple(22, 3.3, true);白话一点你把值扔进去它替你推断元素类型、打包成元组类型清单都不用逐个写出来。三、签名与参数逐个拆会写调用还不够把完整签名摊开看看每个部分在做什么template typename ...Tps __aicore__ inline constexpr tupleunwrap_decay_tTps... make_tuple(Tps ...args)参数名类型取值范围支持的数据类型Tps...模板参数包元素静态类型由它推断参数个数 [0, 64]覆盖下方列出的全部类型args...函数参数包实际传入的值参数个数 [0, 64]与 Tps... 一一对应各支持设备均覆盖以下类型bool、int4b_t、int8_t、uint8_t、fp8_e8m0_t、int16_t、uint16_t、half、bfloat16_t、int32_t、uint32_t、float、int64_t、uint64_t、LocalTensor、GlobalTensor。四、避坑清单调用跑通了下面提前把新人最常踩的几个坑排掉⚠️ 坑元组的可实例化深度上限是 64硬塞超过 64 个元素时模板根本实例化不出来。正确姿势元素数量控制在 64 以内超了就重新组织数据结构。 坑想让某个元素用指定类型时如果直接传原始值编译器会按自己的规则推断结果可能和你预期对不上。正确姿势对该元素显式强转比如写成(uint32_t)22。坑数组这类可变长度类型放不进元组。正确姿势元素改用定长标量或者用 LocalTensor / GlobalTensor 承载数据。坑没有隐式转换构造可用类型对不上时代码直接编译失败。正确姿势转换关系自己写强转别指望构造函数偷偷帮你转。五、返回值长什么样最后看看交到你手里的是什么make_tuple 返回一个 tuple 对象里面每个元素都是你传入参数的副本而不是原变量本身。类型推断交给签名里的 unwrap_decay_t它会剥掉引用以及 const 等修饰保留纯值类型再装进元组所以传 const 变量进去元组里存的也是对应值类型的副本。六、跑在哪些设备上知道了返回值再确认一下你的目标芯片跑不跑得动设备是否支持Ascend 950PR / Ascend 950DT√Atlas A3 训练系列 / Atlas A3 推理系列√Atlas A2 训练系列 / Atlas A2 推理系列√延伸阅读想多看几个场景的用法官方文档里附带完整的调用示例集合可以看 tuple 官方示例文档。【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

lxmusic--听歌自由,感谢开源

lxmusic--听歌自由,感谢开源

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/22 1:56:39
读懂PIIP-LLaVA的trainer_state与training_args:5197步微调训练全复盘

读懂PIIP-LLaVA的trainer_state与training_args:5197步微调训练全复盘

【免费下载链接】PIIP-LLaVA_ConvNeXt-B_CLIP-L_1024-336_13B 项目地址: https://ai.gitcode.com/OpenGVLab/PIIP-LLaVA_ConvNeXt-B_CLIP-L_1024-336_13B 点击查看 免费下载 PIIP-LLaVA_ConvNeXt-B_CLIP-L_1024-336_13B 是基于 Vicuna-13B 的图像多模态大模型&…

📅 2026/10/22 1:56:39
如何可视化TIPSv1-So400m/14的1024个空间Patch特征:PCA可视化实战

如何可视化TIPSv1-So400m/14的1024个空间Patch特征:PCA可视化实战

【免费下载链接】tipsv1-so400m14 项目地址: https://ai.gitcode.com/hf_mirrors/google/tipsv1-so400m14 点击查看 免费下载 TIPSv1-So400m/14(TIPS,ICLR 2025 提出的对比式视觉语言模型)最大的亮点之一,就是它能输出…

📅 2026/10/22 1:56:39
MORE NEWS

更多资讯

📰

MCP协议实战:从零开发第一个MCP Server,让Agent调用你的服务

最近连续接了几个项目,开场白几乎一模一样:能不能让 AI 帮我们操作一下内部系统?需求一听就懂,一做就卡住,卡就卡在模型根本没有一条标准的路去调用我那一堆内部服务。早期各家都在做自己的工具调用格式,接…

📰

语言模型与复杂网络结合的文化传播预测技术链路

从标题看,这是一个典型的交叉学科落地型项目:语言模型负责从海量非结构化文本里提取“人、事、情”的语义信号,复杂社会网络则负责承载这些信号在关系链上的传导与演化,最终目标是让“文化传播”这种看似虚无缥缈又极难量化的东西…

📰

Win11右键菜单一键恢复Win10经典样式:注册表CLSID修改教程

升级到Win11之后,最先让我觉得别扭的,不是居中的任务栏,也不是圆角窗口,而是那个被重新设计过的右键菜单。点一下桌面或文件夹,弹出的菜单把常用的“刷新”“新建”“复制”“粘贴”挤到一个小图标栏里,有些…

📰

共享内存原理与实战:Linux进程间通信零拷贝方案全解析

做服务端开发的人应该都体会过,进程之间传数据这件事看着简单,实际踩坑不少。最开始我调试一个图像传输模块时,两个进程要频繁搬运帧数据,用管道和UDP轮流试,要么拷贝开销大,要么延迟抖得离谱。后来换成C里…

📰

VS Code配置NS3开发环境:解决头文件找不到报错的完整指南

1. 先把报错现场说清楚我第一次在VS Code里打开NS3的代码时,顺手就点了侧边栏的调试按钮,想着赶紧跑一个demo看看结果。结果编译还没开始,编辑器先红了半边天——fatal error: ns3/applications-module.h: 没有那个文件或目录。当时的第一反应…

📰

智慧档案管理平台建设方案:从数据治理到全文检索落地

简介:智慧档案管理系统平台建设方案是一份面向档案馆及档案管理部门信息化规划的完整参考文档,重点解决传统档案管理中采集效率低、利用不便、资源共享不足等问题,既可用于整体顶层设计,也可用于具体功能模块的细化落地。资源包内…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬