装 PyTorch 时看到一行 no CUDA-capable device is detected,显卡明明插着,程序就是不认。要弄清这句报错,得先知道 CUDA 在中间干了什么。

CUDA 是 NVIDIA 的一套并行计算平台和编程接口。显卡有几千个小核心,适合同时算很多简单运算,CUDA 把这些核心包装成能调用的函数,让 C、C++、Python 写的程序把活派给显卡。搜 cuda是用来干嘛的,多数答案只丢一句显卡加速。真到装环境的时候,这句话等于没说,报错照样看不懂。

日常里哪些东西在用它

  • 深度学习:PyTorch、TensorFlow 的 GPU 版本,底层都走 CUDA 和 cuDNN。
  • 视频剪辑与转码:NVENC 硬件编码,导出速度比纯 CPU 快不少。
  • 科学计算与仿真:矩阵运算、分子动力学这类重复计算量大的场景。
  • 3D 渲染:部分渲染器的 GPU 模式依赖 CUDA 加速。

它只支持 NVIDIA 的卡。AMD 显卡走 ROCm,苹果芯片走 Metal,代码不通用。同一份环境在别人机器上能跑,在你这报错,先看显卡品牌。

驱动版本和工具包版本不是一回事

nvidia-smi 右上角显示的 CUDA Version 是驱动支持的上限,不是装好的工具包版本;nvcc --version 才是实际编译器的版本。两个数经常差一截,看到 12.x 和 11.x 并存不算故障。

装框架一般不用自己装整套工具包,conda 或 pip 的 GPU 版本会把匹配的运行库一起带上。版本对不上,最常见的报错是 CUDA driver version is insufficient for CUDA runtime version。

怎么确认卡真的被用上了

Python 里跑一行 torch.cuda.is_available(),返回 True 才算通。再开 nvidia-smi,看显存占用有没有涨。训练时显存一直是 0,说明代码还在 CPU 上,检查 device 参数是不是写成了 cpu。

显存不足报 CUDA out of memory,先减 batch size,或者开混合精度。实在跑不动,租云显卡比换卡划算,按小时计费,试错成本低得多。回到最初的问题,cuda是用来干嘛的:把能并行的计算丢给显卡跑,仅此而已。用不用得上,看你手上的软件有没有为 N 卡写过加速路径。