Ascend Pytorch算子功能验证

编写测试用例

以add算子为例,测试脚本文件命名为:add_testcase.py。以下示例仅为一个简单的用例实现,具体算子的实现,需要根据算子定义进行完整的覆盖才能保证功能的基本正确。

  1. 引入依赖库。
2.  import torch
3.  import numpy as np
4.  import sys
5.  import copy
from util_test import compare_res

说明:

其中,util_test为测试框架提供的文件,详细实现参考 附录->测试代码样例-> util_test.py,使用时应与testcase.py文件放在同一目录。

  1. 构造输入数据。
  2. 调用CPU及NPU完成计算,并比较二者的计算结果。
  3. 调度测试用例
7.  def generate_data(min, max, shape, dtype):
8.      input1 = np.random.uniform(min, max, shape).astype(dtype)
9.      input2 = np.random.uniform(min, max, shape).astype(dtype)
10.     
11.     #modify from numpy.ndarray to torch.tensor
12.     npu_input1 = torch.from_numpy(input1)
13.     npu_input2 = torch.from_numpy(input2)
14.  
    return npu_input1, npu_input2
16. def test_add_float16():
17.     npu_input1, npu_input2 = generate_data(0, 100, (5,3), np.float16)
18.     cpu_output = cpu_op_exec(npu_input1, npu_input2)
19.     npu_output = npu_op_exec(npu_input1, npu_input2)
    compare_res(cpu_output, npu_output, sys._getframe().f_code.co_name)
21. def test_add():
22.     # testcase list
23.     test_add_float16() 
24.  
25. if __name__ == '__main__':
26.     # 当前版本需要调用如下代码
27.     torch.npu.set_device("npu:0")      //注意 "npu:x"中的x的填写参见说明
    test_add()

说明:

set_device("npu:0") 这个接口的作用是指定用例运行的NPU设备ID。

设置运行环境变量

export LD_LIBRARY_PATH=/usr/local/lib/:/usr/lib/:/usr/local/Ascend/fwkacllib/lib64/:/usr/local/Ascend/driver/lib64/common/:/usr/local/Ascend/driver/lib64/driver/:/usr/local/Ascend/add-ons/:/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
export PATH=$PATH:/usr/local/Ascend/fwkacllib/ccec_compiler/bin
export ASCEND_OPP_PATH=/usr/local/Ascend/opp
 
export NEW_GE_FE_ID=1
export GE_AICPU_FLAG=1
 
export PYTHONPATH=/usr/local/Ascend/atc/python/site-packages/:/usr/local/Ascend/atc/python/site-packages/auto_tune.egg/auto_tune:/usr/local/Ascend/atc/python/site-packages/schedule_search.egg
export CUSTOM_OP_LIB_PATH=/usr/local/Ascend/ops/framework/built-in/tensorflow
export OPTION_EXEC_EXTERN_PLUGIN_PATH=/usr/local/Ascend/fwkacllib/lib64/plugin/opskernel/libfe.so:/usr/local/Ascend/fwkacllib/lib64/plugin/opskernel/libaicpu_plugin.so:/usr/local/Ascend/fwkacllib/lib64/plugin/opskernel/libge_local_engine.so
export PLUGIN_LOAD_PATH=/usr/local/Ascend/fwkacllib/lib64/plugin/opskernel/libfe.so:/usr/local/Ascend/fwkacllib/lib64/plugin/opskernel/libaicpu_plugin.so:/usr/local/Ascend/fwkacllib/lib64/plugin/opskernel/libge_local_engine.so:/usr/local/Ascend/fwkacllib/lib64/plugin/opskernel/librts_engine.so

说明:

上述环境变量实际路径/usr/local/Ascend/需要根据开发套件等的安装路径进行相应的调整。普通用户进行调试时,将“自定义TBE算子”安装至个人工作目录(当前版本要求与Ascend-opp-*.run的安装目录一致,如Ascend-opp-*.run安装在"/home/username/.local/Ascend"),则需修改上述环境变量中的内容:

export ASCEND_OPP_PATH=~/.local/Ascend/opp
export CUSTOM_OP_LIB_PATH=~/.local/Ascend/opp/framework/custom/tensorflow

执行测试用例脚本

进入add_testcase.py所在的目录,执行:

python3.7.5 add_testcase.py

运行结束,可能会提示一个错误“THPModule_npu_shutdown failed.”,此错误不影响结果,请忽略。

