【2023·CANN训练营第一季】TIK C++入门基本知识

TIKC++是一种使用C/C++进行算子开发的工具,它通过四层接口抽象和并行编程范式提升效率。核函数是设备侧执行的关键,使用__global__和__aicore__函数类型限定符标识。开发时需注意函数返回类型为void,支持指针和内置数据类型参数。
摘要由CSDN通过智能技术生成

TIK C++介绍

TIK C++ 是一种使用**C/C++** 作为前端语言的算子开发工具,通过四层接口抽象、并行编程范式、孪生调试等技术,极大提高算子开发效率,助力Al开发者低成本完成算子开发和模型调优部署

使用TIK C++开发自定义算子的优势:

  • C/C++原语言编程
  • 编程模型屏蘞硬件差异,编程范式提高开发效率
  • 多层级API封装,从简单到灵活,兼顾易用与高效
  • 孪生调试,CPU侧模拟NPU侧的行为,可先在CPU侧调试

核函数

核函数 (Kernel Function) 是TIK C++算子设备侧的入口。TIK C++允许用户使用核函数这种C/C++函数的语法扩展来管理设备仅的运行代码,用户在核西数中实现算子透辑的编写,例如自定义算子类及其成员函数以实现该算子的所有功能。核函数是主机侧和设备侧连接的桥梁

TIK C++和CUDA的差异

TIK C++和CUDA的差异

核函数是直接在设备侧执行的代码。在核函数中,需要为在一个核上执行的代码规定要进行的数据访问和计算操作当核函数被调用时,多个核将并行执行同一个计算任务

编写核函数

函数类型限定符

除了需要按照C/C++函数声明的方式定义核函数之外,还要为核函数加上额外的函数类型限定符,包含含__global____aicore__

使用 __global__函数类型限定符来标识它是一个核函数,可以被 <<<...>>> 调用:使用 __aicore__函数类型限定符来标识该核函数在设备侧Al Core上执行:

函数类型限定符执行调用备注
__global__在设备侧执行<<<...>>>来调用必须为void返回值类型
__aicore__在设备侧执行仅从设备端调用-

函数类型限定符

变量类型限定符

为了方便:指针入参变量统一的类型定义为 __gm__ uint8_t

用户可统一使用*uint8_t*类型的指针,并在使用时转化为实际的指针类型;亦可直接传入实际的指针类型

变量类型限定符内存空间意义
__gm__驻留在Global Memory表明该指针变量指向Global Memory上某处内存地址

变量类型限定符

其他规则

  1. 必须具有void返回类型
  2. 使用extern "C"
  3. 仅支持入参为指针类型或C/C++内置数据类型(Primitive Data Types),如:half* s0float* s1int32_t c
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值