升级CUDA 11.6后pyCUDA编译报错:nvcc无法识别已安装的VS2019
CUDA 11.6 + pyCUDA 编译错误解决方案
问题重现
升级CUDA至11.6版本后,使用pyCUDA时触发以下编译错误:
pycuda.driver.CompileError: nvcc编译C:\Users\imsog\AppData\Local\Temp\tmpkgtu92cq\kernel.cu失败
[命令: nvcc --cubin -arch sm_75 -m64 -Ic:\users\imsog\anaconda3\lib\site-packages\pycuda\cuda kernel.cu]
[标准输出:
nvcc fatal : nvcc无法找到受支持的Microsoft Visual Studio版本。仅支持2017至2019版本(含)!可使用nvcc参数'-allow-unsupported-compiler']
已安装VS2019且TensorFlow可正常运行,重装CUDA 11.6无效,回退旧版CUDA可正常工作,环境变量已包含VS相关路径。
解决方案
1. 给pyCUDA添加nvcc兼容参数
直接在pyCUDA编译时添加报错提示的-allow-unsupported-compiler参数,强制nvcc兼容当前VS版本。修改代码中编译内核的部分,示例:
import pycuda.autoinit import pycuda.driver as drv from pycuda.compiler import SourceModule # 添加extra_compile_args参数 mod = SourceModule(""" __global__ void multiply_them(float *dest, float *a, float *b) { const int i = threadIdx.x; dest[i] = a[i] * b[i]; } """, extra_compile_args=['-allow-unsupported-compiler'])
2. 检查VS2019组件完整性
确认VS2019已安装**“Desktop development with C++”**组件,包含MSVC编译器、Windows SDK等必要工具:
- 打开VS Installer,选择“修改”
- 确保“Desktop development with C++”勾选,且右侧组件中“MSVC v142 - VS 2019 C++ x64/x86 build tools”(对应版本14.29.x)已安装
3. 调整环境变量顺序
将VS2019的编译器路径移至环境变量PATH的最前端,避免nvcc优先识别旧版VS路径:
- 打开系统属性 → 高级 → 环境变量
- 在系统变量的
PATH中,将以下VS2019路径移至顶部:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64 - 重启终端或IDE后重试
4. 手动指定pyCUDA使用的编译器
通过设置环境变量CUDAHOSTCXX指定VS2019的cl.exe路径:
- 打开终端,执行:
set CUDAHOSTCXX="C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\cl.exe" - 再运行你的pyCUDA代码;若要永久生效,可将该变量添加到系统环境变量中
内容的提问来源于stack exchange,提问作者Frobot
相关产品推荐
相关产品推荐

