《极简darknet环境搭建记录》
darknet的环境搭建已经非常简单了,但是偶尔的一点小坑,可能会浪费一些时间,比如编译的时候使用CUDA报错,或者没找到OpenCV…简单记录一下,以后用的时候参考方便。
Key Words:darknet环境搭建、CUDA算力、通过pkg-config找到OpenCV
Beijing, 2020
作者:RaySue
Code:https://github.com/pjreddie/darknet
修改MakeFile
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=1
AVX=0
OPENMP=1
LIBSO=1 # 生成libdarknet.so
ZED_CAMERA=0
ZED_CAMERA_v2_8=0
...
# 根据你自己的GPU型号来选择
ARCH= -gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=[sm_50,compute_50] \
-gencode arch=compute_52,code=[sm_52,compute_52] \
-gencode arch=compute_61,code=[sm_61,compute_61]
...
CUDA 算力设置
- 如果使用 GPU 就需要设置 ARCH,如果设置不当就会导致编译问题,这是由于不同型号的 GPU 对应着不同的算力,但是是向下兼容的,所以编译程序的时候需要注意一下。
GPU有个重要参数,计算能力,计算能力的值对应GPU的“代”值,如计算能力3.0,对应的“代”为sm_30,也对应kepler架构。
比如:compute_30以上的程序,计算能力高的GPU可以运行编译成低代的程序,反之则不行,如计算能力6.1的GPU可以运行编译成compute_30,sm_30的程序,而-arch=compute_30;-code=sm_30在计算能力3.0及以上的GPU都可以运行编译的程序。但计算能力2.0的GPU就不能运行了。
–generate-code保证用户GPU可以动态选择最适合的GPU框架。
OpenCV pkg-config 配置
export PKG_CONFIG_PATH=/export/gpudata/surui/opencv-3.4.1/release/lib64/pkgconfig
配置好 PKG_CONFIG_PATH 变量后,下面两条命令就有值了
-
pkg-config --cflags opencv
- 得到所有的头文件的目录位置
-
pkg-config --libs opencv
- 得到库文件的目录位置,以及所有的依赖库的名字
编译
- make -j31