当前位置: 首页 > news >正文

CANN/asc-devkit Tiling模板参数选择宏

ASCENDC_TPL_SEL_PARAM

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

功能说明

Tiling模板编程时,开发者通过调用此接口自动生成并配置TilingKey。

使用该接口需要包含定义模板参数和模板参数组合的头文件。详细内容请参考Tiling模板编程。

函数原型

#define ASCENDC_TPL_SEL_PARAM(context, ...) \ do { \ uint64_t key = GET_TPL_TILING_KEY({__VA_ARGS__}); \ context->SetTilingKey(key); \ } while(0) // context指代TilingFunc(gert::TilingContext *context)中的context

参数说明

参数

输入/输出

说明

context

输入

TilingFunc注册上下文。

...

输入

可变长参数,模板参数的具体值,传入时需要与定义模板参数和模板参数组合的头文件中的模板参数顺序保持一致。

返回值说明

约束说明

调用示例

#include "tiling_key_add_custom.h" static ge::graphStatus TilingFunc(gert::TilingContext *context) { TilingDataTemplate tiling; uint32_t totalLength = context->GetInputShape(0)->GetOriginShape().GetShapeSize(); ge::DataType dtype_x = context->GetInputDesc(0)->GetDataType(); ge::DataType dtype_y = context->GetInputDesc(1)->GetDataType(); ge::DataType dtype_z = context->GetOutputDesc(0)->GetDataType(); uint32_t D_T_X = static_cast<int>(dtype_x), D_T_Y = static_cast<int>(dtype_y), D_T_Z = static_cast<int>(dtype_z), TILE_NUM = 1, IS_SPLIT = 0; if (totalLength < MIN_LENGTH_FOR_SPLIT) { IS_SPLIT = 0; TILE_NUM = 1; } else { IS_SPLIT = 1; TILE_NUM = DEFAULT_TILE_NUM; } context->SetBlockDim(NUM_BLOCKS); tiling.set_totalLength(totalLength); tiling.SaveToBuffer(context->GetRawTilingData()->GetData(), context->GetRawTilingData()->GetCapacity()); context->GetRawTilingData()->SetDataSize(tiling.GetDataSize()); ASCENDC_TPL_SEL_PARAM(context, D_T_X, D_T_Y, D_T_Z, TILE_NUM, IS_SPLIT); size_t *currentWorkspace = context->GetWorkspaceSizes(1); currentWorkspace[0] = 0; return ge::GRAPH_SUCCESS; }

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/855919/

相关文章:

  • Linux 软件包管理(含上机实例)
  • WS2812B灯条颜色错乱:从原理到实战的完整排查与解决方案
  • 告别邮件测试烦恼:MailHog一站式解决方案让开发调试更高效
  • HarmonyOS 6(API 23)实战1
  • 为什么你需要一个完整的Unity历史版本下载库?开发者必备的版本管理解决方案
  • 面试官:你知道的限流算法有哪些?
  • Prodigal基因预测工具:3天快速掌握原核生物基因发现终极指南
  • 刚入职大厂三个月被边缘化?2026 留学生警惕“安静解雇”的隐性寒冬
  • CANN/asc-devkit:half2相等比较函数
  • Zynq Z7 DDR布线翻车实录:从信号完整性仿真到实测,我们踩了这些坑
  • 独角数卡支付系统:如何构建高可用的自动售货支付解决方案
  • GTA5终极防护与增强指南:YimMenu完整使用教程
  • FSAC赛车手经验谈:为什么我们放弃MPC,选择了基于运动学的离散LQR做轨迹跟踪?
  • 告别调参噩梦:f-AnoGAN在缺陷检测中的三种编码器结构(ziz/izi/izif)到底怎么选?
  • YimMenu完整指南:如何免费获得GTA5最强防护与游戏增强体验
  • CANN/asc-devkit float2到half2向上取整转换函数
  • 2026铝合金桥架定制哪家强?不锈钢桥架定制厂家源头直销,一站式服务 - 栗子测评
  • 终极指南:5分钟实现直播实时操作可视化
  • MATLAB强化学习实战:用DDPG和TD3教Biped机器人走路,哪个更稳?
  • Python Tkinter + 多线程:手把手教你做个不卡顿的TXT文本去重小工具(附完整源码)
  • CANN/asc-devkit:half2half_rz精度转换
  • 用P4和BMv2在Ubuntu上快速搭建一个可编程三层交换机(附完整代码和避坑指南)
  • 镀锌线槽现货推荐:2026靠谱热浸锌线槽/PVC线槽/母线槽定制厂家推荐指南 - 栗子测评
  • 如何用Sunshine打造家庭游戏云:免费开源的游戏串流终极指南
  • RK3568实战:交叉编译FFmpeg时遇到的‘unknown mnemonic’错误,我是这样解决的
  • 2026年知名的三亚别墅庭院设计施工装修/三亚自建房设计装修/三亚全案设计施工装修品牌公司推荐 - 品牌宣传支持者
  • 面试官视角:我为什么总爱问C语言static、volatile和extern?
  • 如何高效获得GitHub社区认可:开发者的3个实用徽章获取策略
  • AI的核心是算力,算力的核心是Token,那么Token到底是什么?
  • CANN/asc-devkit动态编译静态标志