CANN/cannbot-skills C/V融合计算参考
C/V 融合计算总参考Init 与 Process【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills本文档适用于 C/V 融合算子或设备侧存在多个Scope、多个计算阶段、AIC/AIV 协同的 AscendC 实现。 它不是用来替代vector或cube详细参考而是给出融合场景下的组合阅读顺序与协同组织方式。 概览与判断规则见references/dsl2Ascendc.md。第三章Kernel 入口C/V 融合总览1. 阅读顺序纯 Vector 算子只看references/dsl2Ascendc_compute_vector.md纯 Cube 算子只看references/dsl2Ascendc_compute_cube.mdC/V 融合算子先看本文再分别看references/dsl2Ascendc_compute_cube.md和references/dsl2Ascendc_compute_vector.md2. kernel 入口形态C/V 融合算子的入口通常同时接收输入、输出、workspace 和 tilingextern C __global__ __aicore__ void kernel_custom(GM_ADDR ...inputs..., GM_ADDR workspace, GM_ADDR tiling) { KERNEL_TASK_TYPE_DEFAULT(KERNEL_TYPE_MIX_AIC_1_1); AscendC::TPipe pipe; KernelClass kernel; kernel.Init(..., workspace, tiling, pipe); kernel.Process(); }3.vec_num与 block 组成DSLvec_numKERNEL_TYPE每个 block 组成GetSubBlockNum()1KERNEL_TYPE_MIX_AIC_1_11 AIC 1 AIV22KERNEL_TYPE_MIX_AIC_1_21 AIC 2 AIV3第四章主 Kernel 类C/V 融合参考archive_tasks/matmul_leakyrelu/kernel/matmul_leakyrelu.hC/V 融合主Kernel类建议按Init()和Process()两个大阶段组织。1.Init()接收 tiling 字段并初始化 GM / workspace / 子模块Init()主要负责读取并保存 tiling 字段绑定输入 / 输出 GM tensor初始化调度器与 workspace分别初始化 Cube 子模块和 Vector 子模块A. tiling 字段、GM 绑定与调度常见模式CopyTiling(tiling_, tilingGM)SetGlobalBuffer(...)绑定 A/B/C 等 GM tensor根据GetBlockIdx()、GetSubBlockNum()派生coreIdx初始化调度器如sched_.Init(...)B. workspace 与跨核协同如果 C/V 之间通过 workspace 传递中间结果通常在Init()中完成workspace 基址和每个 core 的偏移计算ring buffer /WorkspaceQueue初始化C/V 协同所需 flag 或队列的初始化若存在跨核同步或 producer / consumer 关系继续结合references/dsl2Ascendc_cross_core_sync.md。C. 子模块初始化融合场景下通常同时存在Cube 子模块如matmul.hVector 子模块如leakyrelu.h、scale.h推荐在Init()中按分支初始化ASCEND_IS_AIC分支初始化 Cube 子模块ASCEND_IS_AIV分支初始化 Vector 子模块2.Process()组织调度、AIC/AIV 分支与阶段调用Process()负责把工作负载循环、AIC/AIV 分支和模块调用串起来。A. 工作负载循环常见骨架__aicore__ inline void KernelClass::Process() { int mIdx, nIdx; while (sched_.HasNext()) { sched_.Next(mIdx, nIdx); if ASCEND_IS_AIC { // Cube 侧 } if ASCEND_IS_AIV { // Vector 侧 } } }B. AIC 分支AIC 分支通常负责从 GM 取当前 tile 的输入获取 workspace 生产者槽位调用 Cube 子模块如mm_.ComputeBlock(...)释放生产者槽位或发送完成信号C. AIV 分支AIV 分支通常负责获取 workspace 消费者槽位根据GetSubBlockIdx()计算当前子块偏移从 workspace 中取本子块负责的数据调用 Vector 子模块完成后处理并写回 GM释放消费者槽位或发送完成信号D. 何时拆单独子模块当满足以下任一条件时建议拆出单独计算子模块文件TileLang 设备侧有多个职责清晰的Scope同时存在 Cube 计算阶段和 Vector 后处理阶段需要在主Kernel类中复用某段计算逻辑建议让 TileLang 中一个主要Scope对应 AscendC 中一个子模块。【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Microsoft GDK游戏开发实战指南:从零开始构建跨平台游戏

Microsoft GDK游戏开发实战指南:从零开始构建跨平台游戏

Microsoft GDK游戏开发实战指南:从零开始构建跨平台游戏 【免费下载链接】GDK Microsoft Public GDK 项目地址: https://gitcode.com/gh_mirrors/gd/GDK Microsoft Game Development Kit(GDK)是微软为游戏开发者提供的统一开发工具包&…

2026/6/18 8:06:12阅读更多 →
2026免费本地视频去水印软件推荐!无联网开源工具+手机免费无水印APP全攻略

2026免费本地视频去水印软件推荐!无联网开源工具+手机免费无水印APP全攻略

日常剪辑素材、保存的短视频、电脑录屏总会自带平台水印、logo角标,大部分在线去水印工具需要上传视频,不仅泄露隐私,还会压缩视频画质,同时不少付费工具价格高昂,普通个人用户完全没有必要花钱。本篇为2026年最新个人…

2026/6/18 8:06:12阅读更多 →
Aimless.js API完全参考手册:所有函数用法和参数详解

Aimless.js API完全参考手册:所有函数用法和参数详解

Aimless.js API完全参考手册:所有函数用法和参数详解 【免费下载链接】aimless.js The missing JavaScript randomness library. 项目地址: https://gitcode.com/gh_mirrors/ai/aimless.js Aimless.js是JavaScript中缺失的随机性库,提供了丰富的随…

2026/6/18 8:06:12阅读更多 →
LX Music桌面版:一站式解决多平台音乐聚合与播放的终极方案

LX Music桌面版:一站式解决多平台音乐聚合与播放的终极方案

LX Music桌面版:一站式解决多平台音乐聚合与播放的终极方案 【免费下载链接】lx-music-desktop 一个基于 Electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop 你是否厌倦了在网易云、QQ音乐、酷狗等多个音乐平台间来回…

2026/6/18 9:31:56阅读更多 →
医用软件与PEMS的区别及对应文件体系详解

医用软件与PEMS的区别及对应文件体系详解

引言 在医疗器械监管领域,“医用软件”和“PEMS”(可编程电气医疗系统)是两个密切相关但又存在重要区别的概念。对于医疗器械制造商、研发人员和注册申报人员而言,清晰理解二者的定义、适用范围以及对应的文件要求,是确…

2026/6/18 9:31:56阅读更多 →
贝叶斯建模预测足球胜率:从概率分布到动态先验

贝叶斯建模预测足球胜率:从概率分布到动态先验

1. 项目概述:用贝叶斯建模预测英超胜率,不是“猜比分”,而是量化“赢的可能性”你打开手机看球前,是不是习惯性点开某APP查一下“主队胜率62%”?这个数字怎么来的?是靠教练经验拍脑袋?还是把过去…

2026/6/18 9:31:56阅读更多 →
3步解锁百度网盘SVIP极速下载:macOS用户的终极提速方案

3步解锁百度网盘SVIP极速下载:macOS用户的终极提速方案

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

2026/6/18 9:31:56阅读更多 →
Pandas多维动态聚合:金融场景下的生产级实践指南

Pandas多维动态聚合:金融场景下的生产级实践指南

1. 项目概述:为什么多维聚合不是“加个groupby”那么简单 我在银行数据平台组干了八年,从最早用SQL写几十行嵌套子查询做客户分层,到后来在Spark上跑PB级交易流水,再到如今带团队设计实时风险指标引擎——所有这些活儿&#xff0c…

2026/6/18 9:31:56阅读更多 →
专题二:C++算法学习——滑动窗口_长度最小的子数组、

专题二:C++算法学习——滑动窗口_长度最小的子数组、

题目一:滑动窗口_长度最小的子数组一、题目2.算法原理解法一:暴力枚举所有子数组之和O(n的三次方)在sum的基础上加O(n的二次方 )解法二:利用单调性,使用“同向双指针”来优化同向双指针(滑动窗口)怎么用&am…

2026/6/18 9:26:55阅读更多 →
ZigBee HA智能家居开发实战:从集群模型到NXP JN516x代码实现

ZigBee HA智能家居开发实战:从集群模型到NXP JN516x代码实现

1. ZigBee HA:智能家居的“通用语言”与开发基石如果你正在或计划踏入智能家居设备开发领域,尤其是基于ZigBee协议,那么“ZigBee Home Automation”这个名词你一定不陌生。它不仅仅是ZigBee联盟定义的一套应用层规范,更是确保不同…

2026/6/18 0:00:24阅读更多 →
Java毕设选题推荐:基于 Spring Boot 的个人随笔博客运维管理系统的设计与实现 基于 Spring Boot 的用户原创博客分享社区【附源码、mysql、文档、调试+代码讲解+全bao等】

Java毕设选题推荐:基于 Spring Boot 的个人随笔博客运维管理系统的设计与实现 基于 Spring Boot 的用户原创博客分享社区【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/6/18 0:00:24阅读更多 →
JN517x嵌入式开发实战:看门狗、脉冲计数器与I2C接口的深度解析与避坑指南

JN517x嵌入式开发实战:看门狗、脉冲计数器与I2C接口的深度解析与避坑指南

1. 项目概述在嵌入式开发领域,尤其是基于NXP JN517x这类无线微控制器的项目中,系统稳定性和与外设的可靠交互是两大核心挑战。前者关乎产品能否在无人值守的复杂环境中长期运行,后者则决定了设备能否准确感知世界并与其他芯片“对话”。JN517…

2026/6/18 0:00:24阅读更多 →