Win11基于WSL2安装CUDA、cuDNN和TensorRT(2023-03-01)

2023-05-16

文章目录

    • 2023-03-06 更新
    • 2023-03-05 更新
    • 前言
    • TensorRT介绍
    • 环境配置
      • CUDA Driver
        • 检查安装
      • 安装CUDA
      • 安装nvcc
      • 安装cuDNN
        • 安装
        • 验证
      • 安装TensorRT
        • 安装
        • 验证

2023-03-06 更新

如果有小伙伴看了2023-03-05更新,发现设置环境变量后运行cuda代码在链接过程中仍然会有报错问题啥的,那我这里建议,先别管2023-03-05更新的内容了,还是按照我博客里的安装步骤一步一步往下安装,用sudo apt install nvidia-cuda-toolkit命令去安装nvcc,也不需要配置环境变量了。因为博客里的安装步骤是我亲自执行过的,在我的WSL2环境里是一点问题都没有。

如果跟着我的博客步骤走,发现在测试./mnistCUDNN时有问题,那就再根据我2023-03-05更新的内容尝试一下。不过这里我觉得可以先别卸载nvidia-cuda-toolkit,先去配置环境变量,然后跑代码看有没有问题,没有问题的话那就最好啦,如果还有问题,那就卸载nvidia-cuda-toolkit,配置好环境变量,再重启下,然后再跑下代码看看~

目前根据小伙伴的反映,就先记录到这里吧,后面有新情况也会继续更新的~

2023-03-05 更新

有小伙伴反映,按照NVIDIA官网命令安装完CUDA后,nvcc实际上也是被成功安装啦,且nvcc的版本和我们选择CUDA的版本是保持一致的。但如果再运行sudo apt install nvidia-cuda-toolkit命令,就会导致nvcc的版本被覆盖为低版本。

比如,我们选择CUDA的版本是11.8,那安装完CUDA后,我们是可以在/usr/local/cuda/bin目录下找到nvcc可执行文件的,在那个目录下运行./nvcc -V就可以看到版本和CUDA保持一致,也是11.8。所以实际上我们不需要再运行sudo apt install nvidia-cuda-toolkit命令安装nvcc啦,只需要再安装完CUDA后,配置下环境变量即可,如下

export CPATH=/usr/local/cuda-11.8/include:$CPATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-11.8/bin:$PATH
export CUDA_ROOT=/usr/local/cuda-11.8

当然,如果你运行了sudo apt install nvidia-cuda-toolkit命令,从我博客里记录的图片可以看到nvcc的版本被覆盖为10.1啦,在我的WSL2环境里,10.1的nvcc版本并没有什么问题,后面用./mnistCUDNN测试也是成功哒~

但小伙伴测试说会报CUDA driver version is insufficient for CUDA runtime version版本不匹配的错误,所以后面的小伙伴可以参考下,先不要运行sudo apt install nvidia-cuda-toolkit命令,直接根据NVIDIA官网安装完CUDA,然后配置下环境变量即可~

如果已经用sudo apt install nvidia-cuda-toolkit命令安装完了,测试也真报错了,就卸载掉nvidia-cuda-toolkit,然后再配置下环境变量,再测试下看看吧~

前言

之前我写了一篇博客:Win11安装WSL2和Nvidia驱动,记录了在WSL2里安装CUDA,当时我选择了第二种安装方式,即用WSL2里的MiniConda去安装的PyTorch和CUDA等相关库,最近在使用中发现了这种方式的不足,即使用cudanvcc等命令时都要切换到conda相关环境下才能使用。比如我之前在py38环境下安装的,当我进入终端处于base环境下,nvcc命令是不能使用哒

最近也在跟着恩培老师学TensorRT,担忧用MiniConda安装的CUDA等库可能导致TensorRT安装失败,所以这次就试试直接在base环境下用之前写的Win11安装WSL2和Nvidia驱动博客的第一种方式安装cudacudnntensorrt吧~

结果也是很顺利的安装成功啦,便在此记录下来哈哈~

更多文章欢迎来我的博客小站看呀,会有更多的技术细节~

TensorRT介绍

  • NVIDIA® TensorRT™是一个用于高性能深度学习的推理框架,能够在NVIDIA GPU上实现低延迟、高吞吐量的部署
  • TensorRT包含用于训练好的模型的优化器,以及用于执行推理的runtime
  • 它可以与TensorFlow、PyTorch和MXNet等训练框架相辅相成地工作

环境配置

CUDA Driver

使用CUDA前,要求GPU驱动与cuda 的版本要匹配,匹配关系如下:

