Ascend Pytorch算子功能验证
Ascend Pytorch算子功能驗證
編寫測試用例
以add算子為例,測試腳本文件命名為:add_testcase.py。以下示例僅為一個簡單的用例實現,具體算子的實現,需要根據算子定義進行完整的覆蓋才能保證功能的基本正確。
- 引入依賴庫。
- import torch
- import numpy as np
- import sys
- import copy
from util_test import compare_res
說明:
其中,util_test為測試框架提供的文件,詳細實現參考 附錄->測試代碼樣例-> util_test.py,使用時應與testcase.py文件放在同一目錄。 - 構造輸入數據。
- 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
- 調用CPU及NPU完成計算,并比較二者的計算結果。
- 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) - 調度測試用例
- def test_add():
-
# testcase list -
test_add_float16() - if name == ‘main’:
-
# 當前版本需要調用如下代碼 -
test_add()torch.npu.set_device("npu:0") //注意 "npu:x"中的x的填寫參見說明
說明:
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: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
說明:
上述環境變量實際路徑/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算子功能验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ascend Pytorch算子适配层开
- 下一篇: HarmonyOS系统概述