首页/新闻资讯/正文详情

CANN/cannbot-skills C/V融合计算参考

发布时间:2026/9/23 10:53:09 来源:云帆数科 栏目:资讯中心
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/9/22 17:36:34

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

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

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/9/21 21:29:11

ThinkPHP5架构与核心原理:从MVC到依赖注入、中间件的深度解析
ThinkPHP5架构与核心原理:从MVC到依赖注入、中间件的深度解析

引子:为什么面试官总爱问TP5的架构?近几年PHP面试题里,ThinkPHP 5(简称TP5)的架构和底层原理出现频率一直居高不下,哪怕新项目已经转向TP6、Hyperf甚至Go,TP5依然是很多团队遗留项目的底子。这个… · 2026/9/23 10:53:05

刘馨保姆级教程:3步搞定HTTP协议底层实战
刘馨保姆级教程:3步搞定HTTP协议底层实战

刘馨保姆级教程:3步搞定HTTP协议底层实战 官方文档太厚翻不动?别急。 刘馨这套保姆级教程,专治各种“看不懂”。 直接上代码,带你从零搭建一个符合 RFC 规范的 HTTP 服务器。 项目目标:别只背概念,要能跑通… · 2026/9/23 10:52:59

个人健康保险费用预测:从线性回归到XGBoost的实战解析
个人健康保险费用预测:从线性回归到XGBoost的实战解析

简介:面向机器学习与数据分析学习者,这套个人健康保险费用预测实战包,围绕个人健康保险费用数据集,完成从EDA探索、统计检验、特征工程到回归建模的完整流程。压缩包约58KB,共22个文件,含20个Python源代码脚… · 2026/9/23 10:52:59

Pointwise图解原理:3步搞定配置,避开80%的坑
Pointwise图解原理:3步搞定配置,避开80%的坑

Pointwise图解原理:3步搞定配置,避开80%的坑 刚接手新项目,想搭个Pointwise评测环境?别笑,我见过太多人在这一步卡了整整半天。 Python版本冲突、依赖包装不上、配置项看不懂,光看官方文档都能让人头大。其实,… · 2026/9/23 10:52:59

cytoscape.js 集合操作详解:eles.union() 合并元素集合的用法与底层实现
cytoscape.js 集合操作详解:eles.union() 合并元素集合的用法与底层实现

cytoscape.js 集合操作详解:eles.union() 合并元素集合的用法与底层实现 【免费下载链接】cytoscape.js Graph theory (network) library for visualisation and analysis 项目地址: https://gitcode.com/gh_mirrors/cy/cytoscape.js 本篇技术指南聚焦 cytos… · 2026/9/23 10:52:52

前端改错图解原理:5步搞定Stack Trace
前端改错图解原理:5步搞定Stack Trace

前端改错图解原理:5步搞定Stack Trace 刚毕业接老代码,Console 里飘着满屏红色的 Error,StackTrace 长得像天书。 别慌,别复制粘贴去搜,那只会让你更晕。 咱们得用图解原理把堆栈拆开,像剥洋葱一样找到病灶。… · 2026/9/23 10:52:52

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码