WSL2 Ubuntu下使用OpenACC无法访问CUDA设备(错误码34)求助
排查思路与解决方案
1. 验证Windows端NVIDIA驱动兼容性
WSL2的CUDA/GPU访问依赖Windows主机的NVIDIA驱动,必须安装支持WSL2的版本(≥460.x)。打开Windows设备管理器→显示适配器,确认NVIDIA驱动版本符合要求,建议安装最新稳定版。
2. 检查WSL2 GPU识别状态
在WSL2终端执行nvidia-smi:
- 若命令不存在:确认HPC SDK的CUDA路径已加入环境变量(参考下文配置指导)
- 若命令执行失败:更新WSL2版本(Windows终端运行
wsl --update),并确认Windows已开启“适用于Linux的Windows子系统”和“虚拟机平台”功能。
3. 修复设备权限问题
错误码34常与GPU设备权限相关:
- 查看设备权限:
ls -la /dev/nvidia* - 将当前用户加入
video组(永久生效):
退出WSL2并重新登录后生效sudo usermod -aG video $USER - 临时权限修复(仅测试用):
sudo chmod 666 /dev/nvidia*
4. 验证CUDA Runtime可用性
编译并运行简单CUDA测试程序,确认Runtime能正常初始化:
创建test.cu文件:
#include <stdio.h> int main() { int deviceCount; cudaGetDeviceCount(&deviceCount); printf("Detected CUDA devices: %d\n", deviceCount); for (int i=0; i<deviceCount; i++) { cudaDeviceProp prop; cudaGetDeviceProperties(&prop, i); printf("Device %d: %s\n", i, prop.name); } return 0; }
编译运行:
nvcc test.cu -o test ./test
若能输出GPU信息,说明CUDA Runtime正常,问题出在OpenACC工具链配置;若仍报错,继续排查驱动或WSL配置。
5. 确认HPC SDK环境变量配置
确保HPC SDK的环境变量正确加载,在~/.bashrc或~/.zshrc中添加:
export NVARCH=`uname -s`_`uname -m` export NVCOMPILERS=/opt/nvidia/hpc_sdk export PATH=$NVCOMPILERS/$NVARCH/latest/compilers/bin:$PATH export PATH=$NVCOMPILERS/$NVARCH/latest/cuda/bin:$PATH export LD_LIBRARY_PATH=$NVCOMPILERS/$NVARCH/latest/cuda/lib64:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=$NVCOMPILERS/$NVARCH/latest/compilers/lib:$LD_LIBRARY_PATH
执行source ~/.bashrc生效后,用which pgcc和which nvcc确认命令可被找到。
WSL2 Ubuntu下OpenACC标准配置流程
- Windows端准备:安装支持WSL2的NVIDIA桌面驱动(版本≥460.x),开启Windows功能“适用于Linux的Windows子系统”和“虚拟机平台”。
- WSL2配置:将Ubuntu发行版设置为WSL2版本(
wsl --set-version <你的发行版名称> 2),并运行wsl --update更新到最新版。 - HPC SDK安装:下载并解压NVIDIA HPC SDK到
/opt/nvidia/hpc_sdk目录。 - 环境变量配置:按上述步骤添加环境变量到shell配置文件。
- 验证配置:
- 执行
nvidia-smi确认GPU被识别 - 执行
pgaccelinfo或nvaccelinfo确认加速器正常检测
- 执行
- 编译运行OpenACC程序:
示例代码test.c:
编译运行:#include <stdio.h> int main() { int arr[100]; #pragma acc parallel loop for (int i=0; i<100; i++) { arr[i] = i*2; } printf("arr[0] = %d, arr[99] = %d\n", arr[0], arr[99]); return 0; }pgcc -acc -fast test.c -o test ./test
内容的提问来源于stack exchange,提问作者Aronld Manki
相关产品推荐
相关产品推荐

