最近在跑Nvidia的flownet2,出现了CUDA error: no kernel image is available for execution on the device的问题,查了一下网上的说法,这个问题主要有两种解决办法,第一种方法是降低pytorch的版本,但是这么做算法性能似乎下降,所以本文主要讲第二种方法。
第二种方法是根据显卡的计算能力修改nvcc_args参数,显卡的计算能力可以参考这个网址。比如我的显卡是Geforce GTX 960M,显卡计算能力为5.0。
其中需要修改参数的有以下3个setup.py文件:
https://github.com/NVIDIA/flownet2-pytorch/search?q=nvcc_args&unscoped_q=nvcc_args
我们需要给nvcc_args添加'-gencode', 'arch=compute_xx,code=sm_xx',其中xx是根据你的显卡计算能力来确定的,我的显卡计算能力为5.0,设置xx为50。
修改完参数后,还需要将文件夹中的__pycache__/
, dist/
, *.egg-info
, build/
文件删除,然后重新bash install.sh。
之后就会发现问题解决了!