深度学习环境配置------Windows安装CUDA与CUDNN_cudnn tarball-CSDN博客
Windows11安装CUDA、cuDNN、PyTorch详解_win11 cuda安装-CSDN博客(强推)
cuda和cudnn的安装教程(全网最详细保姆级教程)_cudnn安装-CSDN博客
了解cuda cudatoolkit cudann pytorch关系:

CUDA 是标准,CUDA Toolkit (cudatoolkit) 是工具,cuDNN 是加速包。
二、为什么 PyTorch 版本必须和它们适配?
核心原因:二进制接口(ABI)不兼容 。PyTorch 是预编译好的二进制包,不是现场从源码编译的。
- 原理:编译时的"锁死"
PyTorch 在出厂(编译)时,已经用特定版本 的 CUDA Toolkit 和 cuDNN 编译好了。它内部已经链接了特定版本的动态库(如 libcudart.so.11.0)。
-
如果你本地环境版本不一致 :比如 PyTorch 是用 CUDA 11.8 编译的,你本地只有 CUDA 12.x,运行时就会找不到对应的
.so文件,报错ImportError或undefined symbol。 -
cuDNN 同理 :PyTorch 内部调用了 cuDNN 的卷积函数,如果版本不匹配,函数接口可能变了,直接导致程序崩溃。
- 两个"版本"的误区
-
nvidia-smi显示的 CUDA Version :那是你的显卡驱动能支持的最高 CUDA 版本 ,不是你实际安装的 Toolkit 版本。只要驱动版本足够高(向下兼容),跑低版本 PyTorch 通常没问题。 -
nvcc --version:这才是你本地实际安装的 CUDA Toolkit 编译器版本
1.查看显卡驱动兼容性

有显卡,需要cuda
这表明作者电脑支持GPU计算。如果电脑不支持GPU,后续操作也就不需要了,只能使用CPU进行深度学习。 在Windows11中显示的GPU 0和GPU 1表示你的计算机中检测到了多个图形处理单元(GPU),最常见是集成显卡 + 独立显卡,GPU 0:通常是集成显卡(Integrated GPU,如 Intel UHD Graphics、AMD Radeon Vega 等),集成在CPU中,功耗低,适合日常办公和轻度任务。GPU 1:通常是独立显卡(Dedicated GPU,如 NVIDIA GeForce、AMD Radeon、Intel ARC 等),性能更强,用于游戏、设计、3D 渲染等高性能需求。
CUDA(Compute Unified Device Architecture)是显卡厂商NVIDIA推出的一种通用并行计算架构,旨在利用GPU(图形处理器)进行高性能计算。CUDA是利用GPU进行高性能计算的一个工具包。
CUDA(Compute Unified Device Architecture)是 NVIDIA 推出的并行计算平台和编程模型。你可以把它理解为 GPU(显卡)的"驱动程序+开发环境"。
2 类比理解
-
CPU:像 1 个数学教授,单核能力强,适合处理复杂逻辑。
-
GPU:像 10000 个小学生,适合同时处理大量简单计算(如矩阵乘法)。
-
CUDA :就是那个吹哨子、排队形、发试卷的体育老师,负责把这 10000 个小学生组织起来干活。

比如我的显卡驱动版本是566,可安装的CUDA最高版本为12.7 
3查看nvida控制面板和显卡驱动下载/更新(额外非必需)
(一)显卡驱动更新教程
如下:注意注意注意:如果你电脑不需要更新显卡驱动,那就跳过显卡驱动更新教程哦
1.查看自己电脑显卡型号
在搜索框输入设备管理器并打开

2.下载/更新地址:下载 NVIDIA 官方驱动 | NVIDIA

3.下载完成直接双击安装
安装超级简单,直接下一步下一步就行,安装完成之后重启电脑,在终端输入nvidia-smi命令,来查看可支持的最高cuda版本
(二)查看nvida控制面板
我没nvida驱动?

4查看是否安装cuda