参考:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#cuda-major-component-versions__table-cuda-toolkit-driver-versions

这里的CUDA驱动配置可以参考我之前的WSL2博客:Win11安装WSL2和Nvidia驱动

检查安装

输入nvidia-smi命令,查看GPU驱动版本

(base) aayu@AayuComputer-Pro:~$ nvidia-smi
Tue Feb 28 00:58:02 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.65       Driver Version: 527.56       CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  On   | 00000000:01:00.0  On |                  N/A |
| N/A   40C    P8    13W / 139W |   1668MiB /  6144MiB |      6%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A        23      G   /Xwayland                       N/A      |
+-----------------------------------------------------------------------------+

可以看到当前安装的驱动版本是527.56,后面的CUDA Version: 12.0是指当前驱动支持的最高CUDA版本~

安装CUDA

在Nvidia官网选择对应版本:https://developer.nvidia.com/cuda-toolkit-archive

比如我选择的是11.8版本,选择Linuxx86_64WSL-Ubuntu2.0deb(local),如下图

安装命令已经给出啦,如下,直接在WSL2终端执行就好~

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

成功安装如下图

安装nvcc

sudo apt install nvidia-cuda-toolkit

安装完后重启电脑,检查安装结果,成功如下图~

安装cuDNN

下载安装包:访问:https://developer.nvidia.com/zh-cn/cudnn,选择对应的版本,下载对应的安装包(建议使用Debian包安装)

比如我下载的是:Local Installer for Ubuntu20.04 x86_64 (Deb),下载后的文件名为cudnn-local-repo-ubuntu2004-8.7.0.84_1.0-1_amd64.deb

安装

参考链接:https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html

# 注意,运行下面的命令前,将下面的 X.Y和v8.x.x.x 替换成自己具体的CUDA 和 cuDNN版本,如我的CUDA 版本是11.8,cuDNN 版本是 8.7.0.84

# Enable the local repository.
sudo dpkg -i cudnn-local-repo-${OS}-8.x.x.x_1.0-1_amd64.deb
# 我的:sudo dpkg -i cudnn-local-repo-ubuntu2004-8.7.0.84_1.0-1_amd64.deb

# Import the CUDA GPG key.
sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/

# Refresh the repository metadata.
sudo apt-get update

# Install the runtime library.
sudo apt-get install libcudnn8=8.x.x.x-1+cudaX.Y
# 我的:sudo apt-get install libcudnn8=8.7.0.84-1+cuda11.8

# Install the developer library.
sudo apt-get install libcudnn8-dev=8.x.x.x-1+cudaX.Y
# 我的:sudo apt-get install libcudnn8-dev=8.7.0.84-1+cuda11.8

# Install the code samples and the cuDNN library documentation.
sudo apt-get install libcudnn8-samples=8.x.x.x-1+cudaX.Y
# 我的:sudo apt-get install libcudnn8-samples=8.7.0.84-1+cuda11.8

验证

# 复制文件
cp -r /usr/src/cudnn_samples_v8/ $HOME
cd  $HOME/cudnn_samples_v8/mnistCUDNN
make clean && make
./mnistCUDNN

可能报错:test.c:1:10: fatal error: FreeImage.h: No such file or directory

解决办法:sudo apt-get install libfreeimage3 libfreeimage-dev

成功验证如下图

安装TensorRT

访问:https://developer.nvidia.com/nvidia-tensorrt-8x-download 下载对应版本的TensorRT

比如我选择的是 8.5.3版本,下载完文件名为:nv-tensorrt-local-repo-ubuntu2004-8.5.3-cuda-11.8_1.0-1_amd64.deb

安装

参考地址:https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing-debian

# 替换成自己的OS和版本信息
os="ubuntuxx04"
tag="8.x.x-cuda-x.x"
sudo dpkg -i nv-tensorrt-local-repo-${os}-${tag}_1.0-1_amd64.deb
# 我的:sudo dpkg -i nv-tensorrt-local-repo-ubuntu2004-8.5.3-cuda-11.8_1.0-1_amd64.deb

