ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Tesla P40+GTX750双卡游戏实战:TCC转WDDM与驱动改造

Tesla P40+GTX750双卡游戏实战:TCC转WDDM与驱动改造

1. 先把这张卡的脾气摸清楚

1.1 一张天生没有视频输出口的计算卡

Tesla P40 这张卡在二手市场上的价格一直很魔幻,24GB 显存看着像白送,但真正上手的人很快会发现它不是给桌面准备的。它是数据中心里的纯计算卡,板子上连一个 HDMI 口都没有,散热还是被动式——整张卡就是一块等着服务器暴力风扇灌风的铝块。你把它插进家用机箱,第一件要面对的事不是驱动,而是它压根没打算给你输出画面。

所以“P40 玩游戏”这件事,从一开始就必须拆成两件事看:算力归谁,画面归谁。算力在 P40 上,画面必须由另一张带输出接口的卡负责,这就是标题里 GTX750 存在的意义,业内俗称“亮机卡”。它不参与游戏渲染,只负责点亮显示器、跑系统桌面、把输出信号送出去。

而第二件更隐蔽的事,是驱动模式。这张卡在 Windows 下默认跑在 TCC 模式(Tesla Compute Cluster),这是给 CUDA 计算任务用的,DirectX 图形管线在 TCC 下根本不工作。你想让游戏用它,必须把模式切成 WDDM——这是整个折腾里最核心、也最容易卡死的一步,后面我会用整节篇幅拆开讲。

一句话概括这套方案的定位:适合有一定动手能力、愿意折腾驱动和散热、又想低成本拿到大显存和不错 FP32 算力的人。如果你只想插上就玩,这套方案会让你在第一个小时就想砸机箱。

1.2 TCC 和 WDDM 到底差在哪

很多人以为 TCC 和 WDDM 是“驱动装得对不对”的问题,其实不是。这是显卡在操作系统里扮演什么角色的根本区别。

WDDM 是 Windows 的显示驱动模型,显卡在它下面是一个完整的图形适配器:有桌面、有合成器、能被 DirectX 调用、能被任务管理器统计 3D 占用、能被 Windows 图形设置识别成一个可选的“高性能 GPU”。你平时用的所有消费级显卡,默认都在这个模式里。

TCC 则撤掉了图形这一层,只保留计算通道。它相当于把显卡从“显示设备”降级成“计算协处理器”,好处是延迟低、CUDA 上下文切换开销小、适合长时间跑训练任务,坏处就是 DirectX 完全看不到它。你在设备管理器里可能看到它,但任务管理器性能页里没有它的 3D 引擎曲线,游戏里更是找不到这块卡。

注意:TCC 模式下某些老版本驱动甚至会直接把它归到“其他设备”里,连型号都识别不出来,这时候别急着怀疑卡坏了,先确认模式。

理论上 Tesla 系列可以用nvidia-smi -dm 0切到 WDDM,但在 Windows 消费级驱动分支上,这张卡的 ID 往往根本不在支持的设备列表里,命令都跑不通。这就是为什么社区里主流做法不是“切模式”,而是“改造驱动,让它以为自己在装一张普通显卡”。

1.3 亮机卡不是可有可无的配角

有人会想,既然 P40 没有输出口,那我远程桌面进去不就行了?实测下来这条路走不通:Windows 在没有物理显示适配器连接的情况下,桌面合成和部分全屏应用的行为会变得很奇怪,而且 P40 本身不提供显示输出帧缓冲,远程桌面抓不到画面。

GTX750 在这里承担三件事:开机自检时给 BIOS 一个可用的显示设备、进系统后提供桌面合成和视频输出通路、以及作为 DirectX 的“呈现目标”。它不需要强,1GB 或 2GB 显存、跑个 1080p 桌面完全够。真正要留意的反而是它的架构代际——Maxwell 的老卡在某些新驱动分支里已经被移出支持列表,这直接决定了你能选的驱动版本范围,后面驱动那一节会详细算这笔账。

还有一点容易被忽略:两张卡同时插在机器上,Windows 会把它们都当成显示适配器加载驱动。如果驱动版本不统一,你会遇到一张正常、一张报错 43 的情况。所以这套方案的前置条件是——你必须找到一个同时认识 P40 和 GTX750 的驱动版本,或者用改造手段强行让驱动认卡。

2. 装之前,硬件这关先过

2.1 供电接口是个大坑

先说最容易出事的地方:P40 的辅助供电接口是CPU 用的 8pin(EPS 12V),不是显卡的 PCIe 8pin。这两者外形几乎一样,插错就是烧板子的事故。

