make_tuple 快速构建元组:Ascend C 的 tuple 实用指南
make_tuple 快速构建元组Ascend C 的 tuple 实用指南【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit在 CANN 算子开发语言 Ascend C 中AscendC::Std::make_tuple是一个函数模板传入任意几个参数它自动推断类型并返回一个tuple对象让你用一行代码完成打包。快速上手在 AICore 算子代码中这样写#include kernel_operator.h using namespace AscendC; using namespace AscendC::Std; ASCENDC_HOST_AICORE MyKernel() { auto result AscendC::Std::make_tuple(22, 3.3f, true); uint32_t a AscendC::Std::get0(result); // 22 float b AscendC::Std::get1(result); // 3.3f }这段代码做了两件事用make_tuple把三个不同类型的值打包成元组再用getN按序号取出。全程不需要手写类型列表。它解决了什么问题在 AICore 算子里经常需要同时传递一组类型各异的数据——比如偏移量 缩放系数 边界标志。手写结构体意味着先定义一个struct再逐个赋值写几个字段就重复几遍。make_tuple就像快递柜的自动分拣把物品丢进去它按顺序编号存放取的时候报编号即可。它省去了定义包装结构体的步骤类型由编译器根据实参自动推断内部通过unwrap_decay_t处理代码更短、意图更直接。对比标准 C 的std::tuple/std::make_tupleAscendC::Std::make_tuple是为 AI Core 侧执行环境裁剪的版本元素个数上限 64且明确支持LocalTensor、GlobalTensor这类张量类型——这正是算子开发场景里最常用到的。函数签名与参数详解template typename ...Tps __aicore__ inline constexpr tupleunwrap_decay_tTps... make_tuple(Tps ...args)参数类型含义取值范围Tps...模板参数包由实参推断出的元素类型经unwrap_decay_t规整后组成tuple的类型列表个数 [0, 64]args...函数参数包实际传入的值以转发引用接收个数 [0, 64]两个参数包是配对的args第 N 个决定Tps第 N 个。 建议返回值通常写成auto t make_tuple(...)即可无需手动拼类型列表只有后续需要把元组存到全局或跨函数传递时才要显式写出tuple...。支持的平台产品是否支持Ascend 950PR / Ascend 950DT√Atlas A3 训练系列 / Atlas A3 推理系列√Atlas A2 训练系列 / Atlas A2 推理系列√各平台支持的数据类型基本一致bool、int4b_t、int8_t、uint8_t、int16_t、uint16_t、half、bfloat16_t、int32_t、uint32_t、float、int64_t、uint64_t、LocalTensor、GlobalTensor。其中 Ascend 950PR/950DT 额外支持 fp8_e8m0_t。使用限制与踩坑提醒⚠️元素上限 64tuple 实例化深度为 64超过 64 个字段就超出设计边界。如果字段这么多考虑用结构体或分拆多个元组。需要强转时务必显式强转类型推断基于实参make_tuple(1, 2.5f)第一个元素会被推断为int而不是float。想让1以float身份入组写成make_tuple(1.0f, 2.5f)或static_castfloat(1)。不支持数组等可变长度类型数组没有固定标量类型的语义塞进去会失败。需要传数组时先用指针或张量封装。不支持隐式转换构造函数自定义类型若有隐式构造路径unwrap_decay_t推断可能给出你意想不到的类型显式指定更稳妥。⚠️与 SIMT 编译互斥源码中明确启用--enable-simt编译时不能包含tuple.hSIMT 路径下请使用 SIMT 侧的对应能力。返回值返回一个tupleunwrap_decay_tTps...对象其中每个元素是传入参数的副本值语义不是引用或别名。修改元组内部元素不会影响原始变量反之亦然。函数标注为inline constexpr简单类型组合可在编译期完成。实战示例场景一混合标量 张量典型的算子参数打包LocalTensorAscendC::TPosition::UB x g_ub.GetLocalTensorfloat(); GlobalTensorAscendC::TPosition::GM gm_x tiling.x; auto pack AscendC::Std::make_tuple(gm_x, x, uint32_t(64), true);把 GM 张量、UB 张量、维度值和标志位打包成一个对象方便在同一段逻辑中整体传递、按需get取用。场景二用显式类型避免推断歧义// 期望 tuplefloat, float而不是 tupleint, float auto t AscendC::Std::make_tuple(float(1), 2.0f);整数字面量默认推断为整型强转后才得到float元素。这是最常见的一类推断与预期不符的坑。更多上下文 APItuple、get、tie等的完整用法请参阅仓库中 tuple 的 API 文档docs/zh/api下的 Std 元组章节头文件源码位于include/utils/std/tuple.h。相关函数AscendC::Std::getN(t)按序号从 tuple 中取出第 N 个元素make_tuple的另一半。AscendC::Std::tie(a, b, c)构造一个持引用语义的元组常用于把已有变量打包接收的场景与make_tuple的值语义互补。AscendC::Std::tupleTs...元组本体类型make_tuple的返回值即由此实例化。【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