Ascend Pytorch算子功能验证的更多相关文章

  1. Ascend Pytorch算子适配层开发

    Ascend Pytorch算子适配层开发 适配方法 找到和PyTorch算子功能对应的NPU TBE算子,根据算子功能计算出输出Tensor的size,再根据TBE算子原型构造对应的input/ou ...

  2. SuperMap-iServer-单点登录功能验证(CAS)

    SuperMap-iServer-单点登录功能验证(CAS) 1.测试目的: 验证SuperMap-iServer使用CAS单点登录的功能是否正常. 2.测试环境: SuperMap-iServer8 ...

  3. ASIC 前端功能验证等级与对应年薪划分[个人意见] (2011-07-04 15:33:35

    下面的讨论转载自eetop,我选取了一些有意义的讨论,加了我的评注. 楼主zhhzhuawei认为 ===================================== 对于ASIC的前端功能验 ...

  4. (原)CNN中的卷积、1x1卷积及在pytorch中的验证

    转载请注明处处: http://www.cnblogs.com/darkknightzh/p/9017854.html 参考网址: https://pytorch.org/docs/stable/nn ...

  5. VSM Import Cluster功能验证一(准备篇)

    一.概述 本文档记录了VSM Import Cluster功能验证过程及过程中遇到的问题. 二.准备 2.1.网络规划 1) Management Network:VSM控制节点对其他节点的管理网络, ...

  6. 116-基于5VLX110T FPGA FMC接口功能验证6U CPCI平台 光纤PCIe卡

    基于5VLX110T FPGA FMC接口功能验证6U CPCI平台 一.板卡概述 本板卡是Xilinx公司芯片V5系列芯片设计信号处理板卡.由一片Xilinx公司的XC5VLX110T-1FF113 ...

  7. kafka 消费组功能验证以及消费者数据重复数据丢失问题说明 3

    原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 背景 上一篇文章记录了kafka的副本机制和容错功能的说明,本篇则主要在上一篇文章的基础上 ...

  8. [RM HA 1] Cloudera CDH5 RM HA功能验证

    简介: 最新的Cloudera CDH5.0.0 beta版本已经支持RM的HA, 笔者为此简单验证了RM HA的功能. 后续将继续分析其HA的原理,以及其与社区RM HA的区别. 集群部属与RM f ...

  9. Mol Cell Proteomics. |阳梦如|富马酸二甲酯在神经元和星形胶质细胞中新蛋白质靶点的鉴定及相关功能验证

    大家好,本周分享的是发表在Molecular & Cellular Proteomics.上的一篇关于富马酸二甲酯在脑细胞蛋白质中新作用靶点的鉴定及功能性验证的文章,题目是Identifica ...

随机推荐

  1. 简谈Mysql悲观锁和乐观锁

    悲观锁: 其实理解起来非常简单,当数据被外界修改持保守态度,包括自身系统当前的其他事务,以及来自外部系统的事务处理,因此,在整个数据处理过程中,将数据处于锁定状态.悲观锁的实现,往往依靠数据库提供的锁 ...

  2. Thinkphp之PHPExcel类库函数的官方读取的几个例子

    1.使用 PHPExcel_IOFactory 读取文件 $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); 2.使用一个特定的读取类,读 ...

  3. 怎样用SQL修改某个字段的部分内容

    方法:update dede_addonarticle set body = replace(body,'#p#分页标题#e#',' ') where body like '%#p#分页标题#e#%'

  4. featuretools的几个高级特性

    摘要:记录工作中用到的featuretools的部分高级特性. 1.防止信息泄露 在调用dfs时,将主表的观测时间列连同id列作为cutoff_time,可以在构造特征时自动将子表中在cutoff_t ...

  5. Faust——python分布式流式处理框架

    摘要 Faust是用python开发的一个分布式流式处理框架.在一个机器学习应用中,机器学习算法可能被用于数据流实时处理的各个环节,而不是仅仅在推理阶段,算法也不仅仅局限于常见的分类回归算法,而是会根 ...

  6. Instagram 为什么不用redis

    Hi 我还是大粽子 碎碎念 让我比较兴奋的就是这段时间的文章,被感兴趣的同学一一关注,关注量上涨就是我的最大动力. 我每周都会输出至少3篇原创文章,希望能被更多的同学关注,点赞,在看,形成习惯. In ...

  7. .NET Core 对象( Transient、Scope、Singleton )生命周期详解 (对象创建以及释放)

    首先我们在VS2019中创建一个.NET Core的控制台程序,方便演示: 需要安装两个依赖包 Microsoft.Extensions.DependencyInjection 依赖注入对象的具体实现 ...

  8. makefile的函数集合

    strip函数:$(strip text) 函数功能:去除字符串空格函数 示例: STR =        a    b c      LOSTR = $(strip $(STR)) #结果是&quo ...

  9. welcome实现首页路由的重定向效果

    welcome实现首页路由的重定向效果 1.创建welcome组件 2.在路由中引入组件并配置子组件 3.在home.vue中添加路由占位符 4.测试

  10. 【转载】认识SSD的SATA、mSATA 、PCIe和M.2四种主流接口

    认识SSD的SATA.mSATA .PCIe和M.2四种主流接口 2018-09-25 • 工具 • 评论关闭 认识SSD的SATA.mSATA .PCIe和M.2四种主流接口