为什么会这样?因为它是服务器卡,服务器的电源本来就只给 CPU 供电用 EPS 接口,板卡设计顺着服务器规范走。家用电源上你要么用一条 EPS 转接线(双大 4pin 或双 PCIe 8pin 转 EPS),要么直接用电源自带的那根 CPU 8pin 分出来。

项目Tesla P40GTX 750
供电接口EPS 8pin(CPU 规格)单 6pin
标称功耗250W约 60–75W
是否有显示输出无HDMI / DVI / DP
显存24GB GDDR51–2GB GDDR5
显存位宽/带宽384-bit / 约 346GB/s128-bit / 约 80GB/s
FP32 算力约 12 TFLOPS约 1.3 TFLOPS

供电余量要算清楚。一台普通游戏主机如果电源是 550W,扣掉 CPU 的 100W 左右、主板硬盘风扇 50W,留给显卡的只剩 400W,两张卡加起来峰值接近 330W,看着够,但这是额定值,不是瞬态值。P40 在负载切换时的瞬时电流冲击不小,老电源容易触发保护直接关机。我建议至少 650W 金牌,并且P40 单独走一路 PCIe 供电线,不要和 GTX750 共用一根线的两个头。

提示:转接线一定要买线径够的。市面上那种细得像耳机线的转接线,跑 200W 会明显发热,摸上去烫手就该换了。

2.2 散热改造决定你到底能不能玩下去

P40 是彻头彻尾的被动散热设计,原厂假定它待在 2U 服务器里,前面一排 40mm 暴力扇每秒几千转地灌风。你把它塞进普通机箱,它就是一坨没有风的铝鳍片,待机都能爬到 60 度,跑游戏分分钟撞 85 度温度墙开始降频,帧数掉得莫名其妙。

常见的三种改法,成本和效果差很多:

第一种是 3D 打印导风罩 + 涡轮风扇。你需要一个覆盖整卡长度的风道,尾部塞一个 7530 或 9733 的涡轮,从 PCIe 挡板位置往外排风。这是最接近原厂设计的做法,噪音可控,效果也最稳。缺点是得有人帮你打印,或者买现成的套件。

第二种是直接绑两个 12cm 机箱风扇在卡尾吹。成本最低,二三十块搞定,缺点是风压不够,只能吹到鳍片前半段,后半段(也就是供电和显存区域)依然闷着。实测能压住 1080p 游戏,但长时间跑会看到热点温度和核心温度差 20 度以上。

第三种是水冷头。P40 的孔位和公版 GP102 不完全通用,需要专门的全覆盖冷头,成本比卡本身还贵,除非你本来就有水冷系统,否则不建议为这张卡单独上水。

我自己走的是第一种路线,配了个 12V 的涡轮,用主板风扇接口供电,BIOS 里把那条曲线设在 50 度起转、70 度满速。跑游戏时核心温度稳定在 72 度上下,热点 85 度左右,不会再撞墙。

2.3 插槽、BIOS 与自检顺序

插槽分配有个反直觉的点:亮机卡最好插在第一条 CPU 直连的 x16 上。原因不是性能,是自检。很多主板在检测到第一条槽有卡时会优先从它输出,如果那条槽插的是没有任何输出接口的 P40,你会看到开机黑屏、蜂鸣器报错,甚至连 BIOS 都进不去——因为主板不知道画面该往哪送。

正确顺序是:

  1. GTX750 插第一条 PCIe x16,接显示器。
  2. P40 插第二条 x16(很多主板这条是芯片组提供的 x4 电气,对渲染影响有限,但会影响显存与系统内存之间的数据搬运效率)。
  3. 进 BIOS,把 Primary Display 设成 PEG 或对应的独显插槽,关闭 CSM,打开 Above 4G Decoding。
  4. 保存重启,确认能从 GTX750 正常点亮。

关于 Above 4G Decoding,这个必须开。P40 有 24GB 显存,系统需要给它分配一大段 MMIO 地址空间,32 位地址空间根本不够分,不开这个选项会出现“显存只识别到 256MB”或者设备管理器里带黄色感叹号的情况。Resizable BAR 反而无所谓,这张卡本身不支持完整的 ReBAR 特性,开了也不会有收益。

注意:有些主板在插了两张卡之后会自动把第一条 x16 拆成 x8/x8,这对 GTX750 完全无所谓,但如果你后面想给 P40 换个位置,记得回头看一眼链路宽度是不是掉到了 x4。

