昇腾Ascend C算子开发––Sinh算子开发学习笔记

考题:实现Ascend C算子Sinh,算子命名为SinhCustom,编写其kernel侧代码、host侧代码,并完成aclnn算子调用测试

相关算法:sinh(x)=(exp(x)–exp(–x))/2.0

算子开发流程

e72acfeae68d45518a78ae8c0146ad9c.jpg

对应题目,本题主要解决的是核函数代码,Kernel侧代码、Host 侧代码,单算子调用时的代码。

算子的分析计算过程分为三个阶段:

CopyIn:搬入x到Local内存

Compute:使用Local内存进行计算

CopyOut:搬运Local计算结果到z

算子开发:可参考官方文档给出的add算子范例

首先对于kernel侧,需要修改参数相关,例如,对于函数入口处:

17ac72fe8ccf42c8b819332f8ea4fd9a.jpg

函数x作为输入,y作为输出,并调用Init方法初始化后,调用Process方法进行计算

Process方法中需要将计算逻辑修改为Sinh的计算逻辑:

29279656fd6e422c942d20dc675e4e23.jpg

首先求exp(x),然后求其倒数exp(-x),相减之后乘以0.5即可

构建编译和安装测试:完成算子开发后,使用指令bash build.sh 进行编译构建。在构建的过程中出现如下报错:

fbc2bbca1ac0480889d0c87f6bdddd23.jpg

需要执行指令chmod +x * –R来授予权限

构建成功后依次执行下列指令完成将构建好的算子包安装到环境中

cd build.out

./custom_opp_ubuntu_aarch64.run

接着进入AclNNInvocation目录执行

bash run.sh

指令进行测试

3daabc4b5a46454facdf77027fc2edfe.jpg

出现上图所示则表明测试成功

实践感想:

我之前没有AI相关编程经验,因此第一次接触算子的概念,经过老师的讲解和文档的阅读,我将算子理解为一个进行运算的一个函数,这个函数使用aicore_函数类型限定符来标识该核函数在设备端AI Core 上执行,并且流程都十分相似:先进行初始化,接着核函数的实现分为3个基本任务:Copyln, Compute, CopyQut,而算子之间主要就是Compute 部分的不同,其次就是参数的不同

通过此次实践活动,我的收获很多,不仅对异腾有了初步的了解,还上机实操了Ascend C算子的开发。并且深深认识到开发属于我国独立研发的AI框架和生态有多么重要。

### 如何在 RStudio安装配置 Rtools #### 创建 Renviron 文件并指定 Rtools 路径 为了使 R 和 RStudio 正确识别 Rtools,需创建 `.Renviron` 文件来设置环境变量。对于特定版本的 Rtools(如 Rtools40),可以执行如下命令: ```r writeLines('PATH="${RTOOLS40_HOME}\\usr\\bin;${PATH}"', con = "~/.Renviron") ``` 此操作会向用户的环境中添加必要的路径以便于后续编译工具链正常工作[^3]。 #### 验证 make 工具可用性 通过输入 `Sys.which("make")` 来确认系统能够找到 GNU Make 实用程序,这是构建某些软件包所必需的一部分。如果返回非空字符串,则表示成功找到了该工具;反之则可能意味着路径未被正确加入到系统的 PATH 变量中[^1]。 #### 安装 IRkernel 并注册 Jupyter Kernel 为了让基于 Python 的集成开发环境像 VSCode 支持 R 语言内核,可以通过以下两条指令完成 IRkernel 的安装及其规格说明文件写入: ```r install.packages('IRkernel') IRkernel::installspec() ``` 上述过程不仅有助于跨平台交互分析框架间的协作,同时也简化了多语言编程环境下数据科学工作的流程[^2]。 #### 使用清华镜像源加速下载速度 考虑到国内网络状况,建议采用清华大学开源软件镜像站作为 CRAN 的默认仓库地址,从而提高资源获取效率。可以在安装任何新包之前临时更改远程服务器位置为 Tsinghua University 提供的服务节点[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值