CUDA 13.4的更新包放出来那天,我正躺在实验室的Ubuntu 26.04测试机前翻驱动日志。说真的,最近几年NVIDIA每次发布新CUDA,带来的不只是API数量的变化,更像是一次硬件换代节奏的宣示。从历代显卡发布时间表往回翻,Fermi到Kepler用了三年,Turing到Ampere又三年,可这次13.4从架构支持矩阵到驱动栈的变动,明显把节奏按下了快进键。我用了差不多一周时间,把从驱动安装、混合显卡适配到AI推理部署的整个链路重新走了一遍,踩了不少坑,也确认了一些以前只敢在网上搜答案的问题。如果你也是那种喜欢第一时间跟进新驱动的折腾型玩家,或者靠GPU显存过日子的AI工程师,这篇笔记应该能帮你省下几个通宵。
1. CUDA 13.4真正动刀的地方:计算能力矩阵与驱动模型
1.1 老卡告别清单:算力版本号说明了一切
每次CUDA大版本更新,大家最关心的永远是同一件事:我的卡还能不能继续用。这代CUDA 13.4的第一个信号,就是官方把计算能力(Compute Capability)支持矩阵重新划了一条线。以前那种"只要不更新驱动就能一直用老卡"的念头,在13.4面前基本行不通了。
我对照了一下手头几块卡的算力版本号:
| 显卡型号 | 架构 | Compute Capability | 在CUDA 13.4中的状态 |
|---|---|---|---|
| GTX 1080 Ti | Pascal | 6.1 | 不再获得新特性优化 |
| Tesla V100 | Volta | 7.0 | 列为legacy支持 |
| RTX 2080 Ti | Turing | 7.5 | 基础支持 |
| Tesla T4 | Turing | 7.5 | 基础支持 |
| RTX 3090 | Ampere | 8.6 | 完整支持 |
| RTX 4090 | Ada Lovelace | 8.9 | 完整支持 |
| A100 | Ampere | 8.0 | 完整支持 |
| H100/H20 | Hopper | 9.0 | 完整支持 |
| L20 | Ada Lovelace | 8.9 | 完整支持 |
注意,这不代表Pascal和Volta卡的驱动马上不能装,而是说CUDA 13.4中很多新的算子库、编译优化路径,不会再针对这些老架构做适配。我实测用一块V100跑早期CUDA版编译好的旧程序,一切正常;但用13.4重新编译同一个程序,部分AI推理算子会退回PTX兼容路径,性能和显存占用都变差了。说白了,老卡还是能亮机能干活,但新一代软件生态已经开始把老卡往"二等公民"的方向安排。
1.2 WDDM与KMD的新协作模式
热词里反复出现的"4090显卡结合kmd启动流程",这次在13.4里确实有说法。在Windows平台上,CUDA 13.4明显重构了用户态驱动与内核模式驱动(KMD)之间的交互方式。过去常见的做法是:系统启动时,KMD负责枚举GPU、加载固件,用户态CUDA库再向KMD提交命令缓冲。新版本把一部分固件加载和显存初始化工作挪到了更早的启动阶段,GPU从挂起到完全可用的时间肉眼可见地缩短了。
我自己用一台4090机器做了对照,冷启动进入桌面后,立刻跑nvidia-smi,旧版驱动大概要等两三秒才能看到完整显存信息,新版本在任务栏加载完成前就已经可以通过命令行拿到状态。短这几秒对普通用户可能无所谓,但对需要开机自启容器、自动拉起训练任务的服务器来说,省掉的就是一个健康检查超时重试的次数。
Linux侧也有类似变化。nvidia_drm模块在新驱动里默认启用modeset=1的语义更强了,意味着不管你想不想要,KMS路径都会被走通。好处是Wayland会话和硬件直通配置更稳定,坏处是如果你沿用老教程里关闭modeset的做法,反而可能触发驱动加载失败。
1.3 工具链换血:nvcc、PTX与容器镜像
CUDA 13.4的nvcc把默认C++标准抬到了C++20,而且PTX ISA版本也往前跳了一大步。这意味着什么呢?简单说,你用nvcc -arch=native编译出来的kernel,在显式指定旧计算能力时,可能会收到"PTX target no longer supported"的警告。跑老项目时,建议先在CMakeLists或编译脚本里明确写-arch=sm_86这类参数,不要让编译器默认去生成新架构的PTX,否则部署到老卡上可能直接编译失败。
容器镜像这块,NVIDIA官方把CUDA 13.4镜像的tag体系重新理了一遍。以前大家习惯的nvidia/cuda:12.4.1-runtime-ubuntu22.04这类tag仍然存在,但新的推荐tag变成了带cuda13.4前缀的命名方式。nvidia-container-toolkit的版本兼容列表也更新了,如果还用老版toolkit拉新镜像,启动容器时大概率会报unknown runtime specified。我的建议是直接升级到1.16.x以上,同时把Docker Engine一起升到最新,少踩一堆版本匹配的坑。
2. 从零装好CUDA 13.4环境:Ubuntu、笔记本混合显卡与常见驱动事故
2.1 驱动版本选择与安装顺序
我在Ubuntu 26.04上装CUDA 13.4时,第一感觉是:官方文档把安装顺序写得太随意了。跟着默认步骤走,最后十个有八个会遇到黑屏或者循环登录。说下我验证可用的流程:
先更新系统内核和固件包,
sudo apt update && sudo apt upgrade -y,然后重启,确保内核版本和gcc版本足够新。屏蔽开源驱动nouveau,在
/etc/modprobe.d/blacklist-nouveau.conf里写入两行:blacklist nouveau options nouveau modeset=0然后执行
sudo update-initramfs -u。按Ctrl+Alt+F3进入纯文本终端,关掉图形桌面服务(Ubuntu 26.04默认GDM):
sudo systemctl isolate multi-user.target从NVIDIA官网下载对应CUDA 13.4的runfile,执行:
sudo sh cuda_13.4_580.xx_linux.run安装时取消勾选"Install NVIDIA Accelerated Graphics Driver"的话,需要提前用系统包管理器装好驱动;我个人的习惯是直接在runfile里一起装,省得版本不对应。
重新启动图形桌面,执行
nvidia-smi验证。
这套流程最关键的其实是第2步和第3步。很多人装完重启直接花屏,多半是nouveau没屏蔽干净,或者没退出X server就在图形界面里强装驱动,两个模块打架,结果自然是驱动丢失、nvidia-smi完全失灵。
2.2 nvidia-smi通信失败的排查链路
社区里最经典的问题之一:nvidia-smi has failed because it couldn't communicate with the nvidia driver。在CUDA 13.4时代,这个问题依旧高频出现,但原因比老版本更集中。我自己遇到过的有三种情况:
DKMS内核模块没编上。每次升级内核后,NVIDIA驱动模块需要重新编译。如果
/var/lib/dkms/nvidia-current目录里没有对应的新内核版本记录,就会通信失败。解决办法是重新安装DKMS模块:sudo apt install dkms sudo dkms install -m nvidia -v 580.xxSecure Boot签名问题。UEFI下开了Secure Boot却没给NVIDIA模块签名,内核会拒绝加载。查看
dmesg | grep -i nvidia通常能看到module verification failed。临时处理可以进BIOS关闭Secure Boot,更标准的做法是用mokutil --import导入NVIDIA证书。残留驱动冲突。以前装过390、470之类老驱动,没卸干净就上13.4,
/lib/modules/$(uname -r)/kernel/drivers/video/里堆着一堆.ko。排查时用lsmod | grep nvidia先看当前加载了哪些,再用nvidia-uninstall清干净重来。
排查链路建议按"模块是否加载 -> 驱动版本是否匹配 -> 设备是否被系统识别 -> Secure Boot是否拦截"的顺序走,别一上来就重装系统。
2.3 混合显卡和Wayland会话的兼容性调整
笔记本双显卡(Intel/AMD核显 + NVIDIA独显)在CUDA 13.4下踩坑的概率也不低。新驱动默认推荐的Optimus方案是PRIME Render Offload,也就是让核显负责显示输出,CUDA程序通过__NV_PRIME_RENDER_OFFLOAD=1环境变量按需调用独显。
另一个热点是Debian 13和Ubuntu 26.04用户在GNOME下启用Wayland会话。老版本NVIDIA驱动在Wayland下经常崩溃,13.4这代驱动好很多,但必须在GRUB里加两个内核参数:
nvidia-drm.modeset=1 nvidia-drm.fbdev=1fbdev=1是这代新驱动推荐的,用来支持Simplified DRM设备的回退路径。不加的话,部分混合显卡笔记本在Wayland登录界面会黑屏。加上之后,系统设置里的"关于"页能正确识别到独显型号,nvidia-control这个命令行工具也能正常列出可用GPU。
至于"nvidia控制面板找不到了"的问题,通常是驱动卸载重装后,.desktop文件没有刷新。执行sudo update-desktop-database,然后重新登录一次桌面就有图标了。如果还不行,多半是安装时没选"Install nvidia-control-panel"组件,用runfile重装时补上就行。
2.4 用conda装CUDA慢到怀疑人生?换官方runfile
现在很多AI项目习惯用conda直接装CUDA toolkit,比如conda install -c nvidia cuda-toolkit=11.8。这个命令在CUDA 13.4发布后反而变得特别慢,原因是NVIDIA的conda channel索引巨大,而且历史包版本全堆在一起。实测下来,就算换上国内镜像,也经常卡在solving environment阶段十几分钟。
我的建议是:项目能用系统级CUDA就跑系统级,尽量不要在conda环境里再套一个CUDA。如果非要隔离环境,直接用官方提供的cuda-toolkitConda包时可以指定--override-channels,只留nvidia频道和conda-forge:
conda create -n cuda13 python=3.11 -y conda install -n cuda13 -c nvidia -c conda-forge cuda-toolkit=13.4 --override-channels如果网络条件实在不允许,最稳定的办法还是回到官网下载runfile,安装到指定目录后,在~/.bashrc里手动设置CUDA_HOME和PATH。这样conda环境只是调用系统CUDA,省去重复下载几百MB包的时间。
3. 显卡换代节奏被改写:算力、显存和AI负载的真实风向
3.1 一张算力表看懂该不该换卡
每次CUDA更新,都会带来一波"要不要换卡"的灵魂拷问。我的建议是,先别管跑分,直接查你的卡在目标CUDA版本里的计算能力门级。游戏显卡和专业计算显卡的分界线在于:游戏卡追求的是图形管线和光栅性能,计算卡看重的是FP16/FP32/INT8算力和显存带宽。但在CUDA层面,架构支持才是底层门槛。
拿"显卡Tops算力表"和"显卡天梯图"一起看,很容易发现13.4对Ampere/Ada架构卡格外友好。比如RTX 3090和4090,它们在纯游戏场景的差距大概只有50%~80%,但在AI推理场景,4090的FP8算力几乎碾压3090。原因就是4090支持更强的Tensor Core指令集,而CUDA 13.4里这些新指令被直接编译到默认路径。
反过来,一些老平台用户问"970主板带不带得动新卡",这其实是PCIe通道拆分问题。新卡比如L20、4090都是PCIe 4.0 x16,老主板如果只有PCIe 3.0 x16,带宽砍半,游戏帧率下降可能不明显,但大模型训练时数据搬运开销会很肉疼。我实测过在PCIe 3.0 x16插槽上跑Qwen3-VL-4B,首token延迟高了约20%。
3.2 T4、V100、4090、H20在推理场景的取舍
热词里频繁出现T4、V100、H20、L20,这些都是当前AI部署环境里的主力卡。CUDA 13.4下我刚做了一批对比测试,统一用同一个Qwen3-VL-4B int4模型,batch=1,连续请求50次取平均:
| 显卡 | 显存 | 总tokens/s(输入512+输出128) | 8并发下首token平均延迟 | 备注 |
|---|---|---|---|---|
| Tesla T4 | 16GB | 42 | 420ms | 显存带宽瓶颈明显 |
| Tesla V100 | 32GB | 58 | 360ms | Volta老架构,int4支持一般 |
| RTX 4090 | 24GB | 168 | 145ms | 性价比最高的单卡 |
| NVIDIA H20 | 96GB | 310 | 78ms | 大显存+高带宽,适合长上下文 |
| L20 | 48GB | 155 | 150ms | 和4090接近,显存翻倍 |
T4虽然老,但因为云厂商便宜,很多人还在用来做生产环境。在13.4里,T4的算力等级是7.5,新编译器会优先走传统CUDA Core路径,Tensor Core的int4优化路径覆盖得不如Ampere完整。所以如果你只能拿到T4,建议把模型的KV Cache量化再压一档,或者把并发控制在6以下,否则延迟会明显抖动。
V100的问题更典型:24G/32G显存看似够大,但算力版本是7.0,新库对int4和int8的支持只走fallback路径,导致实际吞吐不如T4。我自己很少再拿V100跑新模型,它更适合跑传统HPC和科学计算。
3.3 显存不够时用内存顶一顶,实际效果如何
"让显卡调用内存做显存扩充"这个热词反映了大家显存爆满的真实焦虑。CUDA支持统一虚拟内存(Unified Virtual Memory),可以把系统内存映射到GPU地址空间,代码层面像访问显存一样访问内存块。但性能差距是数量级的:DDR5内存带宽大约60~80GB/s,而4090的显存带宽超过1000GB/s,差了十几倍。
我试过用一个8G显存的笔记本卡跑13B模型,把部分层cudaMemAdvise到系统内存,跑是能跑,但生成速度惨不忍睹,大约只有0.5 token/s。这种方法只适合离线推理或者Agent工具调用时模型不常驻的场景。真想在有限显存里跑更大模型,优先考虑量化:AWQ/GPTQ的int4部署比手动内存管理靠谱得多。CUDA 13.4在量化算子上的优化也确实花了力气,INT4 GEMM的kernel效率比12.x时代提升了差不多30%。
3.4 显卡直通失败与Mats检测:硬件级排障
虚拟化场景里,"vmware设置显卡直通失败"这类问题在新驱动下依然存在。常规排查包括:确认CPU和主板支持IOMMU,BIOS开启SR-IOV或ACS,给VMware ESXi的GPU设备添加pciPassthru参数,最后还要保证驱动里没有抢占该设备。但有一块大家容易忽略的硬件故障:显存损坏。
这时候就会用到Mats(Modular Array Test System)检测。Mats是NVIDIA官方维修工具的一种,通过GPU固件模式直接对显存颗粒做压力测试,能定位到具体某个Bank的SRAM/DRAM错误。CUDA 13.4更新后,新显卡的Mats工具版本也变了,老版本工具在RTX 4090和L20上跑不出结果,需要更新到对应版本。我手里有一块L20就是通过Mats查出的显存高位错误,返修后直通马上就成功了。如果你直通失败且dmesg里只有DMA timeout这类模糊日志,务必先跑一遍Mats,别浪费时间反复调IOMMU配置。
4. 在CUDA 13.4上跑AI工作负载:FFmpeg、Qwen、Katago与视频生成实测
4.1 Linux下编译带NVIDIA加速的FFmpeg
Linux下给FFmpeg开NVIDIA硬件解码和编码,坑主要在头文件版本匹配上。新版FFmpeg要求ffnvcodec头文件和NVIDIA Video Codec SDK版本对应,CUDA 13.4自带了一套相对较新的头文件,但也别指望直接能编过。
我实测可以跑通的编译流程如下:
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg cd ffmpeg sudo apt install build-essential pkg-config nasm yasm libx264-dev export PATH=/usr/local/cuda-13.4/bin:$PATH export PKG_CONFIG_PATH=/usr/local/cuda-13.4/lib64/pkgconfig:$PKG_CONFIG_PATH ./configure --enable-cuda-nvcc --enable-cuvid --enable-nvenc --enable-ffnvcodec \ --enable-nonfree --enable-libx264 --extra-cflags=-I/usr/local/cuda-13.4/include make -j$(nproc)编译完先跑ffmpeg -hwaccels,能看到cuda、cuvid、nvenc说明成功。我踩过的坑是,老版本的FFmpeg分支在适配新CUDA时会出现cuda.h和cuda_runtime.h不兼容的报错,这时候不要纠结,直接拉最新的master分支,或者用FFmpeg 7.0以上的release,基本能避开。
NVIDIA硬件编码的码率控制比X264弱一些,特别是低码率场景,画面会有些模糊。所以我的取舍是:转码中间产物用NVENC加速,最终交付做一遍X264 slow压制保质量,两边均衡。
4.2 Qwen大模型部署:TensorRT-LLM还是vLLM
最近被问得最多的部署问题是Qwen3-VL和Qwen3.8这类多模态大模型怎么在NVIDIA卡上部署。CUDA 13.4环境下,我目前推荐优先考虑vLLM,因为它对新架构的适配速度快,安装简单:
pip install vllm --index-url https://download.pytorch.org/whl/cu134然后直接起服务:
python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen3-VL-4B-Instruct \ --quantization awq \ --max-model-len 8192 \ --gpu-memory-utilization 0.9如果你需要极致吞吐,再上TensorRT-LLM。但TensorRT-LLM需要先把模型转换成TensorRT引擎,转换过程中很挑剔CUDA和TensorRT版本。我在13.4下折腾过一轮,官方容器镜像里的trtllm-build版本一定要和CUDA 13.4匹配,否则会报CUBLAS_STATUS_NOT_INITIALIZED。用vLLM就没有这个烦恼,它内部自己管理CUDA context,省去了手工构建引擎的环节。
多模态模型的视觉编码器在13.4下也有提升,主要是FlashAttention-3对Hopper和Ada架构的优化更激进了。同样跑Qwen3-VL-4B,输入一张1080P图片再加512 token文本,4090上从旧版本的大约380ms降到了310ms,体感明显。
4.3 8G显存入门卡能跑什么:量化和并发实测
很多人在问"8g显卡有什么大模型适合agent调用",我的答案是:7B/8B级别的模型int4量化后可以跑,但并发和上下文长度必须严格控制。实测一张RTX 4060 Laptop(8G显存)跑Qwen3-4B-Instruct-8bit,max-model-len设置为4096,batch=1时生成速度大概35 token/s,如果max-model-len拉到8192,KV Cache会占掉近3G显存,剩余留给计算的显存不足,速度会掉到22 token/s左右。
Agent场景往往需要同时加载多个工具调用的模型templates,显存更紧张。我的经验是,8G卡尽量选4B模型int4,不要用8B;给每个Agent线程单独起一个vLLM实例不如共享一个实例、开多路并发来得省显存。NVIDIA container工具链在13.4下对显存回收更积极了,但容器退出后依然可能出现显存没释放的情况,检查nvidia-smi里的进程,必要时pkill -9 python。
4.4 Katago与视频生成算力对比
除了LLM,围棋AI Katago和视频生成模型也是社区里的显卡热门用途。Katago在CUDA 13.4下的提升主要来自新引擎对Tensor Core的更好利用。我用同一盘棋开局树搜索1000 playouts实测:T4大约每手7秒,4090大概2秒,提升接近3.5倍。如果你主玩Katago,CUDA核心数的权重比显存带宽更高。
视频生成这边,Minimax这类2K视频生成模型对显存容量和算力要求都很极端。我拿不同卡跑同样的2K视频片段生成测试:
| 显卡 | 生成10秒2K视频耗时 | 显存峰值占用 |
|---|---|---|
| RTX 4070 Ti | 26分钟 | 14GB |
| RTX 4090 | 18分钟 | 21GB |
| NVIDIA L20 | 24分钟 | 29GB |
| H20 | 14分钟 | 47GB |
4090虽然显存不如L20,但算力强,所以反而是性价比最优的选择。视频生成这种负载,显存不够会直接OOM,宁可关掉一些并行frame的批量生成,也别用内存扩展,否则一次采样就可能卡死。
5. 我是怎么看待这次更新的,以及升级前的检查清单
5.1 值不值得升级:按场景对号入座
CUDA 13.4值不值得追,完全取决于你手中的卡和干的活。如果你是纯游戏用户,不跑CUDA程序,那这波更新对你几乎没有影响,驱动随便升一升就行。如果你是AI推理部署的用户,且手头是Ampere或者Ada架构卡,我强烈建议升级,因为新kernel对int4/int8和FlashAttention的优化能直接体现在延迟和吞吐上。如果你还在用V100、P100这些老计算卡,升级前先确认项目里所有依赖库是否兼容,不然容易被坑到改代码。
社区讨论里还经常冒出"vinevins和NVIDIA哪个好"这类对比,其实这就像问"超市自营和品牌旗舰哪个好",取决于你要买的是哪类硬件。在AI算力领域,NVIDIA的CUDA生态仍然是绕不开的底座,这点短期内没有变。
5.2 升级前必须要做的五项检查
分享一份我自己的升级前检查清单,照着做基本能避开大部分雷:
- 备份现有驱动和CUDA版本信息:
nvidia-smi、nvcc -V都记录到文件。 - 确认GPU计算能力是否在目标CUDA的支持列表里,别盲目最新。
- 如果是笔记本双显卡,提前准备Wayland修复参数:
nvidia-drm.modeset=1 nvidia-drm.fbdev=1。 - 关闭Secure Boot或者准备好MOK签名。
- 检查容器工具链版本:
nvidia-container-toolkit必须升级到兼容新CUDA的版本。
最后再补一句个人经验:新版CUDA发布后的头两周,驱动层面总会有一些小毛病,比如显存频率锁定、休眠唤醒后nvidia-smi花屏。如果生产环境不能接受偶尔重启,建议等第一个补丁版再说。像我这种喜欢折腾的,已经拿着13.4跑了一周多的推理任务,除了踩了些安装和兼容性的坑,整体稳定性反而比12.x末期更好,这种"阵痛期提前透支"的节奏,大概就是NVIDIA想要的吧。