3. 驱动改造:让 P40 在 Windows 里“变成”一张显卡

3.1 驱动版本的取舍

这是整个项目里最需要动脑的一步,因为你要找的是一个交集。

P40 是 Pascal 架构的 GP102,从代数上讲它支持到相当新的驱动分支。但 GTX750 是 Maxwell 的 GM107,属于老一代,官方在某个版本之后就把它挪进了 legacy 支持列表,新驱动包里干脆没有它的设备 ID。如果驱动只认 GTX750 不认 P40,你装完就是一张卡能用一张卡失踪;反过来只认 P40,亮机卡没驱动,桌面分辨率锁在 640×480,一样没法玩。

所以选版本的逻辑是:先确定 GTX750 能用的最高版本,再确认这个版本里 Pascal 还在支持范围内。实测下来,470 到 550 这个区间是比较安全的窗口,两边都覆盖得到。具体到某个小版本号,去官方驱动下载页用 GTX750 的产品型号查一下最新可用版本,记下版本号,然后确认这个版本的 inf 里含 GP102 的段。

还有一个实践细节:Tesla 数据中心驱动和 GeForce 驱动是两个不同的分支。数据中心驱动天然认识 P40,但它在 Windows 上对图形功能的支持是残缺的,装完你会发现 DirectX 诊断工具里显示的还是软件渲染。所以别走这条路,直接拿 GeForce 或 Quadro 的驱动包来改。

3.2 改 inf 让驱动认卡(核心步骤)

思路很直白:驱动包里有一份设备清单,P40 的 ID 不在里面,那就手动加进去,让安装程序以为这是一张它支持的卡。

先把驱动包解开。官方下载的 exe 是个自解压包,用解压软件打开,或者运行后去临时目录把内容复制出来。找到Display.Driver目录下的nv_dispi.inf(不同版本文件名可能是nvaci.inf、nvdmi.inf等,看具体分支)。

用文本编辑器打开,先搜一下 GTX750 的 ID 确认文件里有它,然后找[NVIDIA_Devices.NTamd64.10.0...]这一段,在段尾按同样格式加一行。P40 的设备 ID 是DEV_1B38:

%NVIDIA_DEV.1B38% = SectionXXX, PCI\VEN_10DE&DEV_1B38

这里有两个坑。第一,SectionXXX不能瞎写,必须指向文件里一个真实存在的安装段落,通常挑一个 Pascal 同架构的条目复制过来最保险,比如从 P4000 或 1080 那几行里抄。第二,文件里还有一个[Strings]段,%NVIDIA_DEV.1B38%必须在里面有一行对应的显示名称,否则安装时会报“找不到字符串”:

NVIDIA_DEV.1B38 = "NVIDIA Tesla P40"

改完保存,回到驱动根目录,如果有setup.exe就直接跑,让安装程序用当前目录的 inf。如果安装程序校验失败,就改走设备管理器手动更新:右键 P40 那个未知设备 → 更新驱动 → 浏览计算机 → 从磁盘安装 → 指向你改过的 inf。

注意:改之前把整个驱动目录复制一份。改坏了不用重下,直接回滚目录重来。

3.3 注册表与签名两个收尾动作

驱动装上了不代表模式对了。Windows 会读注册表里的一个值来判断这个适配器是 WDDM 还是 TCC,位置在显示适配器类键下面:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\000X

000X里挨个点开看DriverDesc,找到写着 P40 的那一个。然后看AdapterType这个 DWORD:WDDM 一般对应值 1,TCC 对应 4(不同驱动分支有差异,以同一台机器上 GTX750 那个键的值为参照最靠谱——照着正常那张卡的值改)。改完重启。

第二个动作是驱动签名。改过 inf 的驱动包,里面的签名和文件内容对不上,Windows 会在安装时拦下来。常用的处理方式是重启进高级启动菜单,选“禁用驱动程序强制签名”,进去之后装,装完正常重启就行,签名校验只在安装那一刻拦。

如果你不想每次都进高级菜单,也可以开测试模式:

bcdedit /set testsigning on

代价是桌面右下角会挂一个测试模式水印,而且部分带反作弊的游戏会拒绝启动。这就是这套方案最大的软肋之一——很多热门联机游戏对测试模式、对改签驱动的容忍度很低,进不去就是进不去,没有绕过去的办法。所以如果你打算玩的是有反作弊的网游,这套方案从第一步就该放弃。

3.4 怎么确认它真的进了 WDDM

装完重启,三个验证点依次看:

