这是 WSL2 的默认 nvidia 驱动程序吗?

这是 WSL2 的默认 nvidia 驱动程序吗?
noob@LAPTOP-DNCQ5AAC:/mnt/d/$ nvidia-smi
Thu Apr 20 00:04:03 2023       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.100      Driver Version: 528.76       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 Off |                  N/A |
| N/A   41C    P8     2W /  50W |      0MiB /  4096MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A       227      G   /Xwayland                       N/A      |
+-----------------------------------------------------------------------------+

这里说的是“注意不要安装另一个覆盖默认设置的应用程序”https://docs.nvidia.com/cuda/wsl-user-guide/index.html

在我开始尝试在 Windows 11 机器上再次安装 cuda 之前,这是我的默认设置吗?有人有关于如何在 WSL2 上安装 cuda 的好答案的链接吗?
我可能不得不搜索自己的问题,但请记住它从来没有真正像预期的那样工作,我不得不使用 Windows 版本。

我想要用 Cuda 执行的任务如下:

My Chatgpt prompt:
"implement helman-jaja list rank where the function signature is "void cudaListRank (long head, const long* next, long* rank, size_t n)" where the first parameter head is the index into array representation of a linked list and points to its head,  the second parameter next is a "next array" that gives the index of the next node in the array representation of a linked list, the third parameter rank is an array holding the rank of each node in the array representation of a linked list and the fourth parameter n is the length of the array representation of a linked list."
The code written by ChatGPT has been deleted

现在,当我尝试使用 Make 文件进行编译时,我得到了

noob@LAPTOP-DNCQ5AAC:/mnt/d$ make correctness IMPL=hj
nvcc -Iutils -O0 -g -std=c++11 -o student/cuda_hj.o -c student/cuda_hj.cu
make: nvcc: Not a directory
make: *** [Makefile:8: student/cuda_hj.o] Error 127

另外,我看到 VSCode 中与 cuda 相关的导入语句有红色波浪下划线,但不确定这是否表明我的 WSL-remote-VSCode 和默认 Cuda 是否运行良好。

我还尝试从 Nvidia 下载并安装两个不同的 cuda 包(WSL 版本),但都没有完成工作(我从下载页面复制并粘贴了每个终端说明):

cuda_12.1.0_530.30.02_linux.run
cuda-repo-wsl-ubuntu-12-1-local_12.1.0-1_amd64.deb

编辑:所以我终于得到了它感谢NotTheDroids的回答和评论通过将这些行添加到.bashrc

#add cuda to path
export PATH="$PATH:/usr/local/cuda-12.1/bin"
#must be last line
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.1/lib64

注意,我在 SuperUser 上看到最后一行LD_LIBRARY_PATH必须是 .bashrc 中的最后一行。我没有在其他地方尝试过,但这个方法有效。

所以现在我明白了

@LAPTOP-DNCQ5AAC:/mnt/d/hpc$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Mon_Apr__3_17:16:06_PDT_2023
Cuda compilation tools, release 12.1, V12.1.105
Build cuda_12.1.r12.1/compiler.32688072_0

我尝试使用 Cuda 代码编译上述 Hellman-Jaja 列表排名,结果引发了一堆编译错误(之前它甚至无法识别 nvcc 命令)。错误跟踪

@LAPTOP-DNCQ5AAC:/mnt/d/$ make cuda_code_checker
nvcc -Iutils -O0 -g -std=c++11 -o student/cuda_hj.o -c student/cuda_hj.cu
student/cuda_hj.cu(65): error: identifier "dSublistHeads" is undefined
          dSublistHeads[i+1] = randLong;
          ^

student/cuda_hj.cu(80): error: expected a ")"
      cudaMalloc((void**) &dIsHead, sizeof(int);

下面的红色波浪下划线

#include <cuda.h>
#include <curand.h>

已经走了。谢谢!

答案1

首先,考虑一下你的项目是否真的需要完整的 CUDA 工具包。许多 CUDA 任务都可以用只是注入到每个 WSL 实例中的提供的 WSL CUDA 库。

例如,在没有安装 CUDA Toolkit 的情况下,看一下:

ls /usr/lib/wsl/lib

您将在那里看到libcuda.so。这个注入的库被挂接到视窗NVIDIA 驱动程序。出于这个原因,CUDA Toolkit 安装页面会警告您不要安装LinuxWSL 中的驱动程序——这样做可能会破坏 WSL/CUDA 集成。

您可以在 Microsoft 的WSL 上的 CUDA有关如何使用现有 CUDA(和/或 DirectML)集成的文档页面:

  • PyTorch
  • TensorFlow
  • 或者使用 NVIDIA Docker 容器

我已经亲自测试了 PyTorch 和 TensorFlow 集成,但目前还没有测试过 Docker 容器。

再次强调,只要您拥有受支持的 Windows 版本(目前大多数最新受支持的版本)和最新的 NVIDIA Windows 驱动程序,这就是 WSL 的“开箱即用”功能。您无需安装 CUDA Toolkit 即可使用这些功能。

这是 WSL2 的默认 nvidia 驱动程序吗?

嗯,非常接近。据我所知,是的,它是连接到 Windows 驱动程序的 WSL 驱动程序。否则,我不相信它会看到物理 GPU。

不过,它有点过时了——11 月 18 日发布了新的 Windows 驱动程序。在我的 Ubuntu/WSL 中安装 CUDA Toolkit 后,我​​收到一条消息,说我需要一个 >= 530 的驱动程序来支持最新的 Toolkit。

所以如果你想要安装完整的 CUDA 工具包,例如,为了使用 NVIDIA 编译器 (NVCC) 构建本机应用程序,您需要更新 Windows Game Ready 驱动程序(当然,还要重新启动 Windows)。

然后,你应该按照你链接的网站上的说明进行操作。确保下载 WSL 版本的 CUDA 工具包,因为 Ubuntu 的所有“标准”版本都包含Linux司机。

有报告称,该版本中可能找不到 NVIDIA 编译器.deb,但也可能它只是不包含与该.run版本相同的指令(将其添加到路径中)。最终,我下载了该.run版本。

您还需要:

sudo apt install build-essential

然后你可以:

wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run
sudo sh cuda_12.1.1_530.30.02_linux.run

但是,请使用实际下载页面上的说明来确保您获取最新版本(而不是编写本文时的最新版本)。

之后,按照安装程序提供的说明添加必要的PATH项目LIB_PATH。以下是我从文件中收到的内容run(至少在更新我的 Windows 驱动程序之前):

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-12.1/

Please make sure that
 -   PATH includes /usr/local/cuda-12.1/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-12.1/lib64, or, add /usr/local/cuda-12.1/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-12.1/bin

***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 530.00 is required for CUDA 12.1 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run --silent --driver

Logfile is /var/log/cuda-installer.log

请注意,虽然我已经安装了该工具包,并且我相信成功了,但我没有测试项目来尝试它。正如评论中提到的,该工具包有很多可能的用途,如果没有关于您预期用例的详细信息,我无法为您确认。

相关内容