Ascend Pytorch算子功能验证
Ascend Pytorch算子功能驗(yàn)證
編寫測試用例
以add算子為例,測試腳本文件命名為:add_testcase.py。以下示例僅為一個簡單的用例實(shí)現(xiàn),具體算子的實(shí)現(xiàn),需要根據(jù)算子定義進(jìn)行完整的覆蓋才能保證功能的基本正確。
- 引入依賴庫。
- import torch
- import numpy as np
- import sys
- import copy
from util_test import compare_res
說明:
其中,util_test為測試框架提供的文件,詳細(xì)實(shí)現(xiàn)參考 附錄->測試代碼樣例-> util_test.py,使用時(shí)應(yīng)與testcase.py文件放在同一目錄。 - 構(gòu)造輸入數(shù)據(jù)。
- def generate_data(min, max, shape, dtype):
-
input1 = np.random.uniform(min, max, shape).astype(dtype) -
input2 = np.random.uniform(min, max, shape).astype(dtype) -
#modify from numpy.ndarray to torch.tensor -
npu_input1 = torch.from_numpy(input1) -
npu_input2 = torch.from_numpy(input2) - return npu_input1, npu_input2
- 調(diào)用CPU及NPU完成計(jì)算,并比較二者的計(jì)算結(jié)果。
- def test_add_float16():
-
npu_input1, npu_input2 = generate_data(0, 100, (5,3), np.float16) -
cpu_output = cpu_op_exec(npu_input1, npu_input2) -
compare_res(cpu_output, npu_output, sys._getframe().f_code.co_name)npu_output = npu_op_exec(npu_input1, npu_input2) - 調(diào)度測試用例
- def test_add():
-
# testcase list -
test_add_float16() - if name == ‘main’:
-
# 當(dāng)前版本需要調(diào)用如下代碼 -
test_add()torch.npu.set_device("npu:0") //注意 "npu:x"中的x的填寫參見說明
說明:
set_device(“npu:0”) 這個接口的作用是指定用例運(yùn)行的NPU設(shè)備ID。
設(shè)置運(yùn)行環(huán)境變量
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:LDLIBRARYPATHexportPATH=LD_LIBRARY_PATH export PATH=LDL?IBRARYP?ATHexportPATH=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
說明:
上述環(huán)境變量實(shí)際路徑/usr/local/Ascend/需要根據(jù)開發(fā)套件等的安裝路徑進(jìn)行相應(yīng)的調(diào)整。普通用戶進(jìn)行調(diào)試時(shí),將“自定義TBE算子”安裝至個人工作目錄(當(dāng)前版本要求與Ascend-opp-.run的安裝目錄一致,如Ascend-opp-.run安裝在"/home/username/.local/Ascend"),則需修改上述環(huán)境變量中的內(nèi)容:
export ASCEND_OPP_PATH=~/.local/Ascend/opp
export CUSTOM_OP_LIB_PATH=~/.local/Ascend/opp/framework/custom/tensorflow
執(zhí)行測試用例腳本
進(jìn)入add_testcase.py所在的目錄,執(zhí)行:
python3.7.5 add_testcase.py
運(yùn)行結(jié)束,可能會提示一個錯誤“THPModule_npu_shutdown failed.”,此錯誤不影響結(jié)果,請忽略。
總結(jié)
以上是生活随笔為你收集整理的Ascend Pytorch算子功能验证的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ascend Pytorch算子适配层开
- 下一篇: HarmonyOS系统概述