RTX 4090上torch.cuda.is_available()返回False,主因是驱动版本与PyTorch CUDA wheel不匹配:驱动需≥535.98(支持CUDA 12.2),但过高(如545.x)或过低均易失效;应选用cu121/cu124后缀的PyTorch官方wheel,避免conda安装干扰,且WDDM模式下驱动兼容性尤为关键。

torch.cuda.is_available() 返回 False?别急着重装,RTX 4090 在 Windows 上跑不起来 PyTorch GPU 版,90% 的问题出在驱动和 CUDA 版本链的错位上——不是版本太旧,而是“太新”或“太旧”都不行,必须卡在那个窄小的兼容窗口里。
确认 NVIDIA 驱动是否真正支持 CUDA 12.x
Windows 下nvidia-smi 显示的 “CUDA Version” 是**驱动内置支持的最高 CUDA 运行时版本**,不是你装了啥就显示啥。RTX 4090 要稳定启用 PyTorch 的 GPU 加速,驱动必须 ≥ 535.98(对应 CUDA 12.2),但很多用户装了 536.x 或 545.x 反而出问题,因为部分新版 Game Ready 驱动对 WDDM 模式下 CUDA 12.4+ 的 runtime 初始化有兼容性波动。
- 用 GeForce Experience 自动更新,比 Windows Update 更可靠
- 如果已装高版本驱动但
torch.cuda.is_available()仍为False,先回退到535.98或536.67(这两个是 RTX 4090 + PyTorch 2.3–2.8 最稳的组合) - 不要信“Studio Driver 更稳定”的说法——它默认禁用 CUDA WDDM 支持,反而会让 PyTorch 找不到 GPU
PyTorch 官方 wheel 与 CUDA Toolkit 的关系
你不需要手动安装完整 CUDA Toolkit(CUDA_PATH 环境变量也不必设)。PyTorch 的 pip wheel 已静态链接所需 runtime,只依赖驱动层支持。
- 查 PyTorch 官网下载页,找带
cu121或cu124后缀的包,比如:torch-2.4.0+cu121 - 对应驱动需支持 CUDA 12.1(即
nvidia-smi显示 ≥ 12.1) -
nvcc --version可以不装,也无需配置;装了反而可能干扰(尤其当你同时装了 CUDA 12.0 和 12.4 时)
用 pip + 虚拟环境绕过 conda 的 channel 冲突
conda 安装 PyTorch 时容易把cudatoolkit 包当成独立依赖拉进来,导致与驱动实际支持的 CUDA 版本打架。
- 创建干净虚拟环境:
python -m venv torch4090,然后.\torch4090\Scripts\activate - 直接用官方 pip 命令(清华源加速):
pip install torch torchvision torchaudio --index-url <a href="https://www.php.cn/link/29ab8937c72f36ca382c32ece8ca5595">https://www.php.cn/link/29ab8937c72f36ca382c32ece8ca5595</a> --extra-index-url <a href="https://www.php.cn/link/86f373adc229cb2c06b3a19fa479f191">https://www.php.cn/link/86f373adc229cb2c06b3a19fa479f191</a> - 切勿执行
conda install pytorch或conda install cudatoolkit=12.1——这会污染环境并覆盖 PyTorch 自带的 CUDA runtime
验证时别只看 is_available()
返回 True 只说明能初始化,不代表能用。真正卡住的往往是张量运算或 DataLoader 多进程。
- 运行这个最小验证块:
import torch x = torch.randn(1000, 1000, device='cuda') y = torch.randn(1000, 1000, device='cuda') z = torch.mm(x, y) print(z.mean().item())
- 如果卡死、报
RuntimeError: CUDA error: unspecified launch failure,大概率是显存碎片或 WDDM timeout,可临时加os.environ['PYTORCH_CUDA_ALLOC_CONF'] = 'max_split_size_mb:128' -
torch.version.cuda输出的版本号必须和nvidia-smi显示的“CUDA Version”一致或更低;若更高,说明 wheel 匹配错误
驱动版本、PyTorch wheel 的 CUDA 后缀、以及 Windows WDDM 模式下的隐式限制——这三者构成一个脆弱三角,缺一不可。最常被忽略的是:WDDM 不是“只是显示驱动”,它是 Windows 下 CUDA 的运行基石,而它的行为在 40 系显卡上比以往更敏感。


















