libtorch c++ 调用 (五)

libtorch c++调用可能遇到的问题总结。

1.算力不匹配问题

import torch
import torchvision
print(torch.cuda.is_available())

上面的命令只是检测CUDA是否安装正确并能被Pytorch检测到,并没有说明是否能正常使用,要想看Pytorch能不能调用cuda加速,还需要简单的测试一下:

a = torch.Tensor(5,3)
a=a.cuda()
print(a)

一般来讲,输出主要是报48号错误,也就是CUDA的问题,出现这个问题在于硬件的支持情况,对于算力3.0的显卡来说,如果安装了9.0的CUDA就会出现这个问题,解决的办法是退回CUDA8.0,或者更换更加高端的显卡,或者直接从源码编译,并在源码中做相应设置(修改setup.py文件里的TORCH_CUDA_ARCH_LIST,将这个值改成你当前使用的GPU对应算力!),对于最后一种方法,目前还没有尝试,不过,Pytorch确实做得不错,考虑的很周到~

之所以记录这些笔记是因为我遇到了,在NVIDIA GForce RTX2070上转的torchscript模型在NVIDIA GForce GTX1080Ti上面执行崩溃,报错:

THCudaCheck FAIL file=D:/documents/vs2015/Project/pytorch1.5.1/pytorch/aten/src\THC/generic/THCTensorMathReduce.cu line=73 error=48 : no kernel image is available for execution on the device

问题是算力不匹配问题,2070的算力是7.5,1080Ti的算力是6.1,归根到底是硬件的问题。

问题不在于生成的模型,因为模型在cpu上也可以正常使用,问题在于我自己编译libtorch-gpu版本,因为官网的libtorch-gpu并没有问题,需要查一下libtorch编译时的注意事项。

参考:pytorch查看CUDA支持情况,只需要三行代码,另附Cuda runtime error (48) : no kernel image is available for execution处理办法

猜你喜欢

转载自blog.csdn.net/juluwangriyue/article/details/108670882