我还没安装cuda
NVIDIA的显卡驱动程序和CUDA是两个不同的概念!CUDA是NVIDIA推出的使用GPU进行计算的一个工具包(TooKit)。如果没有显卡驱动根本用不了显卡 ,**因此当我们使用一台电脑的时候默认会已经安装NVIDIA的显卡驱动,**例如作者驱动版本为566.24,我们也可以更新我们的驱动,更新链接为:
https://www.nvidia.com/Download/index.aspx?lang=en-us
5.查看cuda和gpu的兼容版本
登录如下地址,可以查看CUDA版本和对应的NVIDIA GPU驱动版本兼容表格:
CUDA 12.6 Update 2 Release Notes
CUDA Toolkit 13.3 - Release Notes --- Release Notes 13.3 documentation
可以看到CUDA版本不高于CUDA 12.6 Update 3版本均可。
6 CUDA下载
地址如下:
CUDA Toolkit Archive | NVIDIA Developer
CUDA Toolkit Archive | NVIDIA Developer
https://developer.nvidia.com/cuda-toolkit-archive
我安装这个

cuda_12.6.2_560.94_windows.exe 安装包名字就是cuda版本和对应驱动版本

自定义安装在这个路径
安装好之后成功样子(需要有环境变量,正常自动安装就自动填上了):


在系统变量 用户变量那里没有 两者区别:


三、cudnn安装
cuDNN(CUDA Deep Neural Network library)是一个由NVIDIA开发的深度学习GPU加速库,旨在为深度学习任务提供高效、标准化的原语(基本操作)来加速深度学习框架在NVIDIA GPU上的运算。
cuDNN安装需要先注册账号(需要注册一个账号才可以下载,随便注册就行)但好像现在不需要了?反正我没有登录。登录如下地址:
cuDNN 9.23.0 Downloads | NVIDIA Developer
cuDNN 9.23.0 Downloads | NVIDIA Developer
https://developer.nvidia.com/cudnn-downloads
选择对应版本进行下载。如果当前界面没有你需要的版本,可访问如下历史版本页面进行下载:
cuDNN Archive | NVIDIA Developer
cuDNN Archive | NVIDIA Developer
https://developer.nvidia.com/rdp/cudnn-archive

历史版本:

eg:for CUDA 11.x 表示这个cuDNN版本是 CUDA 11.x 版本系列兼容的。CUDA11.x 系列包括了 11.0、11.1、11.2 、11.3等具体版本,x 表示任何小版本号

复制这三个文件到cuda安装目录下,覆盖
1.验证是否安装成功
cd .\extras\demo_suite
分别执行.\bandwidthTest.exe .\deviceQuery.exe


四、PyTorch安装
有选cuda的就是torch-gpu版本了 需要在某个环境中装好 便于管理不同项目
登录PyTorch官网地址:
如果没有需要的torch,也可以点击那个历史版本链接进去查找wheel文件 建议使用国内源加速pip时候(可以根据项目安排哪个版本)
【超详细教程】2024最新Pytorch安装教程(同时讲解安装CPU和GPU版本)-CSDN博客
点击历史版本链接后可以看到完整的pip命令(下图2):
命令解析:
-
torch:PyTorch 主框架。 -
torchvision:图像处理库(如果你做 CV 任务必须装)。 -
--index-url https://download.pytorch.org/whl/cu126:告诉 pip 去这个地址找 CUDA 12.6 版本的 wheel 包。
3. 关于 torchaudio的说明
- 官网通常不勾选 :除非你做音频处理,否则官网默认不推荐安装
torchaudio,所以命令里没有它。
pip install torch==2.11.0 torchvision==0.26.0 torchaudio==2.11.0 --index-url https://download.pytorch.org/whl/cu126

这里漏了一个torchchaudio



我的例子:一般不在base处理东西

常见镜像源
清华:https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云:https://mirrors.aliyun.com/pypi/simple/
https://zhida.zhihu.com/search?content_id=177108011&content_type=Article&match_order=1&q=%E4%B8%AD%E5%9B%BD%E7%A7%91%E6%8A%80%E5%A4%A7%E5%AD%A6&zhida_source=entity:https://pypi.mirrors.ustc.edu.cn/simple/
华为云: https://repo.huaweicloud.com/repository/pypi/simple/
腾讯云:https://mirrors.cloud.tencent.com/pypi/simple/
pip install torch==2.11.0 torchvision==0.26.0 torchaudio==2.11.0 --index-url https://download.pytorch.org/whl/cu126 -i https://pypi.tuna.tsinghua.edu.cn/simple/
这是错误的:

eg:
法1:
pip install torch==2.11.0 torchvision==0.26.0 torchaudio==2.11.0 -i https://download.pytorch.org/whl/cu126
法2:
先pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
再pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu126(去掉官网地址,否则命令行比全局配置优先生效)

关键点 :你设置的中,CUDA 12.6 版本只有 2.6.0到 2.8.0的 torch 版本,没有 2.11.0版本。
实际情况:截至目前,PyTorch 官方在 CUDA 12.6 这个底层框架下,目前只发布到了 2.8.0版本 。也就是说,cu126的框里,还没有放 2.11.0这块拼图 。
最后我用了这个,降低版本就行:(文章开头强推链接的命令)
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu126
安装包比较大,需要等待一段时间。如果读者还是觉得慢,可登录阿里镜像下载PyTorch的轮子文件到本地,再进行安装:pytorch-wheels安装包下载_开源镜像站-阿里云
pytorch-wheels安装包下载-开源镜像站-阿里云
https://mirrors.aliyun.com/pytorch-wheels/

pip install "torch-2.6.0+cu126-cp312-cp312-win_amd64.whl"
我的例子:

用了官网的

改成用清华源的(已经全局配置了) 但清华源默认给了我cpu版本的

查看不同环境对应的python版本
pip uninstall torch torchvision torchaudio -y 卸载现任版本

还是从阿里云里面找:

我装了这个:
这张图里的文件名 torch-2.6.0+cu126-cp312-cp312-win_amd64.whl就是你要下载的正确文件,它完美解决了你的问题。
我们可以把它拆开来看,它的意思是:
-
torch-2.6.0:这是 PyTorch 的版本号,和你代码里要求的一致。 -
+cu126:这是最关键的部分! 它代表 CUDA 12.6。这正是你显卡驱动的版本,有了这个,PyTorch 才能调用你的显卡。- (你之前报错是因为装了
+cpu结尾的文件,那个只能用 CPU)
- (你之前报错是因为装了
-
cp312:代表它是给 Python 3.12 用的。 -
win_amd64:代表这是 Windows 系统 64位 的安装包。

我要查找python3.9版本来安装:
你需要下载的文件名应该是:
torch-2.6.0+cu126-cp39-cp39-win_amd64.whl
下载后,用 pip install 文件路径安装即可。

这就是cpu版本torch

这就是gpu版本
成功结果:
测试代码:
import torch
# 查看torch版本.
print(torch.__version__)
# 检查使用设备.
device = (
"cuda"
if torch.cuda.is_available()
else "mps"
if torch.backends.mps.is_available()
else "cpu"
)
print(f"Using {device} device")
# 查看cuda是否可用.
print(torch.cuda.is_available())
# 查看cuda版本.
print(torch.version.cuda)
# 查看GPU数量
print(torch.cuda.device_count())
# 查看设备名称.
print(torch.cuda.get_device_name(0))

测试代码2:
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'
import torch
import numpy as np
import time
class Benchmark:
"""For measuring running time."""
def __init__(self, description='Done'):
self.description = description
def __enter__(self):
self.start_time = time.time()
return self
def __exit__(self, *args):
self.stop_time = time.time()
print(f'{self.description}: {self.stop_time - self.start_time:.4f} sec')
# GPU计算热身
size = 6000
with Benchmark('numpy'):
for _ in range(10):
a = np.random.normal(size=(size, size))
b = np.dot(a, a)
device = torch.device('cuda')
with Benchmark('torch-gpu'):
for _ in range(10):
a = torch.randn(size=(size, size), device=device)
b = torch.mm(a, a)
device = torch.device('cpu')
with Benchmark('torch-cpu'):
for _ in range(10):
a = torch.randn(size=(size, size), device=device)
b = torch.mm(a, a)


