【CANN训练营】Sinh算子

举报
yd_Zixin 发表于 2023/01/08 18:26:34 2023/01/08
【摘要】 【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

修改精度并运行


结果对比

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。