版本说明:
win10
VS2019
libtorch=1.11.0(Debug-CUDA)
CUDA= 1.11.3
CUDNN= 1.11.x
Yolov5 6.0版本训练的pt,转换为GPU版本的torchscript.pt(据查用GPU转换的pt文件,可以在c++使用gup、cpu推理,但使用CPU转换的pt文件,只能用cpu推理)
——————————————————————————————————
问题一
device_type = torch::kCUDA; 使用CUDA加速,torch::cuda::is_available()返回0。
解决办法:
属性>>链接器>>命令行,增加语句:/INCLUDE:?warp_size@cuda@at@@YAHXZ
问题二
解决问题一后,torch::cuda::is_available()返回1,但module = torch::jit::load(pt_path, device);时报错下图
解决办法:
属性>>链接器>>命令行,增加以下两句:
/INCLUDE:?warp_size@cuda@at@@YAHXZ
/INCLUDE:?_torch_cuda_cu_linker_symbol_op_cuda@native@at@@YA?AVTensor@2@AEBV32@@Z
可以使用CUDA加载模型,正常推理了,结果与Python推理结果一致。
问题三
解决了上面的问题后,需要用Release版本生成exe发送客户,配置libtorch=1.11.0(Release-CUDA),但加载模型报错,提示路径不正确。
解决办法:参考链接
LibTorch中Windows系统环境配置及CUDA不可用问题解决_libtorch配置_MIAYN的博客-CSDN博客
关于Debug模式可以正常加载模型,Release模式加载错误问题的解决。在配置好环境之后,Debug模式一切正常,但是Release模式下加载模型失败。
没有将libtorch的dll文件放到对应的exe生成目录里,而是直接在环境变量里设置了dll的目录,即lib的路径,所以在环境变量中,debug和release的lib路径顺序先后会影响debug模式或者release模式的运行,比如debug环境变量放在前面,debug模式就能运行,release模式就不能读取模型了。
解决方案:将lib文件夹下的所有dll文件,分别复制粘贴到对应的输出目录里。(注意需要将Release版本的lib文件夹下的dll文件放在Release模式下的输出目录里,Debug版本的lib文件夹下的dll文件同理。)
输出目录如下方式找到:属性>>常规>>输出目录>>编辑