ubuntu23安装tensorRT步骤记录

复制代码
    服务器信息:       
bash 复制代码
        1. ssh 连接信息:127.0.0.1  zhangsan
        2. 操作系统:Ubuntu 23.10
        3. 显卡信息:NVIDIA Corporation GA102 [GeForce RTX 3090]
        4. cpu 架构:x86_64,13th Gen Intel(R) Core(TM) i9-13900( 使用 "uname -m" 命令查看 )
        5. docker( Docker version 24.0.7, build 24.0.7-0ubuntu2~23.10.1 )
        6. docker-compose( docker-compose version 1.29.2, build unknown )
复制代码
    1. 安装 nvidia 显卡驱动( 535.183.01 ):
        ps:
            1. 参考博客:
                1.1. https://zhuanlan.zhihu.com/p/662696530( Ubuntu系统下安装显卡驱动以及pytorch )
                1.2. https://blog.csdn.net/m0_46825740/article/details/121418113( ubuntu篇---ubuntu20.04安装cuda和cudnn )
            2. 使用 "lsmod | grep nouveau" 命令可以查看系统默认的显卡驱动 nouveau 的信息!!!
        步骤:
            1. 下载驱动安装包:NVIDIA-Linux-x86_64-535.183.01.run   OK
            2. 卸载所有驱动:sudo apt-get remove nvidia*       OK
            3. 更新软件列表和必要的依赖:              
bash 复制代码
            sudo apt-get update      OK
            sudo apt-get install g++     OK
            sudo apt-get install gcc     OK
            sudo apt-get install make    OK
复制代码
            4. 在安装NVIDIA驱动以前需要禁止系统自带显卡驱动 nouveau:
                4.1. sudo vim /etc/modprobe.d/blacklist.conf    ok
                4.2. 在打开的文件末尾输入如下内容并保存:     ok
                    blacklist nouveau
                    options nouveau modeset=0
                4.3. 更新一下系统的 initramfs 镜像文件:sudo update-initramfs -u  ok
                4.4. 重启电脑:sudo reboot   ok
                4.5. 检测系统自带显卡驱动 nouveau 是否已被禁用成功:lsmod | grep nouveau( 没有输出任何信息表示禁用成功了 )    ok
                4.6. 安装显卡驱动 NVIDIA-Linux-x86_64-535.183.01.run:
                    1. sudo chmod +x  NVIDIA-Linux-x86_64-535.183.01.run
                    2. sudo ./NVIDIA-Linux-x86_64-535.183.01.run -no-opengl-files -no-x-check
                4.7. 验证英伟达显卡是否安装成功:nvidia-smi

    2. 安装 cuda 12.2:
        1. 下载 cuda_12.2.0_535.54.03_linux.run 并安装:
            打开 https://developer.nvidia.com/cuda-12-2-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_local,
            依次选择 Linux--》x86_64--》ubuntu-->22.04-->runfile(local),( ps:不能选择 deb(local),因为 cuda自带了显卡驱动,而且自带的还不好使,而选择 deb(local)的安装方式,安装过程中无法对
             cuda自带的显卡驱动进行取消勾选安装的操作,而使用 runfile(local) 方式安装就可以勾选掉cuda自带显卡驱动 )下面会出现如下2行命令:               
