为了跑两张图片的光流图看看效果,在github上找了Flownet pytorch的这个代码(我不会说因为这个提供了测试demo的)。
我的环境:
ubuntu18.04
python3.6
pytorch0.3
GTX1080ti
首先按照他的提示install
Installation
# install custom layers
cd FlowNet2_src
bash install.sh
记得加sudo。sudo sh install.sh
运行demo.py时出现错误
RuntimeError: cuda runtime error (30) : unknown error at /pytorch/torch/lib/THC/THCGeneral.cu.........
发现是有些编译文件没有修改,需要根据自己GPU修改编译文件。
以其中一个为例:
#!/usr/bin/env bash
PYTHON=${PYTHON:-"python"}
TORCH=$($PYTHON -c "import os; import torch; print(os.path.dirname(torch.__file__))")
cd src
echo "Compiling channelnorm kernels by nvcc..."
rm ChannelNorm_kernel.o
rm -r ../_ext
nvcc -c -o ChannelNorm_kernel.o ChannelNorm_kernel.cu -x cu -Xcompiler -fPIC -arch=sm_30 -I ${TORCH}/lib/include/TH -I ${TORCH}/lib/include/THC
cd ../
$PYTHON build.py
需要修改的是-arch=sm_30,简而言之,这里sm_30对应的是自己显卡的实际计算能力,至于小代号21,31这种影响似乎不大。GTX1080ti是6.1,我改为sm_60,可编译通过。(似乎不同的计算能力,也就以为这不同版本)
这里三个here就是需要修改的地方了。
运行demo再次出现错误
RuntimeError: CUDNN_STATUS_INTERNAL_ERROR
运行如下命令,然后重启。
sudo rm -rf ~/.nv
一个简单的重启,就是见证奇迹的时刻来了!
Reference
https://www.jianshu.com/p/bf183355f0e7
https://github.com/vt-vl-lab/pytorch_flownet2/blob/master/FlowNet2_src/models/components/ops/channelnorm/make.sh#L10
https://blog.csdn.net/donglin425/article/details/6529378