【2023 · CANN训练营第一季】课堂笔记3-算子的开发及验证
【2023 · CANN训练营第一季】课堂笔记3-算子的开发及验证
一、动态shape算子与固定shape算子
引入动态shape算子的背景条件:
当算子shape固定时,开发者使用不同shape时需要重新对算子进行编译,带来大量的算子二进制文件。
动态shape的算子可以将形状通过核函数的入参传入核函数内,参与内部逻辑计算,从而符合不同shape下的使用场景。
(资料图片仅供参考)
二者对比:
对固定算子的修改:
之前的固定算子,按照上节课的例子,是把数据分别分给8个核进行计算
而转换为动态算子,就需要将这些全局变量,都通过动态的形式作为可变的变量,这就代表着我们需要将这些全局变量作为入参进行输入进来。
基于现有的固定shape算子,将其改装为动态shape的算子。将控制形状的BLOCK DIM,TOTAL_LENGTH,TILE NUM这些变量依靠外界输入得到,在核
函数中额外传入一个tiling,它将指向控制核函数逻辑处理的至关重要的这几个变量
1.tiling结构体
根据上面的信息,我们可以分析得到结构体需要如下的内容
BLOCK DIM: 并行计算使用的核数
TOTAL LENGTH: 总共需要计算的数据个数
TILE NUM:每个核上计算数据分块的个数
但是前面文章内容中我们可以看出,入参需要统一为__gm__ uinit8_t*的形式,于是我们将结构体按照这种指针进行传入后,需要对该结构体进行解析,并
且还要区分是CPU侧和NPU侧的代码不同的执行
2.核函数对比
固定shape算子的核函数实现:
动态shape算子的核函数实现:
如上一小点所说,实际函数设计时,我们也需要的是将一些参数进行传入,并且进行解析,这样可以使我们随时改动传入的参数值
3.Init函数对比
在固定算子中,我们做逻辑地址区别时的参数也是由全局变量去决定的
在动态算子中,我们可以在相应的类中添加一些private的变量,以便可以从类中的函数直接调用其值
4.不同功能代码文件的区别
二、功能调试方法
TKC++提供孪生调试技术即在CPU模式下进行运实际上会创建个NPU的模型并模拟它的计算行为以此进行业务功能的调试。
相同的算子代码可以在CPU模式下进行精度调试,并无缝切换到NPU模式下运行
1.使用GDB调试
相关命令如下:
2.打印调试
在CPU代码侧直接插入C/C++的打印命令,如printf、std::cout,
PS:NPU模式下不支持打印语句,所以需要添加内置宏 CCE_KT_TEST 予以区分
三、测试验证
1.UT测试
按照一、4.点的不同功能代码的功能内容,我们可以做按照如下步骤
添加UT测试步骤:
1.cann_op_contrib/community/ops中新建用例目录并添加代码实现文件
2.cann_op_contrib/community/tests中新建用例目录并添加代码测试文件
3.在cann_op_contrib目录下执行./build.sh -u tik2
2.ST测试
1.cann_op_contrib/community/ops中新建用例目录并添加代码实现文件
2.cann_op_contrib/community/tests中新建用例目录并添加代码测试文件
3.在cann_op_contrib目录下执行后续打包算子,安装部署算子包和编译并执行测试用例的操作
3.对部分文件实现的简单讲解
(1)op_host/add_tik2_tiling.h
UT测试代码的tiling定义:
改写自动态shape的tiling解析函数:
只保留CPU模式下的处理逻辑,即将传入的tiling指针转化为tiling的结构体指针
ST测试代码的tiling定义:
提供了基于宏的封装模式: BEGIN_TILING_DATA_DEF定义了tiling结构体名称
TILING_DATA_FIELD_DEF定义了tiling中的成员变量
END_TILING_DATA DEF是结束定义的标志
REGISTER_TILING_DATA_CLASS完成注册,将算子类型与定义的tiling结构体绑定算子类型一般都是核函数名的大驼峰形式(核函数名一般为内核形式)
(2)op_host/add_tik2.cpp
host侧算子实现开发,包括算子原型注册、Shape推导等函数实现与注册、Tiling实现与注册和信息库配置
算子原型注册
算子原型描述了算子的输入输出,属性等信息,算子原型注册用于将算子注册到算子原型库中
Shape推导等函数实现与注册
根据算子的输入张量描述、算子逻辑及算子属性,推理出算子的输出张量描述,包括张量的Shape、数据类型及数据排布格式等信息。这样算子构图准备阶段就可以为所有的张量静态分配内存,避免动态内存分配带来的开销
推导函数的实现:
推导函数的注册:
Infershape:推理形状的函数
InfershapeRange: 推理形状中每个维度的范围的函数
InferDataType: 推理数据类型的函数
Tiling实现与注册
计算数据切分过程相关的参数,比如每次计算的数据量大小
TilingFunc: Tiling定义函数
TilingPrepare: Tiling解析函数
CheckOpsupport: 算子参数校验函数
OP_ADD:注册算子的原型定义
Tiling实现:
Tiling注册:
信息库配置(根据运行平台进行配置)
算子开发者需要通过配置算子信息库文件,将算子在昇腾AI处理器上相关实现信息注册到算子信息库中
(3)run_case.sh与test_add_tik2_data.py
CANN开发套件包中提供了ST测试工具: msopst,支持生成算子的ST测试用例并在硬件环境中执行
根据算子信息库定义文件(.ini)生成算子测试用例定义文件 (.json),作为算子ST测试用例的输入
根据算子测试用例定义文件生成ST测试数据及测试用例执行代码,在硬件环境上执行算子测试用例
自动生成运行报表 (st_report.son)功能,报表记录了测试用例信息及各阶段运行情况
根据用户定义并配置的算子期望数据生成函数,回显期望算子输出和实际算子输出的对比测试结果
(4)add_tik2.json
(5)生成测试用例与报告st_report.json
四、性能采集工具-msprof
性能采集步骤: 1.设置环境变量(异腾实际安装的位置): source /usr/local/Ascend/ascend-toolkit/../set_env.sh
2.测试NPU模式下的TIK C++算子,保证其精度正确,生成对应的二进制可执行文件: bash runsh add_tik2 ascend910 Aicore npu
3.使用msprof工具采集性能
4.使用命令(用户可以根据自身的需要灵活组合性能分析指令)
eg:
5.在当前目录会生成out文件夹,在device_0/summary/op_summary_0_1.csv能够看到一些具体的数据
ps:该文仅是为了记录CANN训练营的学习过程所用,不参与任何商业用途
标签:
推荐文章
- 华声制药网简介
- 人机对话技术升级 之江实验室获2021年度浙江省科技进步二等奖
- 研究人员最新发现 单个细胞可同时处理成百上千个信号
- 陆军第73集团军某旅 创新升级模拟训练器材
- 长期暴露在光照下性能退化 科学家发现钙钛矿太阳能电池最大缺陷
- 宁夏启动双百科技支撑行动 构建高水平产业创新体系
- 陆军炮兵防空兵学院 毕业学员综合战术演习现地备课工作圆满完成
- 国内首颗以茶叶冠名遥感卫星 安溪铁观音一号发射成功
- 区域特色产业转型升级 四川屏山以“3+”模式推进科技创新工作
- 激发创新动能促进产业发展 无锡滨湖走出产业转型“绿色”路
- 绥化全域低风险!黑龙江绥化北林区一地调整为低风险
- 走访抗美援朝纪念馆:长津湖的寒冷,与战斗一样残酷
- 节后第一天北京白天晴或多云利于出行 夜间起秋雨或再上线
- 走近网瘾少年们:他们沉迷网络的病根何在?
- “双减”后首个长假:亲子游、研学游需求集中释放
- 获2021年诺奖的蛋白,结构由中国学者率先解析
- 他从一窍不通的“门外汉”,到重装空投“兵专家”
- 升旗、巡岛、护航标、写日志,他们一生守护一座岛
- 中国故事丨“沉浸式”盘点今年的教育好声音!
- 农业农村部:确保秋粮丰收到手、明年夏季粮油播种
- “双减”出台两个月,组合拳如何直击减负难点?
- 《山海情》里“凌教授”的巨菌草丰收啦
- 且看新疆展新颜
- 天山脚下,触摸丝路发展新脉动
- 160万骑手疑似“被个体户”?平台不能当甩手掌柜
- 网游新政下,未成年人防沉迷的“主战场”在哪?
- “辱华车贴”商家及客服被行拘,处罚要不放过每一环
- 沙害是自然界的恶魔,而他是荒沙碱滩的征服者
- 面对婚姻,“互联网世代”的年轻人在忧虑什么?
- IP类城市缘何吸引力强?玩法创新带动游客年轻化
- 国庆主题花坛持续展摆至重阳节
- 都市小资还是潮流乐享?花草茶市场呈爆发性增长
- 从1.3万元降到700元,起诉书揭秘心脏支架“玄机”
- 北京国庆7天接待游客超861万人次 冬奥线路受青睐
- 陈毅元帅长子忆父亲叮嘱:你们自己学习要好,就可以做很多事儿
- 报告显示:这个国庆假期,粤川浙桂赣旅游热度最高
- 中国科技人才大数据:广东总量第一,“北上”这类人才多
- 嘉陵江出现有记录以来最强秋汛
- 全国模范法官周淑琴:为乡村群众点燃法治明灯
- 线上教学模式被盯上,网络付费刷课形成灰色产业链
- 云南保山:170公里边境线,4000余人日夜值守
- 警方查处故宫周边各类违法人员12人
- 农业农村部:确保秋粮丰收到手、明年夏季粮油播种
- 受南海热带低压影响 海南海口三港预计停运将持续到10日白天
- 多地网友投诉遭遇旅游消费骗局,呼吁有关部门严查乱象
- 神经科学“罗塞塔石碑”来了:迄今为止最完整的大脑细胞图谱
- 汾河新绛段发生决口
- 陕西支援14省份采暖季保供用煤3900万吨
- 这场红色故事“云比拼”,穿越时空为我们指引方向
- 受琼州海峡封航影响 10月7日、8日进出海南岛旅客列车停运
- 辽宁省工信厅发布10月8日电力缺口橙色预警
- 广州10月8日至20日对所有从省外来(返)穗人员实施核酸检测
- 假期怎么过得这么快?国庆5.15亿人次出游,你咋过的?
- 国庆假期全国道路交通总体安全平稳有序
- 哈尔滨市南岗区爱达88小区将调整为低风险地区
- 新疆霍尔果斯市2例无症状感染者新冠病毒均为德尔塔变异株
- 百闻不如一见——北京大学留学生参访新疆
- 看,生机勃勃的中国
- 国庆假期中国预计发送旅客4.03亿人次
- 新疆兵团可克达拉市:195名密接者已全部隔离医学观察
- 山西平遥消防4天29次救援:拖着腿走路也要完成任务
- 国庆假期北京接待游客861.1万人次
- 冷空气自西向东影响中国大部地区 气温将下降4℃至6℃
- 新疆哈密市巴里坤县发生4.3级地震 震源深度9千米
- 国庆假期中国国内旅游出游5.15亿人次
- 公安部交管局:国庆假期日均出动警力18万余人次,5位交警辅警牺牲
- 受南海热带低压影响广东将暂别高温天气
- “数说”杭州无障碍改造:触摸城市“爱的厚度”
- 新疆霍尔果斯无症状感染者新冠病毒属德尔塔变异株 未发现高度同源的基因组序列
- 新疆伊犁州:妥善做好滞留旅客安置返回工作
- 国庆假期广西累计接待游客逾3611万人次 实现旅游消费272.41亿元
- 2021年MAGIC3上海市青少年三对三超级篮球赛落幕
- 新疆兵团第四师可克达拉市1名无症状感染者为餐饮从业人员
- 哥伦比亚遇上广州:洋茶人“云上”喫茶 传播中国茶“味道”
- 厦门同安区四区域调整为低风险 全市无中高风险地区
- 直径2米“面气球”亮相 山西首届“寿阳味道”美食大赛启幕
- 世界第一埋深高速公路隧道大峡谷隧道出口端斜井掘进完成
- 浙南沿海村村发展有妙招 搭乘共富快车打造“海上花园”
- 新疆霍尔果斯两例无症状感染者新冠病毒均属德尔塔变异株
- 南沙港铁路国庆假期不停工 力争今年年底开通
- 添加陌生人为好友 内蒙古两女子被骗126万
- 中国国庆假期出行热:数字改变“关键小事”
- 水能载物亦能“生金” 浙江遂昌山村以水为媒奔共富
- 铁路人国庆雨中巡查排险记:一身雨衣、一把铁锹保安全畅通
- 铁路迎返程高峰 西安局集团公司加开79趟高铁列车
- 受热带低压影响 琼州海峡北岸等待过海车辆排长龙
- 哈尔滨市学校有序恢复线下教学
- 哈尔滨一地风险等级调整为低风险
- 从进“培训班”到看《长津湖》
- 安徽黄山国庆假期迎客12万余人 旅游市场稳步复苏
- 山西解除持续近90小时的暴雨四级应急响应
- 科学拦峰错峰削峰 嘉陵江洪水过境重庆中心城区“有惊无险”
- 粤高速大湾区路段假期车流集中 跨珠江口通道尤甚
- 千年街区“非遗”风催热国庆假期本地游
X 关闭
资讯
- 【2023 · CANN训练营第一季】课堂笔记3-算子的开发及验证
- 环球视讯!文心大模型上车:百度想要发起座舱交互革命
- 环球微头条丨灰色链珠环蝶_关于灰色链珠环蝶介绍
- 西南证券:给予星宇股份买入评级|世界观察
- 【世界时快讯】燃石医学(BNR.US)Q1营收同比增长5.2% 重申全年指引
- 护眼电脑桌面背景_护眼电脑桌面 每日热文
- 天天报道:2023国内LED产业链价格行情与发展态势
- 【原】真正治愈肩颈痹证的,是我们的身体经络畅通(常见病:肩颈痹痛)
- 2022年农村合作医疗缴费标准(2022年交了合作医疗还能退吗)-全球热点评
- 丛林的法则20160701_丛林的法则道歉到底怎么解决 世界时讯
- 扮装爱豆破解版_扮装|世界微资讯
- 康拓红外:公司尚未涉及相关领域,相关技术储备仅用于轨道交通领域
X 关闭