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

CANN/asc-devkit Tiling数据指针获取

GET_TILING_DATA_PTR_WITH_STRUCT

产品支持情况

产品

是否支持

Ascend 950PR/Ascend 950DT

Atlas A3 训练系列产品/Atlas A3 推理系列产品

Atlas A2 训练系列产品/Atlas A2 推理系列产品

Atlas 200I/500 A2 推理产品

Atlas 推理系列产品AI Core

Atlas 推理系列产品Vector Core

Atlas 训练系列产品

x

功能说明

在使用该宏时,开发者可以通过指定结构体名称来获取相应的Tiling信息,并将其填入对应的Tiling结构体中。完成填充后,该宏将返回一个指向该Tiling结构体的指针,并使用__tiling_data_ptr__修饰符对该指针进行修饰。这种修饰方式能够确保在动静态Shape场景下代码的统一性和兼容性。

函数原型

GET_TILING_DATA_PTR_WITH_STRUCT(tiling_struct, dst_ptr, tiling_ptr)

参数说明

参数

输入/输出

说明

tiling_struct

输入

指定的结构体名称。

dst_ptr

输出

返回指定的Tiling结构体指针。

tiling_ptr

输入

算子入口函数处传入的Tiling参数。

约束说明

  • 该宏需在算子Kernel代码处使用,并且传入的dst_ptr参数无需声明类型。
  • 动态Shape场景下,获取到的dst_ptr是指向Global Memory变量的指针;静态Shape场景下,获取到的dst_ptr是指向局部变量的指针,需确保在合理的作用域范围内使用。
  • 暂不支持Kernel直调工程。

调用示例

extern "C" __global__ __aicore__ void add_custom(__gm__ uint8_t *x, __gm__ uint8_t *y, __gm__ uint8_t *z, __gm__ uint8_t *tiling) { KernelAdd op; GET_TILING_DATA_PTR_WITH_STRUCT(AddCustomTilingData, tilingDataPtr, tiling); op.Init(x, y, z, tilingDataPtr->totalLength, tilingDataPtr->tileNum); op.Process(); }

以下是错误调用的示例:

__aicore__ __tiling_data_ptr__ AddCustomTilingData* foo(__gm__ uint8_t *tiling) { GET_TILING_DATA_PTR_WITH_STRUCT(AddCustomTilingData, tilingDataPtr, tiling); return tilingDataPtr; } extern "C" __global__ __aicore__ void add_custom(__gm__ uint8_t *x, __gm__ uint8_t *y, __gm__ uint8_t *z, __gm__ uint8_t *tiling) { KernelAdd op; auto tilingDataPtr = foo(tiling); // 错误,foo函数已经执行完成,非法访问生命周期已经结束的局部变量 op.Init(x, y, z, tilingDataPtr->totalLength, tilingDataPtr->tileNum); op.Process(); }

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

http://www.cnnetsun.cn/news/3402980.html

相关文章:

  • Arend证明助手:JetBrains开发的同伦类型论定理证明器完全指南
  • Django CMS 完整安装指南:5个步骤轻松搭建企业级内容管理系统
  • IIC 一主多从频繁总线死锁、数据乱跳?状态机分时通信根治方案
  • 收藏!别再死磕ChatGPT赚钱了,真正聪明的人早已换道超车!
  • HarmonyOS知识库——导航架构与路由传参的设计模式
  • 5步实现图片到3D打印模型的智能转换
  • 新手必看:yocto-meta-ros项目快速上手攻略
  • 神奇工具:5分钟在Windows上安装安卓应用,告别笨重模拟器
  • C语言学习笔记——动态内存分配
  • 无人机视角航拍河道巡检垃圾及周边坍塌隐患检测数据集VOC+YOLO格式6686张6类别
  • Vue3中computed详解
  • 048、手机影像调优实战:夜景模式、人像虚化与多摄融合的调试经验
  • 技术解析:ChanlunX缠论分析插件在通达信中的实现路径与架构设计
  • CANN/asc-devkit块内同步指令
  • openEuler内核故障排查终极指南:10个常见问题与解决方案大全
  • Loop:5分钟掌握Mac窗口管理终极技巧,告别桌面混乱
  • 从理论到实战:深度解析白盒测试七大覆盖准则及其在代码审查中的应用
  • 如何在Linux系统上轻松安装专业版Photoshop CC 2022:完整指南
  • 从卡文到爆更自由:ChatGPT辅助小说写作全流程拆解,含大纲生成→伏笔回收→风格克隆→版权合规四重关卡
  • CANN Ascend C GetAccVal API文档
  • 收藏!小白程序员轻松入门大模型,6大行业真实案例带你玩转Agent系统!
  • IGBT(绝缘栅双极型晶体管)简介
  • AirSim源码编译
  • 从界面到智能体:前端工程师的Agent开发进阶之路(收藏版)
  • 终极免费教程:5步让老旧Mac完美运行最新macOS系统
  • 技术选型指南:tiny11maker vs tiny11coremaker Windows 11镜像精简技术深度对比与最佳实践
  • Luanti模组开发进阶:从入门到精通的完整教程
  • CANN/asc-devkit SIMD-API数据搬运填充值设置
  • 知识体系即护城河:ChatGPT赋能下的个人IP底层架构(含2024最新RAG+Graph RAG双轨构建协议)
  • Laravel Developer Roadmap:数据库设计与Eloquent ORM实战指南