bash 复制代码
wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run
sudo sh cuda_12.2.0_535.54.03_linux.run
复制代码
            依次执行该2行命令
        2. 安装过程中的几个选项如何选择:
            2.1. "Existing package manager installation of the driver found. It is stronglyrecommended that you remove this before continuing."
                提示让选择 Abort 还是 Continue 时,选择 Continue
            2.2. "CUDA Installer...." 的地方将 [X]Driver 中的 X取消勾选,点击 Install
        3. 配置环境变量:
            3.1. vim  ~/.bashrc
            3.2. 在文件最后添加如下两行:
                    export PATH=/usr/local/cuda-12.2/bin${PATH:+:${PATH}}
                    export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
            3.3. source ~/.bashrc
        4. 验证是否安装成功:nvcc -V

        可能遇到的问题:
            遇到  Package 'libtinfo5' 报错得解决方案:
                 libtinfo5软件包在Ubuntu 23.10的默认存储库中尚不可用。我们可以通过为Ubuntu 23.04(Lunar Lobster)添加universe回购协议来安装它。
                 即 sudo vim /etc/apt/sources.list,添加此行 "deb http://archive.ubuntu.com/ubuntu/ lunar universe"


    3. 安装 安装cuDNN:
        1. 下载 cudnn-local-repo-ubuntu2204-8.9.6.50_1.0-1_amd64.deb:
            下载地址:https://developer.nvidia.com/rdp/cudnn-archive--》Download cuDNN v8.9.6 (November 1st, 2023), for CUDA 12.x--》Local Installer for Ubuntu22.04 x86_64 (Deb)
        2. sudo dpkg -i cudnn-local-repo-ubuntu2204-8.9.6.50_1.0-1_amd64.deb
           sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/
        3. 更新APT仓库并安装cuDNN运行时库、开发库和示例库:            
bash 复制代码
		sudo apt-get update
		sudo apt-get install libcudnn8=8.9.6.50-1+cuda12.2
		sudo apt-get install libcudnn8-dev=8.9.6.50-1+cuda12.2
		sudo apt-get install libcudnn8-samples=8.9.6.50-1+cuda12.2
复制代码
        4. 验证是否安装成功:
            1. cp -r /usr/src/cudnn_samples_v8/ $HOME
            2. cd $HOME/cudnn_samples_v8/mnistCUDNN
            3. make clean && makecp
                如果报大概如下错:
                 - 如果编译报错fatal error: FreeImage.h: No such file or directory
                                1 | #include "FreeImage.h"
                                  |          ^~~~~~~~~~~~~
                 请执行命令 "sudo apt-get install libfreeimage3 libfreeimage-dev" 后重新执行 "make clean && make"
            4. ./mnistCUDNN
                #显示“Test passed!”或类似的消息,表示cuDNN运行正常。

    4. 安装  tensorrt 8.6.1.6:
        4.1. 下载 TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-12.0.tar.gz 安装包
        4.2. 解压:tar xzvf TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-12.0.tar.gz
        4.3. 配置环境变量:
                4.3.1.vim ~/.bashrc,将如下一行添加到该文件最后一行:
                    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/soft/TensorRT-8.6.1.6/lib
                4.3.2. source ~/.bashrc
        4.4. 为了避免其它软件找不到 TensorRT 的库,建议把 TensorRT 的库和头文件添加到系统路径下
            # TensorRT路径下            