第一,设备管理器里 P40 显示的是正常型号名,没有黄色感叹号,属性里“设备状态”写着这个设备运转正常。

第二,打开 DirectX 诊断工具(运行框输入dxdiag),切到“显示”标签页,上面有个下拉框,应该能选到两块卡。选中 P40 那一页,看“驱动程序模型”一栏写的是不是 WDDM。写 TCC 或者干脆没这一栏,说明前面注册表那步没生效。

第三,任务管理器 → 性能页,左侧应该出现两个 GPU 编号,点开 GPU 1 或 GPU 2,能看到 3D、Copy、Video Encode 这些引擎的曲线。如果 P40 那个只有 Compute 没有 3D,说明还在 TCC。

命令行也能看,nvidia-smi -q会列出两张卡,看每张卡的 “Driver Model” 字段:

nvidia-smi --query-gpu=index,name,driver_model.current --format=csv

三个验证点全过,才算真正把这张计算卡拉进了图形世界。这一步没过就往下走,后面所有操作都是白费功夫。

4. 双卡协同:渲染和输出分家

4.1 Windows 图形设置里指定高性能 GPU

WDDM 生效之后,Windows 会把 P40 当成一个“可选的高性能适配器”列出来。指定方式在设置 → 系统 → 显示 → 图形,点“添加桌面应用”,把游戏的可执行文件加进去,然后在它的选项里选“高性能”,下拉里会列出两张卡,选 P40。

但这里有个现实问题:Windows 的这个选择机制本来是给笔记本核显+独显那种混合方案设计的,在双独显桌面环境下它的行为会变得不那么可靠。有时你选了高性能,游戏确实跑在 P40 上;有时它会被 GTX750 抢先接管,尤其是当 GTX750 上连着显示器、而游戏是全屏独占模式的时候。

还有一个更硬的限制:P40 没有连接任何显示器,它无法承担全屏独占的呈现。DirectX 的全屏独占要求呈现目标直接挂在输出适配器上,P40 没这个能力,游戏一启动全屏就会黑屏或者直接崩。

4.2 无边框窗口是唯一稳的姿势

综合下来,能稳定跑起来的组合只有一种:游戏设置为窗口化或无边框窗口模式 + 指定 P40 为渲染 GPU。

窗口模式下,渲染结果先写进 P40 的帧缓冲,再由 Windows 的桌面窗口管理器通过 PCIe 把画面拷贝到 GTX750 的帧缓冲上输出。这条链路是软件层面完成的,你能在任务管理器的 Copy 引擎曲线里清楚看到 P40 那张卡在持续搬数据。

代价是什么?拷贝本身要占用 PCIe 带宽,还要多一次同步等待。1080p 60fps 的画面,每帧约 8MB,一秒 480MB 左右的数据量,对 PCIe 3.0 x8 来说不算什么,但对延迟是有影响的。实测下来输入延迟会比原生输出高个几毫秒,玩动作游戏能感觉到轻微的“发飘”,但不算不能接受。

换来的好处也很直接:24GB 显存随便造,画质拉满不用心疼,而且渲染负载全压在 P40 上,GTX750 只负责合成和输出,显卡占用常年个位数。

4.3 跨卡拷贝的代价与瓶颈判断

怎么判断瓶颈在哪?看两张卡的占用曲线就行。如果 P40 的 3D 引擎跑到 95% 而 GTX750 的 3D 引擎只有 20%,说明瓶颈在渲染,这是正常状态。如果 P40 只有 60% 而帧数上不去,同时 GTX750 的 Copy 引擎跑满,那就是拷贝链路成了瓶颈,通常是分辨率推得太高,或者 PCIe 链路只有 x4。

判断链路宽度的办法是用 GPU-Z 看 Bus Interface 那一栏,跑个渲染负载让它从x16 3.0 @ x4 3.0这种格式里读出实际协商值。如果 P40 落在第二条芯片组插槽上,很多主板只给 x4,这在 1080p 下问题不大,到 1440p 以上就会明显拖后腿。

5. 实测数据与调优方向

5.1 1080p 下的帧数表现

在这套配置上跑那款开放世界动作游戏,画质预设高、1080p 分辨率、关闭动态模糊,实测帧数在 55 到 70 之间浮动,野外开阔场景掉到 50 出头,主城里能上 75。这个成绩大致对得上这张卡的硬件水平——FP32 算力接近当年的旗舰,但显存是 GDDR5,带宽 346GB/s,比同代 HBM 的产品差一大截,所以纹理密集的场景容易掉帧。

