You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WSL2环境下NVIDIA驱动确认、CUDA安装及Helman-Jaja列表排序代码编译问题求助

WSL2环境下NVIDIA驱动确认、CUDA安装及Helman-Jaja列表排序代码编译问题求助

大家好,我在Windows 11的WSL2环境下做CUDA开发时遇到了一连串问题,想请社区的大佬们帮忙分析下:

一、当前NVIDIA驱动状态疑问

我先执行了nvidia-smi命令,输出如下:

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      |
+-----------------------------------------------------------------------------+

看到NVIDIA的WSL CUDA文档里提到*“注意不要安装会覆盖默认驱动的版本”*,想确认下这个输出是不是我安装CUDA前的默认驱动状态?

二、CUDA安装的折腾过程

最开始编译CUDA代码时,执行make correctness IMPL=hj报错:

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.h><curand.h>的导入语句有红色波浪线,怀疑是WSL和VSCode远程连接的CUDA环境没配置好。

我先后尝试安装了两个WSL版本的CUDA包:

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

但都没解决问题,后来参考了社区的回答,在.bashrc里添加了以下环境变量(注意LD_LIBRARY_PATH的配置要放在最后一行,看到相关社区内容这么说,亲测有效):

#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

现在nvcc --version能正常输出了:

@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

VSCode里的红色波浪线也消失了。

三、Helman-Jaja列表排序代码编译错误

我原本让ChatGPT生成了实现Helman-Jaja列表排序的代码,函数签名是void cudaListRank (long head, const long* next, long* rank, size_t n),但不小心把代码删掉了,重新写后现在编译又出现新错误:

@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);

现在卡在这两个编译错误上,想问问大家有没有解决的思路?

备注:内容来源于stack exchange,提问作者mLstudent33

火山引擎 最新活动