考题
参考tensorflow的Sinh算子,实现Ascend C算子Sinh,算子命名为SinhCustom,并完成aclnn算子调用相关算法: sinh(x) = (exp(x) - exp(-x)) / 2.0
要求:
1、完成host侧和kernel侧代码实现。
2、实现sinh功能,支持float16类型输入,使用内核调试符方式调用算子测试通过。
3、使用单算子API调用方式调用SinhCustom算子测试通过
提交要求:
完成编程后,将上述实现的工程代码打包在rar包内提交,如SinhCustom.rar.
服务器资源
这是一台有8张昇腾910A的服务器,已装23.0.rc1版本的驱动

资料汇总
CANN文档
昇腾样例
CANN社区版下载
sinh算子开发记录
1.安装cann包
下载安装包`Ascend-cann-toolkit_7.0.RC1.alpha002_linux-aarch64.run`
使用
指令安装在个人用户目录

环境初始化
2.安装python环境
我这里安装了miniforge3并创建了一个conda环境,修改源之后安装一些需要用到的基础库
3.运行sample仓库示例
克隆代码仓
内核调试符方式调用算子的代码示例在如下目录:
这里需要先修改`kernel_invocation/kernel_template/run.sh`文件的`ASCEND_HOME_DIR`变量

运行

单算子API调用方式的代码示例在如下目录:
4.sinh算子内核调试符方式
可以直接基于sample仓的Add进行修改,首先编写真值生成脚本

修改核函数计算逻辑

把输入从2个改成1个,就可以运行了

结果文件的md5码不一致,把值打印出来看一下

看起来只是有一点精度误差。
动态shape的修改方式也是类似的,基于Add_tile进行修改,先编辑真值生成脚本

修改计算逻辑,然后把输入从2个改成1个就可以运行了

5.sinh算子API调用方式
编写SinhCustom算子的原型定义json文件,用于生成SinhCustom的算子开发工程

使用msopgen工具生成AddCustom算子的开发工程
修改`CMakePresets.json`文件的`ASCEND_CANN_PACKAGE_PATH`
运行build.sh脚本,报错了

百度说没缺个包,装一下
成功了

安装包部署

部署成功后就可以在这个目录下面找到算子

可以调用的API函数在SinhCustom/build_out/autogen/aclnn_sinh_custom.h

准备验证代码工程,可以从sample仓获取样例工程的完整样例
修改路径变量

make,报错了

设置一下环境变量

成功了,之后可以运行这个可执行文件

验证结果

考题
参考tensorflow的Sinh算子,实现Ascend C算子Sinh,算子命名为SinhCustom,并完成aclnn算子调用相关算法: sinh(x) = (exp(x) - exp(-x)) / 2.0
要求:
1、完成host侧和kernel侧代码实现。
2、实现sinh功能,支持float16类型输入,使用内核调试符方式调用算子测试通过。
3、使用单算子API调用方式调用SinhCustom算子测试通过
提交要求:
完成编程后,将上述实现的工程代码打包在rar包内提交,如SinhCustom.rar.
服务器资源
这是一台有8张昇腾910A的服务器,已装23.0.rc1版本的驱动
资料汇总
CANN文档
昇腾样例
CANN社区版下载
sinh算子开发记录
1.安装cann包
下载安装包`Ascend-cann-toolkit_7.0.RC1.alpha002_linux-aarch64.run`
使用
指令安装在个人用户目录
环境初始化
2.安装python环境
我这里安装了miniforge3并创建了一个conda环境,修改源之后安装一些需要用到的基础库
3.运行sample仓库示例
克隆代码仓
内核调试符方式调用算子的代码示例在如下目录:
这里需要先修改`kernel_invocation/kernel_template/run.sh`文件的`ASCEND_HOME_DIR`变量
运行
单算子API调用方式的代码示例在如下目录:
4.sinh算子内核调试符方式
可以直接基于sample仓的Add进行修改,首先编写真值生成脚本
修改核函数计算逻辑
把输入从2个改成1个,就可以运行了
结果文件的md5码不一致,把值打印出来看一下
看起来只是有一点精度误差。
动态shape的修改方式也是类似的,基于Add_tile进行修改,先编辑真值生成脚本
修改计算逻辑,然后把输入从2个改成1个就可以运行了
5.sinh算子API调用方式
编写SinhCustom算子的原型定义json文件,用于生成SinhCustom的算子开发工程
使用msopgen工具生成AddCustom算子的开发工程
修改`CMakePresets.json`文件的`ASCEND_CANN_PACKAGE_PATH`
"ASCEND_CANN_PACKAGE_PATH": { "type": "PATH", "value": "/home/yangk/Ascend/ascend-toolkit/latest" }, "ENABLE_BINARY_PACKAGE": { "type": "BOOL", "value": "True" },运行build.sh脚本,报错了
百度说没缺个包,装一下
成功了
安装包部署
部署成功后就可以在这个目录下面找到算子
可以调用的API函数在SinhCustom/build_out/autogen/aclnn_sinh_custom.h
准备验证代码工程,可以从sample仓获取样例工程的完整样例
修改路径变量
make,报错了
设置一下环境变量
export DDK_PATH=${ASCEND_TOOLKIT_HOME} export NPU_HOST_LIB=${ASCEND_TOOLKIT_HOME}/aarch64-linux/lib64成功了,之后可以运行这个可执行文件
验证结果