flutter_barcode_reader ScanOptions参数逐条详解:8大选项定制扫描界面

flutter_barcode_reader ScanOptions参数逐条详解:8大选项定制扫描界面

flutter_barcode_reader ScanOptions参数逐条详解:8大选项定制扫描界面 【免费下载链接】flutter_barcode_reader A flutter plugin for reading 2D barcodes and QR codes. 项目地址: https://gitcode.com/gh_mirrors/fl/flutter_barcode_reader flutter_ba…

2026/8/24 8:58:17 阅读更多 →
数学模型:从线性规划到机器学习,掌握核心建模思维与应用

数学模型:从线性规划到机器学习,掌握核心建模思维与应用

1. 从“板凳龙”到“量化交易”:数学模型到底是什么?前几天,我刷到一个挺有意思的新闻,说某地“板凳龙闹元宵”的民俗活动,居然被一群大学生拿去做了数学建模的题目。我当时就乐了,这“板凳龙”和“数学模型…

2026/8/24 8:58:17 阅读更多 →
LLM智能体工具调用安全:从文本安全到行为安全的防御策略

LLM智能体工具调用安全:从文本安全到行为安全的防御策略

1. 项目概述:当LLM智能体拿起“工具”,安全边界在哪里?最近在折腾大语言模型(LLM)驱动的智能体(Agents),发现一个挺有意思但又让人后背发凉的现象:我们花大力气调教出一个…

2026/8/24 8:58:17 阅读更多 →

最新新闻

Pika 开源颜色选择器:macOS 屏幕取色实操教程

Pika 开源颜色选择器:macOS 屏幕取色实操教程

Pika 开源颜色选择器:macOS 屏幕取色实操教程 【免费下载链接】pika An open-source colour picker app for macOS 项目地址: https://gitcode.com/gh_mirrors/pika/pika 你可能遇到过这种场景:设计稿就摆在眼前,却需要拿到精确的色值…

2026/8/24 9:50:15 阅读更多 →
SadTalker:一张人像5分钟跑通你的第一个说话视频

SadTalker:一张人像5分钟跑通你的第一个说话视频

SadTalker:一张人像5分钟跑通你的第一个说话视频 【免费下载链接】SadTalker [CVPR 2023] SadTalker:Learning Realistic 3D Motion Coefficients for Stylized Audio-Driven Single Image Talking Face Animation 项目地址: https://gitcode.com/GitH…

2026/8/24 9:50:15 阅读更多 →
算法竞赛题解:大数运算与子矩形面积和的数学推导

算法竞赛题解:大数运算与子矩形面积和的数学推导

1. 从一道竞赛题说起:当“面积和”遇上“大数”最近在复盘一些算法竞赛的题目,特别是那种看起来公式简单,但数据范围大到让人头皮发麻的题。2020年牛客国庆集训排队Day2的这道F题——“SUM OF SUB RECTANGLE AREAS”,就是典型代表…

2026/8/24 9:50:15 阅读更多 →
论文复现升级:随机性、依赖和评测脚本逐项核对

论文复现升级:随机性、依赖和评测脚本逐项核对

论文复现升级:随机性、依赖和评测脚本逐项核对 跑了一夜的 Loss 突然发散:对比上一周的代码库,明明只改了 requirements.txt 复现论文时,依赖、随机性和评测入口常常比模型代码更早造成差异。本文把它们拆开说明;任何版…

2026/8/24 9:50:15 阅读更多 →
RACE-Bench:面向仓库级代码智能体的功能添加评测基准

RACE-Bench:面向仓库级代码智能体的功能添加评测基准

1. 项目概述:为什么我们需要一个“仓库级”代码智能体评测基准?如果你关注过AI编程助手的发展,从最初的单行补全,到后来的函数生成,再到现在的“对话式”代码生成,你会发现一个明显的趋势:AI正在…

2026/8/24 9:50:15 阅读更多 →
3 分钟把 NCM 转 MP3

3 分钟把 NCM 转 MP3

3 分钟把 NCM 转 MP3 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump ncmdump 是一个免费的 NCM 转 MP3 工具,在本机把网易云下载的 .ncm 文件解开成通用 MP3,给想在播放器、车机、剪辑软件里用自己的歌的人。…

2026/8/24 9:49:15 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →