【CANN训练营】Sinh算子

在完成环境部署后,进行算子开发。

2 创建项目

新建项目Ascend Operator,创建算子工程

选择算子类型

算子信息库选择

算子工程创建成功

3算子原型实现

在该文件下

写入:输入x的形状、数据类型

IMPLEMT_COMMON_INFERFUNC(SinhInferShape)
{
    auto x = op.GetInputDescByName("x");
    auto x_shape = x.GetShape();
    auto x_type = x.GetDataType();
    return GRAPH_SUCCESS;
}

写入:输出y的形状、数据类型

4 UT测试

右键project-new cases-UT Case

生成两个文件:分别为算子原型UT与算子实现UT

Ctrl+/ 取消代码注释

按照 实际情况修改输入情况,运行UT

5算子实现

实现sinh计算:sinh(x)=(exp(x)-exp(-x))/2.0

@register_op_compute("sinh")
def sinh_compute(x, y, kernel_name="sinh"):
    """
    To do: Implement the operator by referring to the
           TBE Operator Development Guide.
    """
    exp_res = tbe.vexp(x)
    un_exp_res = tbe.vexp(-x)
    sub_res = tbe.vsub(exp_res,un_exp_res)
    two_tensor = tbe.broadcast(2.0,x.shape,x.dtype)
    div_res = tbe.vdiv(sub_res,two_tensor)

return div_res

6 编译

设置环境变量,填入/home/HwHiAiUser/Ascend/ascend-toolkit/latest/include

编译成功

7 ST测试

右键项目-新建ST case

输入输出形状一致

在st目录下新建预期函数python file

命名

写入:

import numpy as np
def calc_expect_func(x,y):
    res = np.cosh(x["value"])
    return [res, ]

右键打开st工程目录

获取路径:
C:\Users\13073\MindstudioProjects\Sinh\testcases\st\sinh\ascend910a

函数填入:calc_expect_func

点击run
配置环境变量,参考网站ST测试-TBE算子开发-算子开发-用户指南-5.0.RC3-MindStudio-文档首页-昇腾社区 (hiascend.com)
ASCEND_DRIVER_PATH
/home/HwHiAiUser/Ascend/driver
ASCEND_HOME
/home/HwHiAiUser/Ascend/ascend-toolkit/latest

修改精度并运行


结果对比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华为账号hw_Zixin 小鱼儿梦想+

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值