当前位置: 首页 > news >正文

ubuntu23安装tensorRT步骤记录

    服务器信息:       
        1. ssh 连接信息:127.0.0.1  zhangsan2. 操作系统:Ubuntu 23.103. 显卡信息: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   OK2. 卸载所有驱动:sudo apt-get remove nvidia*       OK3. 更新软件列表和必要的依赖:              
            sudo apt-get update      OKsudo apt-get install g++     OKsudo apt-get install gcc     OKsudo apt-get install make    OK
            4. 在安装NVIDIA驱动以前需要禁止系统自带显卡驱动 nouveau:4.1. sudo vim /etc/modprobe.d/blacklist.conf    ok4.2. 在打开的文件末尾输入如下内容并保存:     okblacklist nouveauoptions nouveau modeset=04.3. 更新一下系统的 initramfs 镜像文件:sudo update-initramfs -u  ok4.4. 重启电脑:sudo reboot   ok4.5. 检测系统自带显卡驱动 nouveau 是否已被禁用成功:lsmod | grep nouveau( 没有输出任何信息表示禁用成功了 )    ok4.6. 安装显卡驱动 NVIDIA-Linux-x86_64-535.183.01.run:1. sudo chmod +x  NVIDIA-Linux-x86_64-535.183.01.run2. sudo ./NVIDIA-Linux-x86_64-535.183.01.run -no-opengl-files -no-x-check4.7. 验证英伟达显卡是否安装成功:nvidia-smi2. 安装 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行命令:               
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 时,选择 Continue2.2. "CUDA Installer...." 的地方将 [X]Driver 中的 X取消勾选,点击 Install3. 配置环境变量:3.1. vim  ~/.bashrc3.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 ~/.bashrc4. 验证是否安装成功: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.debsudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/3. 更新APT仓库并安装cuDNN运行时库、开发库和示例库:            
		sudo apt-get updatesudo apt-get install libcudnn8=8.9.6.50-1+cuda12.2sudo apt-get install libcudnn8-dev=8.9.6.50-1+cuda12.2sudo apt-get install libcudnn8-samples=8.9.6.50-1+cuda12.2
        4. 验证是否安装成功:1. cp -r /usr/src/cudnn_samples_v8/ $HOME2. cd $HOME/cudnn_samples_v8/mnistCUDNN3. make clean && makecp如果报大概如下错:- 如果编译报错fatal error: FreeImage.h: No such file or directory1 | #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.gz4.3. 配置环境变量:4.3.1.vim ~/.bashrc,将如下一行添加到该文件最后一行:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/soft/TensorRT-8.6.1.6/lib4.3.2. source ~/.bashrc4.4. 为了避免其它软件找不到 TensorRT 的库,建议把 TensorRT 的库和头文件添加到系统路径下# TensorRT路径下            
		4.4.1. cd /data/soft/TensorRT-8.6.1.64.4.2. sudo cp -r ./lib/* /usr/lib4.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#computeset(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 build2. cd build3. cmake ..4. make -j8   ( ps:-j8 告诉 make 同时运行最多8个编译任务 )可能会报  "gcc later than 12 ... nvcc ..." 之类的错误,是因为 cuda12.2需要低于12版本的 gcc,可使用如下方式修复:1. sudo apt-get install gcc-102. sudo apt-get install g++-103. sudo ln -s /usr/bin/gcc-10 /usr/local/cuda/bin/gcc4. sudo reboot ( 重启电脑 )5. cd ../workspace6. ./pro5. 安装 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.5GStreamer 1.22.55.2. gst-launch-1.0 --version:gst-launch-1.0 version 1.22.5GStreamer 1.22.5测试 gstreamer 是否可用:1. gst-inspect-1.0 | grep h264:rtp:  rtph264depay: RTP H264 depayloaderrtp:  rtph264pay: RTP H264 payloadertypefindfunctions: video/x-h264: h264, x264, 2642. gst-inspect-1.0 | grep aac:audioparsers:  aacparse: AAC audio stream parsertypefindfunctions: audio/aac: aac, adts, adif, loas6. Ubuntu系统安装opencv( 参考博客:https://blog.csdn.net/LLL_666_/article/details/136763114 ):1. 下载 opencv 源码包:https://opencv.org/releases/--》OpenCV – 4.9.0--》Sources2. 解压:unzip opencv-4.9.0.zip3. 使用 cmake 安装 opencv:1. cd opencv-4.9.02. 安装依赖库:sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev3. mkdir build4. cd build4. sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..5. sudo make -j4 ( ps:-j4 告诉 make 同时运行最多4个编译任务 )6. sudo make install4. 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/pkgconfigexport PKG_CONFIG_PATH7. 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 variableNo package 'opencv' found" 错误的解决方案:1. cd /usr/local/lib2. sudo mkdir pkgconfig3. cd pkgconfig4. sudo touch opencv.pc5. sudo  vim opencv.pc,将如下文本复制进此文件:prefix=/usr/localexec_prefix=${prefix}includedir=${prefix}/includelibdir=${exec_prefix}/libName: opencvDescription: The opencv libraryVersion:4.0.1Cflags: -I${includedir}/opencv4Libs: -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_core6. export  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig7. 再次执行 "pkg-config opencv --modversion" 便不会报错了9. 测试 opencv 是否可用:测试案例1:1. cd /data/soft/opencv-4.9.0/samples/cpp/example_cmake2. cmake .3. make4. ./opencv_example测试案例2:1. g++ -o test_opencv test_opencv.cpp -L /usr/local/lib/  -lopencv_core -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc2. ./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.deblibnvidia-container-tools_1.13.3-1_amd64.debnvidia-container-toolkit-base_1.13.3-1_amd64.debnvidia-container-toolkit_1.13.3-1_amd64.deb2. 开始安装( 这4个包有依赖关系,安装顺序不能乱 ):1. sudo dpkg -i ./libnvidia-container1_1.13.3-1_amd64.deb   ok2. sudo dpkg -i ./libnvidia-container-tools_1.13.3-1_amd64.deb  ok2. sudo dpkg -i ./nvidia-container-toolkit-base_1.13.3-1_amd64.deb  ok3. sudo dpkg -i ./nvidia-container-toolkit_1.13.3-1_amd64.deb  ok4. 重启 docker 服务:sudo systemctl restart docker5. 测试 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 --version1.2. nvcc -v1.3. cat /usr/local/cuda/version.txt2. 查看英伟达显卡驱动版本:nvidia-smi3. 查看英伟达显卡驱动信息:使用 lspci 命令可以查看显卡的型号,而 nvidia-smi 命令( 如果已安装 NVIDIA 驱动 )可以提供显卡的详细信息,包括驱动版本。# lspci | grep -i nvidia01: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)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • linux(CentOS、Ubuntu)安装python3.12.2环境
  • Java 集合框架:HashMap 的介绍、使用、原理与源码解析
  • 在学习使用LabVIEW的过程中,需要注意哪些问题?
  • Python 3 网络编程
  • 时效性知识点是否值得花时间学习和研究
  • 【合并两个有序链表】
  • 房间里灰尘多总是清理不干净怎么办?专业空气净化器快速除尘
  • IoTDB 分段查询语句详解:GROUP BY + 时序语义
  • oracle 11G long类型如何转换 CLOB
  • VUE3【实用教程】(2024最新版)
  • PyTorch构建一个肺部CT图像分类模型来分辨肺癌
  • 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【29】Sentinel
  • 生成式AI未来趋势预测
  • 系统架构设计师①:计算机组成与体系结构
  • 【数据结构】堆的实现以及建堆算法和堆排序
  • canvas 高仿 Apple Watch 表盘
  • Java方法详解
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • laravel with 查询列表限制条数
  • leetcode-27. Remove Element
  • Mysql5.6主从复制
  • OSS Web直传 (文件图片)
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • php面试题 汇集2
  • python大佬养成计划----difflib模块
  • 记录一下第一次使用npm
  • 使用 Docker 部署 Spring Boot项目
  • 算法-图和图算法
  • 想写好前端,先练好内功
  • 责任链模式的两种实现
  • 《码出高效》学习笔记与书中错误记录
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​MySQL主从复制一致性检测
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #HarmonyOS:软件安装window和mac预览Hello World
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (六)DockerCompose安装与配置
  • (每日一问)基础知识:堆与栈的区别
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (三)c52学习之旅-点亮LED灯
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)Unity3DUnity3D在android下调试
  • .bashrc在哪里,alias妙用
  • .bat批处理(一):@echo off
  • .net 7和core版 SignalR
  • .NET C# 使用GDAL读取FileGDB要素类
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded