爲了跑兩張圖片的光流圖看看效果,在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