版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Copyright Huawei Technologies Co., Ltd. All rights reserved. CANN的TBE算子开发实战(DSL方式)Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 1 培训目标l学完本课程后,您应该能:p运用TBE框架的DSL方式开发自定义算子。p理解TBE算子编译过程。p生成TBE算子可执行文件。Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 2 目录1. TBE算子详解 2.1
2、 Hello World 2.2 TBE算子代码结构 2.3 TBE框架ComputeAPI2. TBE算子编译过程Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 3 缩略语lCANN:Compute Architecture for Neural NetworklACL:Ascend Computing LanguagelATC:Ascend Tensor CompilerlTBE:Tensor Booster EnginelDSL:Domain Specific LanguagelTIK: Tensor I
3、terator KernellCCE:The cube-based computing EngineCopyright Huawei Technologies Co., Ltd. All rights reserved. Page 4l目标 使用DSL语言实现平方根功能的TBE算子。l 算子分析 接口命名: sqrt() 数学表达式分析: Sqrt算子功能是对tensor中每个原子值求平方,数学表达式为 DSL接口分析:根据当前TBE框架可支持的计算描述API,采用如下公式来表达sqrt算子的计算过程。Hello WorldCopyright Huawei Technologies Co.,
4、Ltd. All rights reserved. Page 5Hello World(续)def sqrt_compute(data, dtype, kernel_name=sqrt_cce): data = tvm.placeholder(shape, name=data, dtype=dtype) log_val = dsl.vlog(data) const_val = tvm.const(0.5, float32) mul_val = dsl.vmuls(log_val, const_val) res = dsl.vexp(mul_val) if dtype = float16: re
5、s = dsl.cast_to(res, float16) return res Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 6Hello World(续)def sqrt (input_x, output_y, kernel_name=sqrt): shape = input_x.get(shape) dtype = input_x.get(dtype) data = tvm.placeholder(shape, name=data, dtype=dtype) res = sqrt_compute(dat
6、a, dtype, kernel_name) with tvm.target.cce(): sch = dsl.auto_schedule(res) config = name: kernel_name,tensor_list: data, res dsl.build(sch, config) Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 7TBE算子代码结构-TBE算子入参lTBE算子基本入参 def sqrt (shape, dtype, kernel_name=sqrt, need_build=Fals
7、e, need_print=False): shape : Tensor的属性,表示Tensor的形状,用list或tuple类型表示。 例如(3, 2, 3)、(4, 10)。 dtype : Tensor的数据类型,用字符串类型表示。 例如“float32”、“float16”、“int8”等。1234 ( 2, 1, 2 )Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 8TBE算子代码结构输入占位符lTBE算子输入占位符 样例:data = tvm.placeholder(shape, name=dat
8、a, dtype=dtype) tvm.placeholder()是tvm框架的API,用来为算子执行时接收的数据占位,通俗理解与C语言中%d、%s一样,返回的是一个Tensor对象,上例中使用data表示;入参为shape,name,dtype,是为Tensor对象的属性。 这里的输入是指算子执行时的输入数据,与编译时期入参不同,编译时期入参(shape,type)是为了得到算子执行文件的入参。Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 9TBE算子代码结构定义计算过程lTBE算子中定义计算过程 定义计算
9、过程是指使用DSL语言,根据数学算式,描述出实现算子功能的计算步骤,以算子sqrt为例: log_val = dsl.vlog(data) const_val = tvm.const(0.5, float32) mul_val = dsl.vmuls(log_val, const_val) res = dsl.vexp(mul_val)根据sqrt算子的函数表达式,描述sqrt的计算过程如上所示,其中()皆为TBE框架的API.Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 10TBE算子代码结
10、构调度 & 构建lTBE算子中调度(schedule)操作 样例:sch = dsl.auto_schedule(res) 计算过程描述完之后,就会做调度;调度是与硬件相关的,功能主要是调整计算过程的逻辑,意图优化计算过程,使计算过程更高效,以及保证计算过程中占用硬件存储空间不会超过上限。 Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 11TBE算子代码结构调度&构建lTBE算子中的构建操作 样例 : dsl.build(sch, config) TBE框架提供了cce_build_code(
11、)API,传入schedule以及相关的配置项,即可完成编译,生成最终硬件可执行文件。Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 12TBE框架ComputeAPIlTBE框架提供描述计算过程的API: TBE算子都是调用框架提供的computeAPI来描述计算过程,接口皆为tbe.dsl.xx的形式;compute API 现根据功能类型可分为以下几类: Math计算接口 对Tensor中每个原子值分别做相同操作,样例中dsl.vabs 即对每个数值x求绝对值 NN计算接口 神经网络相关 Cast计算接口
12、 对Tensor中数据的数据类型进行转换,例如float16转换为float32 Reduce计算接口 对Tensor按轴进行操作,例如dsl.reduce_sum(raw_tensor, axis)表示对data按axis进行累加 Matmul计算接口 矩阵乘计算 Gemm计算接口 通用矩阵乘计算 卷积计算接口 包含2D卷积运算和3D卷积运算Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 13TBE框架ComputeAPI(续)lMath计算接口 : 对Tensor中每个原子值分别做相同操作。 单独对一个Te
13、nsor中每个值做操作,如dsl.vabs 即对每个数值x求绝对值: 输入两个shape相同的tensor,对应位置上的数值做操作,如dsl.vadd:Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 14TBE框架ComputeAPI(续)lMath计算接口 : 接收多个Tensor,计算逻辑依然是对应位置上的数值做计算。 lCast计算接口: 对Tensor做类型转换,满足一些计算过程描述的需要,比如样例中,把“float16”的Tensor转换为“float32”的Tensor,用以保证精度的要求。Copy
14、right Huawei Technologies Co., Ltd. All rights reserved. Page 15TBE框架ComputeAPI(续) 46121421212345678dsl.sum(data, 1)222Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 16TBE框架ComputeAPI(续)lbroadcast_compute 对Tensor按照目标shape进行广播,如shape为(2,1,2)的Tensor广播成(2,2,2)的Tensor ,举例如下: 123421212
15、123434Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 17TBE框架ComputeAPI(续) 除以上经常被使用的API,其他计算接口可参见TBE算子开发指南 Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 18 目录1. TBE算子详解2. TBE算子编译过程Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 19TBE算子相关概念-TBE算
16、子编译与应用TBE算子编译与应用 编译期 运行时 TBE算子经过编译,生成能够在硬件上运行的xxx.o形式的可执行文件,此为TBE算子在TBE框架下执行后的输出件。 DSL描述TBE 框架可执行xx.o文件TensorTensor可执行xx.o文件输入数据输出数据Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 20TBE算子编译过程TBE算子编译过程分为DSL-Schedule-pass-codegen四步lSchedule 经过Schedule,计算过程描述逻辑发生了转变,针对硬件的存储上限做了切分、合并等操
17、作。lPass Pass阶段会对计算过程描述进行指令替换,将数学方式表示的计算描述,映射为硬件可以读懂的指令,且会对指令进行优化,以获得更高效的性能,经过pass后,计算过程变为IR表示。lCodegen Codegen是TBE框架执行的最后一步,将Pass产生的IR构建为cce代码,进而经过compile生成二进制的可执行文件。Copyright Huawei Technologies Co., Ltd. All rights reserved. Page 21TBE算子编译过程(续)以计算过程中的一条DSL语句举例, dsl.vexp(mul_val),含义为对Tensor(mul_val)求e(x)1.经过TBE框架的schedule过程,DSL描述转变为Produce对象来表示计算过程,此时具有数据表示含义;2.经过pass层,produce对象中数学算式替换为指令描述;3.经过build cce 过程,produce 对象表示的计算过程完全转变为cce语句;4.最后经过compile,cce代码编译输出二进制可执行文件。Copyright Huawei Technologies Co., Ltd. All rights reserved.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 提升护理记录单书写质量的策略
- (新教材)2026年沪科版八年级下册数学 19.1 多边形内角和 课件
- 大丰高级中学高一英语下学期月学情调研考试
- 2025年办公楼智能照明系统维保合同协议
- 服装成品外观质量检验规范
- 2025年自贸区跨境文化交流项目
- 图论与动态规划
- 基于AI的鼠标轨迹预测模型
- 2026 年中职俱乐部体育 Ⅳ(户外拓展训练)试题及答案
- 西顿动物记的题目及答案
- DG-TJ08-506-2025 人工砂在混凝土中的应用技术标准
- 北京市朝阳区2024-2025学年八年级上学期期末考试物理试题
- 人工智能助力医疗保障精细化管理研究报告
- 骶尾部藏毛疾病诊治中国专家共识(2023版)解读 4
- 沥青拌合站模块化设计与建设技术路线
- 2025年山东省政府采购评审专家考试题库附含答案
- 2025年公务员、事业单位面试题库(附答案)
- 西游记第十四回课件
- 2025年中医经典考试题目及答案
- 国开学习网《园林树木学》形考任务1234答案
- 胶质瘤的围手术期护理
评论
0/150
提交评论