软件版本信息
- Ubuntu18.04 LST 宿主机
- CUDA Version: 11.4
- Nvidia GPU Driver Version: 470.57.02
- cudDNN: 8.2.2.26
- opencv: 4.5.3
- opencv_contrib: 4.5.3
- Video_Codec_SDK: 11.0.10
目标:编译 支持GPU硬件解码的opencv,支持C++和python3。
1. 宿主机安装docker
2. 安装nvidia-docker
3. 拉取nvidia docker镜像
进入 https://hub.docker.com/ 选择nvidia docker
https://hub.docker.com/r/nvidia/cuda
通过Tags 选择 11.4.1-cudnn8-devel-ubuntu18.04
运行命令
docker pull nvidia/cuda:11.4.1-cudnn8-devel-ubuntu18.04
image中包含了cuda11.4 和 cudnn8
4.启动容器
#### share GPU Driver with 宿主机
docker run -itd --gpus all -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all imageIDxxxxxx /bin/bash
进入容器
docker exec -it dockerIDxxxxxx /bin/bash
5. 编译opencv
按照 安装opencv支持cuda加速 Ubuntu18.04 安装
不需要再安装gpu驱动,通过nvidia-smi 测试驱动是否正常
不需要再安装cuda11.4 和 cudnn8
6.修改环境
安装好opencv后,编译好的库被install 复制到 /usr/local/lib/
但是ldd的时候找不到库,可能因为权限问题
解决方案:
把opencv等相关编译的库的路径,加入 LD_LIBRARY_PATH 和 LIBRARY_PATH
通过修改 /etc/profile 和 ~/.bashrc
### libs_path
export LD_LIBRARY_PATH=/xxx/lib:/xxxbuild:/xxx/opencv/opencv-4.5.3/build/lib:$LD_LIBRARY_PATHexport LIBRARY_PATH=/xxx/lib:/xxxbuild:/xxx/opencv/opencv-4.5.3/build/lib:$LIBRARY_PATH