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.runcuda-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




