libtorch_npu是torch_npu插件的C++版本,包含运行torch_npu插件所需的头文件、库文件以及CMake配置文件。用户可以通过libtorch_npu使用torch_npu插件中开放的C++接口。
git clone -b v2.1.0-6.0.0 https://gitee.com/ascend/pytorch.git cd pytorch git submodule update --init --recursive
拉取对应PyTorch版本分支代码,以v2.1.0-6.0.0为例,其他版本请参见《版本说明》中的“版本配套关系”章节下载对应PyTorch版本分支代码。
python3 build_libtorch_npu.py
编译时依赖的cmake需为3.18.0版本及以上,可参见安装3.18.0版本cmake。
以Ascend Extension for PyTorch源码仓v2.1.0-6.0.0分支下“pytorch/examples/libtorch_resnet”模型为例,介绍libtorch推理的快速使用。
pip3 install expecttest pip3 install packaging pip3 install hypothesis
已完成NPU适配的编译文件请参见“pytorch/examples/libtorch_resnet/CMakeLists.txt”,可以直接用于编译工作。
set(torch_npu_path path_to_libtorch_npu) # 设置libtorch_npu的路径 include_directories(${torch_npu_path}/include) # 设置引用libtorch_npu的头文件路径 link_directories(${torch_npu_path}/lib) # 设置引用libtorch_npu的库文件路径 target_link_libraries(libtorch_resnet torch_npu) # 链接torch_npu库
1 2 3 4 5 6 7 8 9 10 11 | // 使用libtorch_npu相关接口,需引用libtorch_npu的头文件 #include<torch_npu/torch_npu.h> // 使用NPU设备前需进行初始化 torch_npu::init_npu("npu:0"); // 通过传NPU字符串构造NPU设备 at::Device("npu:0") // 使用NPU设备结束需进行反初始化 torch_npu::finalize_npu() |
接口 |
说明 |
---|---|
torch_npu::init_npu() |
使用NPU设备前需进行初始化,输入值格式为npu:id,其中id为NPU卡号。 |
at::Device() |
通过传NPU字符串构造NPU设备,输入值格式为npu:id,其中id为NPU卡号。 |
torch_npu::finalize_npu() |
使用NPU设备结束需进行反初始化,输入值格式为npu:id,其中id为NPU卡号。 |
“pytorch/examples/libtorch_resnet/resnet_trace.py”脚本用于导出torchscript文件,可用于libtorch推理。
bash libtorch_resnet.sh
显示以下内容,表示编译成功。