2K 分辨率下帧数会掉到 38 到 48,基本卡在 45 附近。想稳 60 得把阴影和后期特效各降一档。4K 就别想了,拷贝链路和带宽两边都撑不住。

有一组数据值得记一下:把游戏切成全屏独占之后,帧数反而涨了 8 到 10 帧,但画面会随机闪烁甚至黑屏,属于“能跑但不能用”。这恰好印证了前面的判断——渲染性能不是瓶颈,呈现链路才是。

5.2 功耗墙和频率的实测

跑游戏时用nvidia-smi -q -d POWER,TEMPERATURE,CLOCK采样,能看到比较有意思的现象:GPU 核心频率稳定在 1550MHz 左右,功耗在 180W 上下,温度 72 度,没有撞墙。但如果散热没改好,温度上到 84 度,频率会掉到 1400MHz 以下,帧数直接少 10%。

所以散热改造带来的收益不只是“不烫”,而是实打实的性能。花几十块加个涡轮,换来 10% 的帧数,这笔账很划算。

还有一个省电的小技巧:不玩游戏的时候,把 P40 在设备管理器里禁用,整机待机功耗能降 15W 左右。这张卡待机时不会自己进入深度休眠,一直维持着接近 40W 的空载功耗,长期开机的电费会心疼。

6. 常见问题排查实录

6.1 一张速查表先顶住

现象大概率原因处理方向
开机黑屏、蜂鸣器短响主显示设备被设成了 P40换插槽,BIOS 里把 Primary Display 指向亮机卡
设备管理器里 P40 是未知设备inf 没改或改错段落检查[Strings]段是否补了名称,Section 是否存在
装驱动时报错签名无效未禁用强制签名高级启动里禁用签名,或开测试模式
设备正常但 dxdiag 没 WDDM注册表 AdapterType 未改参照亮机卡的值修改后重启
显存只识别到 256MBAbove 4G Decoding 没开BIOS 里打开该项
游戏启动黑屏/闪退全屏独占模式改成窗口化或无边框
游戏跑在 GTX750 上图形设置里没指定重新添加应用并选高性能
帧数正常但输入延迟高跨卡拷贝链路慢检查 PCIe 协商宽度,降低分辨率
跑一会儿掉帧温度墙降频改散热,加涡轮或风道
联机游戏进不去测试模式/改签驱动被拒无解,这套方案不适合反作弊游戏
待机功耗偏高P40 空载不休眠不玩时设备管理器禁用该卡

6.2 几条踩出来的经验

改驱动前先建还原点。这句话听起来像废话,但你改一次 inf、装一次驱动、改一次注册表,系统里的显示适配器栈会积累一堆残留。等到发现两张卡都出问题时,你会需要回到那个干净状态。系统还原比手动卸载快得多。

DDU 要在安全模式下跑。清理旧驱动的时候,常规模式下清理工具经常会漏掉正在被占用的文件,清完重启还是老的残留。安全模式跑一遍,干净程度明显不一样。

每次只改一个变量。我一开始图快,同时改了 inf、改了注册表、还换了驱动版本,结果启动直接黑屏,完全不知道是哪一步出的问题。后来把流程拆成“先让驱动认卡 → 重启验证 → 再改模式 → 重启验证”,每一步都能定位到问题。

别急着跑游戏,先用 dxdiag 和小工具验证。三维渲染测试跑一遍,能出画面、能读到正确的显存容量、帧率正常,再开游戏。很多人跳过这步,结果把驱动问题误判成游戏问题,浪费一晚上。

长期开机的话,给 P40 加个独立的供电开关。我用的是一个 PCIe 挡板位的物理开关,不玩的时候直接断电,比在设备管理器里禁用更彻底。代价是每次开机要等它重新枚举,大概多花五秒钟。

最实在的一条:这套方案的性价比,取决于你手上已经有什么。如果亮机卡、大功率电源、机箱风扇位都是现成的,那 P40 的二手价确实能换来一份不错的显存和算力。但如果这些都要从头配,把转接线、涡轮、电源升级的钱加起来,你会发现预算已经接近一张正经的二手游戏卡了,而后者插上就能用、不用担心签名、不用折腾驱动模式、不用改散热。这套方案真正的价值在“折腾本身的乐趣”和“大显存带来的额外用途”,比如同时跑点本地推理任务,那才是它比普通游戏卡更有意思的地方——一台机器白天当工作站,晚上开窗口跑游戏,这种一机两用的感觉,才是我最终把它留下来的原因。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进