sudo cp /var/nv-tensorrt-local-repo-${os}-${tag}/*-keyring.gpg /usr/share/keyrings/
# 我的:sudo cp /var/nv-tensorrt-local-repo-ubuntu2004-8.5.3-cuda-11.8/*-keyring.gpg /usr/share/keyrings/

sudo apt-get update
sudo apt-get install tensorrt

验证

输入dpkg -l | grep TensorRT

(base) aayu@HPSCIL:~/tensorrt_install$ dpkg -l | grep TensorRT
ii  libnvinfer-bin                                    8.5.3-1+cuda11.8                  amd64        TensorRT binaries
ii  libnvinfer-dev                                    8.5.3-1+cuda11.8                  amd64        TensorRT development libraries and headers
ii  libnvinfer-plugin-dev                             8.5.3-1+cuda11.8                  amd64        TensorRT plugin libraries
ii  libnvinfer-plugin8                                8.5.3-1+cuda11.8                  amd64        TensorRT plugin libraries
ii  libnvinfer-samples                                8.5.3-1+cuda11.8                  all          TensorRT samples
ii  libnvinfer8                                       8.5.3-1+cuda11.8                  amd64        TensorRT runtime libraries
ii  libnvonnxparsers-dev                              8.5.3-1+cuda11.8                  amd64        TensorRT ONNX libraries
ii  libnvonnxparsers8                                 8.5.3-1+cuda11.8                  amd64        TensorRT ONNX libraries
ii  libnvparsers-dev                                  8.5.3-1+cuda11.8                  amd64        TensorRT parsers libraries
ii  libnvparsers8                                     8.5.3-1+cuda11.8                  amd64        TensorRT parsers libraries
ii  tensorrt                                          8.5.3.1-1+cuda11.8                amd64        Meta package for TensorRT

如果遇到unmet dependencies的问题, 一般是cuda cudnn没有安装好。TensorRT的INCLUDE 路径是 /usr/include/x86_64-linux-gnu/, LIB路径是/usr/lib/x86_64-linux-gnu/,Sample code在/usr/src/tensorrt/samples, trtexec/usr/src/tensorrt/bin下。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Win11基于WSL2安装CUDA、cuDNN和TensorRT(2023-03-01) 的相关文章

  • CUDA - 为什么基于扭曲的并行减少速度较慢?

    我有关于基于扭曲的并行减少的想法 因为根据定义 扭曲的所有线程都是同步的 因此 我们的想法是输入数据可以减少 64 倍 每个线程减少两个元素 而无需任何同步 与 Mark Harris 的原始实现相同 减少应用于块级 数据位于共享内存上 h
  • C 中带括号和不带括号的循环处理方式不同吗?

    我在调试器中单步执行一些 C CUDA 代码 如下所示 for uint i threadIdx x i lt 8379 i 256 sum d PartialHistograms blockIdx x i HISTOGRAM64 BIN
  • 指定 NVCC 用于编译主机代码的编译器

    运行 nvcc 时 它始终使用 Visual C 编译器 cl exe 我怎样才能让它使用GCC编译器 设置CC环境变量到gcc没有修复它 我在可执行文件帮助输出中也找不到任何选项 在 Windows 上 NVCC 仅支持 Visual C
  • Ubuntu 11.10/12.04 上的 CUDA“无兼容设备”错误

    一段时间以来 我一直在尝试在我的笔记本电脑上设置 Ubuntu 环境来进行 CUDA 编程 我目前双启动 Windows 8 和 Ubuntu 12 04 并想在 Ubuntu 上安装 CUDA 5 该笔记本电脑配有 GeForce GT
  • 某些子网格未使用 CUDA 动态并行执行

    我正在尝试 CUDA 5 0 GTK 110 中的新动态并行功能 我遇到了一个奇怪的行为 即我的程序没有返回某些配置的预期结果 不仅是意外的 而且每次启动都会出现不同的结果 现在我想我找到了问题的根源 似乎当生成太多子网格时 某些子网格 由
  • Cuda Bayer/CFA 去马赛克示例

    我编写了一个 CUDA4 Bayer 去马赛克例程 但它比在 16 核 GTS250 上运行的单线程 CPU 代码慢 块大小是 16 16 图像暗淡是 16 的倍数 但更改此值并不会改善它 我做了什么明显愚蠢的事情吗 calling rou
  • 多个进程可以共享一个 CUDA 上下文吗?

    这个问题是 Jason R 的后续问题comment https stackoverflow com questions 29964392 multiple cuda contexts for one device any sense co
  • cuda cpu功能-gpu内核重叠

    我在尝试开发以练习 CUDA 的 CUDA 应用程序时遇到并发问题 我想通过使用 cudaMemecpyAsync 和 CUDA 内核的异步行为来共享 GPU 和 CPU 之间的工作 但我无法成功重叠 CPU 执行和 GPU 执行 它与主机
  • 为什么numba cuda调用几次后运行速度变慢?

    我正在尝试如何在 numba 中使用 cuda 然而我却遇到了与我预想不同的事情 这是我的代码 from numba import cuda cuda jit def matmul A B C Perform square matrix m
  • 传递给 CUDA 的结构中的指针

    我已经搞砸了一段时间了 但似乎无法正确处理 我正在尝试将包含数组的对象复制到 CUDA 设备内存中 然后再复制回来 但当我遇到它时我会跨过那座桥 struct MyData float data int dataLen void copyT
  • Visual Studio - 过滤掉 nvcc 警告

    我正在编写 CUDA 程序 但收到令人讨厌的警告 Warning Cannot tell what pointer points to assuming global memory space 这是来自 nvcc 我无法禁用它 有没有办法过
  • 如何确定完整的 CUDA 版本 + 颠覆版本?

    Linux 上的 CUDA 发行版曾经有一个名为version txt例如 CUDA Version 10 2 89 这非常有用 但是 从 CUDA 11 1 开始 该文件不再存在 我如何在 Linux 上通过命令行确定并检查 path t
  • CUDA线程执行顺序

    我有一个 CUDA 程序的以下代码 include
  • CUDA 估计 2D 网格数据的每块线程数和块数

    首先我要说的是 我已经仔细阅读了所有类似的问题 确定每个块的线程和每个网格的块 https stackoverflow com questions 4391162 cuda determining threads per block blo
  • 如何在 CUDA 中执行多个矩阵乘法?

    我有一个方阵数组int M 10 以便M i 定位第一个元素i th 矩阵 我想将所有矩阵相乘M i 通过另一个矩阵N 这样我就收到了方阵数组int P 10 作为输出 我看到有不同的可能性 分配不同元素的计算M i 到不同的线程 例如 我
  • 无法在 CUDA 中执行设备内核

    我正在尝试在全局内核中调用设备内核 我的全局内核是矩阵乘法 我的设备内核正在查找乘积矩阵每列中的最大值和索引 以下是代码 device void MaxFunction float Pd float max int x threadIdx
  • WSL 发行版对 VSCode 或 IntelliJ IDE 不可见

    几周来我遇到了这个非常奇怪的问题并且无法解决 我通常在 WSL2 上编码 它曾经在这台机器和用户上运行良好 但现在 每当我尝试在 Visual Studio Code 中打开远程资源管理器或尝试在 IntelliJ IDE 中打开 现有文件
  • cudaSetDevice() 对 CUDA 设备的上下文堆栈有何作用?

    假设我有一个与设备关联的活动 CUDA 上下文i 我现在打电话cudaSetDevice i 会发生什么 Nothing 主上下文取代了堆栈顶部 主上下文被压入堆栈 事实上 这似乎是不一致的 我编写了这个程序 在具有单个设备的机器上运行 i
  • 在 cudaFree() 之前需要 cudaDeviceSynchronize() 吗?

    CUDA 版本 10 1 帕斯卡 GPU 所有命令都发送到默认流 void ptr cudaMalloc ptr launch kernel lt lt lt gt gt gt ptr cudaDeviceSynchronize Is th
  • CUDA - 将 CPU 变量传输到 GPU __constant__ 变量

    与 CUDA 的任何事情一样 最基本的事情有时也是最难的 所以 我只想将变量从 CPU 复制到 GPUconstant变量 我很难过 这就是我所拥有的 constant int contadorlinhasx d int main int

随机推荐

  • 推荐系统 Mahout入门之简单使用

    Mahout xff1a Apache Mahout 是 Apache Software Foundation xff08 ASF xff09 旗下的一个开源项目 xff0c 提供一些可扩展的机器学习领域经典算法的实现 xff0c 旨在帮助
  • Command CompileSwiftSources failed with a nonzero exit code

    报错 xff1a Command CompileSwiftSources failed with a nonzero exit code 原因 xff1a 可能是项目目录下存在 同名不同文件夹的文件 解决方法 xff1a 检查 同名不同文件
  • Flutter 自定义SwitchButton

    效果 xff1a xff08 AppBar中间的SwitchButton xff09 代码 xff1a span class token keyword import span span class token string literal
  • diff算法swift版

    前几天用chatgpt生成diff算法 xff0c 配上swift的简洁语法 xff0c 可以称之为锦上添花 下面是代码 xff1a span class token keyword func span span class token f
  • Flutter 调用摄像头扫描二维码插件

    原生平台如果想要实现二维码扫描很简单 xff0c 例如iOS可以根据Version库或者AVFoudation库很快定制出相应工具来 xff0c Flutter只能依赖第三方插件了 插件依赖 xff1a span class token k
  • 【Linux】搭建Yapi接口管理工具

    在年前员工访谈时发现 xff0c 前后端协作开发会出现一定的内耗现象 xff0c 在当前前后端分离的情况下前端往往会因为后端接口存在问题影响对接速度 xff0c 在接口设计不明确的情况下还需要反复确认和沟通 公司过往使用ApiManager
  • 树莓派3B安装VScode

    树莓派3B安装VScode sudo apt install code xff08 一句命令搞定 xff09 xff08 ps 本来想在树莓派3b上安装VScode 网上找半天 xff0c 结果又臭又长还不能解决问题 xff0c 直到翻了贼
  • Angular is running in the development mode. Call enableProdMode() to enable the production mode.

    控制台输出 xff1a Angular is running in the development mode Call enableProdMode to enable the production mode 解决方法 xff1a 在mai
  • Debian SSH免密登录

    安装服务后修改主配置文件 vim etc ssh sshd config 改这个配置文件 在第32行PermttRootLogin yes 允许root用户登录 systemctl restart sshd 然后再重启一下服务 修改端口号
  • HDFS编程实践(Hadoop3.1.3)

    一 利用Shell命令与HDFS进行交互 1 目录操作 在HDFS中为hadoop用户创建一个用户目录 span class token builtin class name cd span usr local hadoop bin hdf
  • 浅谈<<EOF作用与用法

    其实我对这个东西的用法理解也不深 xff0c 目前也只用过两次 xff0c 但真的可以解决大问题 先说一下 lt lt efo的作用 xff0c 官方的说法是这样的 xff1a 在shell脚本中 xff08 bash编程 xff09 xf
  • 斐讯 r1 起死回生

    此方法已无法使用 xff0c 请需要的网友留言 xff0c 并留邮箱 xff0c 我发新的方法 这里写不了外部连接 2022 7 2 昨天三哥给我这么个东西 xff0c 当初卖2499元 xff0c 因为公司没了 xff0c 现在只能当蓝牙
  • 深入学习 esp8266 wifimanager源码解析(打造专属自己的web配网)(最全的wifimanager介绍))

    原文地址 xff1a https my oschina net u 4269090 blog 3329239 1 前言 废话少说 xff0c 本篇博文的目的就是深入学习 WifiManager 这个github上非常火爆的ESP8266 w
  • 华为p40pro NFC模拟加密小区卡详细教程

    先说点题外话 xff1a 我们小区的门禁卡是加密的 xff0c 去年小区强制使用门禁卡 xff0c 配一个卡要30块 xff0c 我们家附近的所有配门禁卡的店一听说我们小区都说做不了 我对这个东西有一点了解 xff0c 小区不可能用智能卡只
  • 求助帖:如何获取局部变量

    最近在做一个获取和风天气城市 ID的小东西 xff0c 大致内容如下 xff1a 通过 xff1a QWeather getGeoCityLookup MainActivity this inputct new QWeather OnRes
  • arduino esp-01s开发环境配置(备忘)

    很久没玩arduino了 xff0c 前天一个网友提了一个问题要我帮忙 xff0c 结果电脑重新做了系统 xff0c 又要重新设置环境 xff0c 结果忘记了 xff0c 做个备忘 xff0c 省得以后又要重新研究 1 附加开发板管理器网址
  • crontab设置定时重启Apache服务

    重启Apache方法 创建一个新的crontab文件 crontab rootcron root用户设定服务 同时 xff0c 文件副本在 var spool cron目录中 列出crontab文件 每天4点重启 crontab l 0 4
  • PVE安装画面灰白只显示鼠标解决方案

    PVE安装画面灰白只显示鼠标解决方案 最近喜欢到某鱼上折腾一下工控机主板回来搞PVE xff0c 发现不少小伙伴遇到与我一样的问题 xff0c 网上搜索文章 xff0c 并没有很完整 xff0c 于是整理了一下 出现这种情况一般是PVE5
  • 解决java poi之SXSSFWorkbook导出大数据量时自适应列宽效果异常问题

    场景 xff1a 使用SXSSFWorkbook导出大数据量 百万行 excel报表 xff0c 表格样式统一使用自适应列宽时 xff0c 发现导出表头行格式异常 xff0c 异常情况如下图所示 xff1a 分析 xff1a 从导出效果看
  • Win11基于WSL2安装CUDA、cuDNN和TensorRT(2023-03-01)

    文章目录 2023 03 06 更新2023 03 05 更新前言TensorRT介绍环境配置CUDA Driver检查安装 安装CUDA安装nvcc安装cuDNN安装验证 安装TensorRT安装验证 2023 03 06 更新 如果有小