bash 复制代码
		4.4.1. cd /data/soft/TensorRT-8.6.1.6
		4.4.2. sudo cp -r ./lib/* /usr/lib
		4.4.3. sudo cp -r ./include/* /usr/include
复制代码
        4.5. 测试使用 tensorRT 进行推理:
            1. 下载工程:git clone https://github.com/shouxieai/tensorRT_Pro.git( 只使用 tensorRT 推理的话,只使用其中的 ./example-simple_yolo )
            2. 实际使用,只需要修改 src 下 main.cpp 的主函数的参数
            3. main中调用的 test 函数:
                最后一个参数为 ONNX 模型的文件名,比如yolov7.onnx就输入yolov7即可,该 ONNX 模型文件需要放到可执行文件同目录下。
                第二个参数为指定模型的运算精度, 可以为SimpleYolo::Mode::FP32或者SimpleYolo::Mode::FP16。更低的运算精度部署后速度更快。
            4. 再修改下 CMakeLists.txt 文件:
                主要需要修改下面几个参数,对于 CUDA_GEN_CODE 参数,Jetson NX 和 Jetson AGX 都为"-gencode=arch=compute_72,code=sm_72"。
                # 如果你是不同显卡,请设置为显卡对应的号码参考这里:https://developer.nvidia.com/zh-cn/cuda-gpus#compute
                set(CUDA_GEN_CODE "-gencode=arch=compute_72,code=sm_72")

                # 如果你的opencv找不到,可以自己指定目录
                set(OpenCV_DIR   "/usr/include/opencv4/")

                set(CUDA_DIR     "/usr/local/cuda-10.2")
            5. 然后编译运行即可:
                1. mkdir build
                2. cd build
                3. cmake ..
                4. make -j8   ( ps:-j8 告诉 make 同时运行最多8个编译任务 )
                    可能会报  "gcc later than 12 ... nvcc ..." 之类的错误,是因为 cuda12.2需要低于12版本的 gcc,可使用如下方式修复:
                        1. sudo apt-get install gcc-10
                        2. sudo apt-get install g++-10
                        3. sudo ln -s /usr/bin/gcc-10 /usr/local/cuda/bin/gcc
                        4. sudo reboot ( 重启电脑 )
                5. cd ../workspace
                6. ./pro


    5. 安装 gstreamer 1.20.3:
        ubuntu23 默认已经安装了 gstreamer 1.22.5,可以使用   "gst-inspect-1.0 --version" 或者  "gst-inspect-1.0 --version" 验证:
            5.1. gst-launch-1.0 --version:
                gst-launch-1.0 version 1.22.5
                GStreamer 1.22.5
            5.2. gst-launch-1.0 --version:
                gst-launch-1.0 version 1.22.5
                GStreamer 1.22.5
        测试 gstreamer 是否可用:
            1. gst-inspect-1.0 | grep h264:
                rtp:  rtph264depay: RTP H264 depayloader
                rtp:  rtph264pay: RTP H264 payloader
                typefindfunctions: video/x-h264: h264, x264, 264
            2. gst-inspect-1.0 | grep aac:
                audioparsers:  aacparse: AAC audio stream parser
                typefindfunctions: audio/aac: aac, adts, adif, loas


    6. Ubuntu系统安装opencv( 参考博客:https://blog.csdn.net/LLL_666_/article/details/136763114 ):
        1. 下载 opencv 源码包:https://opencv.org/releases/--》OpenCV – 4.9.0--》Sources
        2. 解压:unzip opencv-4.9.0.zip
        3. 使用 cmake 安装 opencv:
            1. cd opencv-4.9.0
            2. 安装依赖库:sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev
            3. mkdir build
            4. cd build
            4. sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
            5. sudo make -j4 ( ps:-j4 告诉 make 同时运行最多4个编译任务 )
            6. sudo make install
        4. sudo vim /etc/ld.so.conf,将 "/usr/loacal/lib" 加在最后( 不用换行,直接加在最后 )
        5. sudo ldconfig ( ps:更新动态链接库缓存 )
        6. sudo vim /etc/bash.bashrc,在最后加入如下2行:
            PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
            export PKG_CONFIG_PATH
        7. source /etc/bash.bashrc ( ps:source /etc/bash.bashrc 和 ~/.bashrc 的区别是,前者是全局的配置文件,后者是当前用户的配置文件 )
        8. 查看opencv安装情况:pkg-config opencv --modversion
            出现 "Package opencv was not found in the pkg-config search path.
                Perhaps you should add the directory containing `opencv.pc'
                to the PKG_CONFIG_PATH environment variable
                No package 'opencv' found" 错误的解决方案:
                    1. cd /usr/local/lib
                    2. sudo mkdir pkgconfig
                    3. cd pkgconfig
                    4. sudo touch opencv.pc
                    5. sudo  vim opencv.pc,将如下文本复制进此文件:
                        prefix=/usr/local
                        exec_prefix=${prefix}
                        includedir=${prefix}/include
                        libdir=${exec_prefix}/lib

                        Name: opencv
                        Description: The opencv library
                        Version:4.0.1
                        Cflags: -I${includedir}/opencv4
                        Libs: -L${libdir} -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann  -lopencv_core
                    6. export  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
                    7. 再次执行 "pkg-config opencv --modversion" 便不会报错了
        9. 测试 opencv 是否可用:
            测试案例1:
                1. cd /data/soft/opencv-4.9.0/samples/cpp/example_cmake
                2. cmake .
                3. make
                4. ./opencv_example
            测试案例2:
                1. g++ -o test_opencv test_opencv.cpp -L /usr/local/lib/  -lopencv_core -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc
                2. ./test_opencv
                看是否成功生成灰度图

    7. 安装最新版 nvidia container toolkit( 参考博客:https://blog.csdn.net/weixin_55674987/article/details/139867794 ):
        离线安装方式:
            1. 提起现在好4个安装包( 下载地址:https://mirror.cs.uchicago.edu/nvidia-docker/libnvidia-container/stable/ubuntu20.04/amd64/ ):
                libnvidia-container1_1.13.3-1_amd64.deb
                libnvidia-container-tools_1.13.3-1_amd64.deb
                nvidia-container-toolkit-base_1.13.3-1_amd64.deb
                nvidia-container-toolkit_1.13.3-1_amd64.deb

            2. 开始安装( 这4个包有依赖关系,安装顺序不能乱 ):
                1. sudo dpkg -i ./libnvidia-container1_1.13.3-1_amd64.deb   ok
                2. sudo dpkg -i ./libnvidia-container-tools_1.13.3-1_amd64.deb  ok
                2. sudo dpkg -i ./nvidia-container-toolkit-base_1.13.3-1_amd64.deb  ok
                3. sudo dpkg -i ./nvidia-container-toolkit_1.13.3-1_amd64.deb  ok

            4. 重启 docker 服务:
                sudo systemctl restart docker

            5. 测试 nvidia container toolkit 是否安装成功:
                #### Test nvidia-smi with the latest official CUDA image
                $ docker run --gpus all nvidia/cuda:9.0-base nvidia-smi

                # Start a GPU enabled container on two GPUs
                $ docker run --gpus 2 nvidia/cuda:9.0-base nvidia-smi

                # Starting a GPU enabled container on specific GPUs
                $ docker run --gpus '"device=1,2"' nvidia/cuda:9.0-base nvidia-smi
                $ docker run --gpus '"device=UUID-ABCDEF,1"' nvidia/cuda:9.0-base nvidia-smi

                # Specifying a capability (graphics, compute, ...) for my container
                # Note this is rarely if ever used this way
                $ docker run --gpus all,capabilities=utility nvidia/cuda:9.0-base nvidia-smi





一些工具命令:
    1. 查看 cuda 版本:
        1.1. nvcc --version
        1.2. nvcc -v
        1.3. cat /usr/local/cuda/version.txt
   2. 查看英伟达显卡驱动版本:nvidia-smi
   3. 查看英伟达显卡驱动信息:
          使用 lspci 命令可以查看显卡的型号,而 nvidia-smi 命令( 如果已安装 NVIDIA 驱动 )可以提供显卡的详细信息,包括驱动版本。
          # lspci | grep -i nvidia
              01:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
              01:00.1 Audio device: NVIDIA Corporation GA102 High Definition Audio Controller (rev a1)
相关推荐
内核程序员kevin1 小时前
TCP Listen 队列详解与优化指南
linux·网络·tcp/ip
安静读书3 小时前
Python解析视频FPS(帧率)、分辨率信息
python·opencv·音视频
小陈phd3 小时前
OpenCV从入门到精通实战(九)——基于dlib的疲劳监测 ear计算
人工智能·opencv·计算机视觉
‘’林花谢了春红‘’4 小时前
C++ list (链表)容器
c++·链表·list
机器视觉知识推荐、就业指导6 小时前
C++设计模式:建造者模式(Builder) 房屋建造案例
c++
朝九晚五ฺ6 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
自由的dream6 小时前
Linux的桌面
linux
xiaozhiwise6 小时前
Makefile 之 自动化变量
linux
Yang.997 小时前
基于Windows系统用C++做一个点名工具
c++·windows·sql·visual studio code·sqlite3