【2023 · CANN训练营第一季】Ascend C算子开发入门(上)

1.课程简介

课程地址

第一章 Ascend C(旧名TIK C++)算子开发入门

https://www.hiascend.com/zh/developer/courses/detail/1627494761683783682

课程视频

https://space.bilibili.com/1190614918/channel/collectiondetail?sid=1201995

TIK2文档

https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/63RC1alpha002/operatordevelopment/tik2opdevg/atlastik2_10_0001.html

在线实验>基于昇腾CANN的TIK C++算子开发

https://www.hiascend.com/zh/edu/experiment/detail/Tik_xl

示例代码

https://gitee.com/zgx950813/samples/blob/master/tik2_demo/kernel_samples/hello_world.cpp

2.前言

  • 当前TIK2支持的AI处理器型号为昇腾310P AI处理器、昇腾910 AI处理器,其他型号暂不支持
  • 当前支持用户使用g++等C/C++编译器编译在cpu侧执行的TIK2算子,并使用gdb单步调试;支持用户使用CCEC编译器编译在npu侧执行的TIK2算子,实现加速计算,暂不支持加载至网络模型中进行整网验证。

3.TIK C++算子开发入门

3.1介绍

【2023 · CANN训练营第一季】Ascend C算子开发入门(上)_第1张图片

3.2核函数概念

【2023 · CANN训练营第一季】Ascend C算子开发入门(上)_第2张图片

核函数有2个限定符,具体说明如下

extern "C" __global__ __aicore__ void HelloWorld(__gm__ uint8_t* foo) {}

【2023 · CANN训练营第一季】Ascend C算子开发入门(上)_第3张图片

 输入参数可统一使用__gm__ uint8_t类型,然后在函数体内再转化为实际的类型【2023 · CANN训练营第一季】Ascend C算子开发入门(上)_第4张图片

 核函数调用的3个参数,实际使用2个blockDim和Stream

【2023 · CANN训练营第一季】Ascend C算子开发入门(上)_第5张图片

使用宏__CCE_KT_TEST__来区分是在CPU模式或NPU模式下运行算子【2023 · CANN训练营第一季】Ascend C算子开发入门(上)_第6张图片

 样例代码详解

 【2023 · CANN训练营第一季】Ascend C算子开发入门(上)_第7张图片

 【2023 · CANN训练营第一季】Ascend C算子开发入门(上)_第8张图片

 【2023 · CANN训练营第一季】Ascend C算子开发入门(上)_第9张图片

 CPU模式和NPU模式下编译和运行的命令【2023 · CANN训练营第一季】Ascend C算子开发入门(上)_第10张图片

接口介绍

【2023 · CANN训练营第一季】Ascend C算子开发入门(上)_第11张图片

【2023 · CANN训练营第一季】Ascend C算子开发入门(上)_第12张图片

【2023 · CANN训练营第一季】Ascend C算子开发入门(上)_第13张图片

【2023 · CANN训练营第一季】Ascend C算子开发入门(上)_第14张图片

你可能感兴趣的:(c++,开发语言)