ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

华硕X99上Tesla M40无法点亮?一文搞懂Above 4G Decoding设置

华硕X99上Tesla M40无法点亮?一文搞懂Above 4G Decoding设置 三张特斯拉 M40 插到华硕 X99 上开机直接黑屏风扇转一下就停这状态就差没把BIOS 里有个开关你没开写在脸上了。这不是段子是很多玩 Tesla M40 的人真实遇到的第一道坎。我也是在二手平台收了三张卡之后才在无数次重启、刷 BIOS、换插槽、查供电之后确认了罪魁祸首就是主板 BIOS 里那个叫Above 4G Decoding的选项。这名字听起来像给超频玩家准备的冷门功能实际对 Tesla M40 这种大显存计算卡来说它就是总闸不开的话卡连正常工作都谈不上更不用说多卡协同。这篇文章我把整个事情讲透为什么 M40 必须开这个选项、华硕 X99 上该去哪里开、开了之后还要配套调什么以及设置完终于点亮之后最常见的几种故障和排查链路。内容适合手里有华硕 X99 系列主板正打算上 Tesla M40 单卡或多卡跑计算的人参考也适合在 BIOS 设置上踩了坑、想搞明白底层原因的朋友。1. 为什么大家集体卡在 Above 4G Decoding 这个选项上1.1 Tesla M40 的 24GB 显存正好撞上 4GB 寻址天花板要理解这个选项得先理解 PCIe 设备是怎么被系统看见的。显卡插进主板之后CPU 和操作系统需要通过一段内存映射地址空间来访问显存和显卡寄存器这段映射空间在 PCIe 体系里叫 BARBase Address Register。简单说显存有多大申请映射的地址空间就得有多大否则驱动就只能看到显存的一小部分窗口。老的主板 BIOS 默认情况下把 PCIe 设备的地址映射限制在 4GB 以内也就是物理内存地址空间的前 4GB 范围。这在十年前完全够用因为当年的显卡显存普遍只有 512MB、1GB、2GB映射几条 BAR 绰绰有余。但 Tesla M40 不一样它一块卡就是24GB GDDR5 显存。24GB 的显存空间需要一个大得吓人的 BAR 映射请求直接越过了 4GB 这条线。如果 BIOS 不允许设备在 4GB 以上的地址空间做映射卡就没办法被系统完整识别。这时候你看到的现象非常迷惑BIOS 里偶尔能认到卡、设备管理器里能看到未知设备、驱动装到一半报错、甚至直接开不了机哪一步出了问题都像显卡坏了。1.2 多卡叠加时 BAR 空间不够会发生什么单卡 24GB 已经顶破天花板了多卡就更夸张。三张 M40 就是 72GB 显存加上每张卡自身的寄存器映射、MMIO 空间总需求远超 4GB。即便单卡状态下某些主板的兼容性比较好还能勉强进系统一旦把第二张、第三张卡插上去BIOS 的地址分配逻辑直接爆炸。实际工作中的表现分几种开机自检卡在 PCIe 设备枚举阶段屏幕没任何输出键盘灯也不亮。系统能进但设备管理器里每张卡都带黄色感叹号错误码 43。三张卡只认出一张或两张剩下的在 PCIe 链路枚举阶段就被跳过。认出了全部卡但 nvidia-smi 里显存显示为 0 MiB 或者只有 12288 MiB 之类的一半数值。更隐蔽的情况系统能识别驱动能装一跑计算就崩或者系统直接重启因为驱动访问了错误地址触发总线错误。我第一次插三张 M40 的时候情况比上面列的最惨案例还惨。华硕 X99 开机自检直接停在 VGA 灯亮的位置连 BIOS 画面都出不来。当时我第一反应是供电不够换了一个更大功率的电源无解又怀疑是卡的生产版本冲突把所有卡单独插一遍都能亮但只要插两张以上就完蛋。最后翻国外论坛看到一个帖子反复强调 Above 4G Decoding 必须开才把方向转到 BIOS。1.3 这个开关到底是什么为什么它叫关键选项Above 4G Decoding 的中文含义是允许在 4GB 以上地址空间进行解码。把它开启之后BIOS 就会启用 64 位 PCIe 地址映射把大块显存的 BAR 分配到物理地址 4GB 以上的高位空间而不是全部挤在低 4GB 区域。拿生活场景类比就像一个老小区每栋楼统一用一个容量有限的信箱以前大家快递少够用。后来有人开始网购大件家具一个快递柜根本塞不下打开 Above 4G Decoding 就相当于在小区里另建了一排大件快递区每个快递都有一个清晰的编号地址送货员按号放件居民按号取件一切恢复正常。所以这个选项对 Tesla M40 不是性能优化项不是可开可不开的进阶功能而是能不能正常工作的基础开关。谁要是告诉你开不开无所谓那八成是没真正在 X99 平台多卡环境下跑过 M40。这也是为什么大量二手 M40 买家翻车之后第一个被指认的 BIOS 选项就是它。2. 华硕 X99 BIOS 里的完整设置路径与配套选项2.1 找到开关不同 BIOS 版本下的菜单路径华硕 X99 的开机进 BIOS 方式和其他华硕主板没区别开机时反复按Delete 键少数情况下按F2。如果第一次没进去不用慌重启再来一次华硕主板进 BIOS 的响应窗口在开机前两三秒。进去之后看到的可能是简易模式EZ Mode直接按F7切换到高级模式所有设置项才露出来。然后按下面路径找Advanced → PCI Subsystem Settings → Above 4G Decoding → Enabled这个路径在华硕 X99-A、X99-DELUXE、X99-E WS 等主流型号上基本一致。但有些版本的 BIOS 菜单分类不太一样如果在 PCI Subsystem Settings 里没找到去下面两个位置翻Advanced → North Bridge Configuration → Above 4G DecodingAdvanced → System Agent Configuration → Above 4G Decoding有一个细节容易被忽略不同 BIOS 版本里这个选项的名称可能不一样。老版 BIOS 可能写作 Memory Mapped I/O above 4GB意思完全相同只是翻译或命名风格不同。如果你找了半天都找不到关键词先确认自己是不是没开高级模式再看 BIOS 版本是不是太老版本问题的排查在第四章展开。设置完成后按F10保存并退出确认保存提示后重启。这个操作一定要确认有的人改了选项就直接断电重启结果 BIOS 设置没写入重启后又是一模一样的黑屏白白浪费时间。2.2 一起调好的联动项PCIe 链路速度与 SR-IOVAbove 4G Decoding 开了之后别急着进系统还有几个和它经常一起出现、一起影响多卡稳定性的选项建议一并设置清楚。第一个是 PCIe 链路速度。华硕 X99 的 BIOS 里PCIe x16 插槽的链路速度默认是 Auto也就是让主板和显卡自动协商运行在 Gen3PCIe 3.0还是更低的感情档位。多卡环境下自动协商偶尔会出问题尤其是二手卡、转接卡、延长线一起上阵的时候链路协商不稳定的情况不少。手动把这些插槽的 Link Speed 锁定到Gen3是更稳妥的做法如果发现锁定 Gen3 后不稳定表现为开机识别慢、跑负载掉卡再降级到Gen2测试Gen2 带宽对 M40 这种计算卡的实际计算性能影响很小但稳定性提升明显。第二个是 SR-IOV。这个选项在 PCIe 设置子菜单里全称是 Single Root I/O Virtualization。如果你后续有虚拟化直通、或者想把 M40 切分成多个虚拟 GPU 使用的需求建议顺手开启。不开它不影响当前直通但开了之后系统里会出现更多虚拟功能设备某些虚拟化平台配置起来更灵活。如果完全没虚拟化需求保持默认关闭即可开着也不会带来什么性能收益。第三个是 Re-Size BAR Support。很多人在搜 Above 4G Decoding 的时候会连带搜到这个词注意区分Resizable BAR 和 Above 4G Decoding 是两回事。Above 4G Decoding 解决的是 PCIe 设备能否在 4GB 以上地址空间映射 BAR 的问题Resizable BAR 则是允许系统在运行时动态调整显卡的 BAR 大小让 CPU 一次能访问全部显存。Tesla M40 属于 Maxwell 架构专业卡官方驱动对 Resizable BAR 的支持并不完整所以在 X99 上折腾 M40 的时候不用太纠结 Resizable BAR 开不开关键是 Above 4G Decoding 必须开。2.3 启动模式的选择CSM 与 UEFI 哪种更稳设置好 Above 4G Decoding 之后还有一个容易让人反复横跳的选项CSMCompatibility Support Module。Tesla M40 是一张没有显示输出接口的计算卡它不负责输出画面这块工作必须由主板的核显或另一张亮机卡来承担。而 CSM 选项控制的是 BIOS 以传统方式还是 UEFI 方式引导操作系统同时也影响 PCIe 设备在启动阶段的枚举行为。不同批次、不同 vBIOS 版本的 M40 对 CSM 的敏感度不一样。我见过两种完全相反的情况一种必须开 CSM否则开机阶段 M40 无法被正确枚举另一种必须关 CSM开了 CSM 后系统启动变慢、偶尔卡死在开机 Logo。我自己的调试顺序是先把 Above 4G Decoding 设为 Enabled启动模式保持默认看系统能不能进。如果一切正常就不用动 CSM如果启动阶段异常再进 BIOS 尝试开启 CSM或者关闭 CSM 切到纯 UEFI 模式测试两种状态下哪套组合更稳定。需要说明的是M40 本身支持 UEFI Option ROM理想状态下用纯 UEFI 启动没问题。但为了省事很多人会保留一张便宜的亮机卡插在 PCIe 或核显上这时候 CSM 的设置对亮机卡和计算卡的兼容性都有影响。最省心的组合通常是把 CSM 设为 Enabled、操作系统以 UEFI 方式安装这个组合在我接触过的三套 X99 上都很稳。3. 多卡配置别只盯着 BIOS通道、供电、散热一个都跑不掉3.1 华硕 X99 各主板的 PCIe 通道分配差异BIOS 设置只是入场券多卡能稳定干活硬件层面的通道分配、供电、散热才是长期运行的根基。先把 PCIe 通道分配这件事说清楚因为它决定你把卡插在哪几个插槽上。X99 平台的 PCIe 通道数量取决于 CPU。Haswell-E 和 Broadwell-E 系列里像 5960X、6950X 这类旗舰提供 40 条 PCIe 通道5820K 则只有 28 条这个差距直接影响多卡插槽的带宽分配。在 40 通道 CPU 下华硕 X99-DELUXE 或 X99-A 通常可以做到第一张卡运行在 x16第二张卡运行在 x16第三张卡运行在 x8对于 Tesla M40 来说x8 的 PCIe 3.0 带宽在跑大模型推理和训练时还是够用的性能折损不明显。但如果用的是 28 通道的 5820K三卡配置就比较尴尬某些插卡组合会直接让第三张卡掉到 x4 甚至 x2这对计算卡来说带宽瓶颈就太严重了。我的建议是玩多卡 X99优先上 40 通道的 CPU。如果你手里的 U 是 28 通道版本那就老老实实插两张卡或者接受第三张卡跑在低带宽下的现实。这个瓶颈是 CPU 引脚层面锁定的改 BIOS 也变不出来。另外要说一下华硕 X99-E WS 这个特殊型号。它通过主板上集成的 PLX 交换机芯片把 PCIe 通道做了扩展多卡带宽分配比普通 X99 更灵活。如果你打算长期稳定跑四张卡X99-E WS 是华硕 X99 家族里的最优解但它的 BIOS 设置逻辑也更复杂Above 4G Decoding 必须开PLX 芯片相关的 Power Management 选项可能要单独调整否则低负载时卡会莫名其妙掉链路。这个型号我没法用三言两语说完建议到手后直接更新最新 BIOS很多 PLX 相关的问题官方已经修了。3.2 电源供电与线材的实测建议Tesla M40 的单卡最大功耗在250W 左右供电接口是双 8-pin部分版本是 86 pin。三张卡满载就是 750W加上 CPU、主板、风扇、硬盘这些系统的瞬时功耗轻松超过 1100W。所以第一道关是电源功率。别省这个钱建议直接上1300W 以上的金牌或白金电源。有人觉得三卡 750W买个 1000W 电源余量应该够了但实际跑起来AI 训练那种高负载场景的瞬时峰值电流远超标称电源过载保护一旦触发就是整机断电所有训练任务白跑。第二道关是供电线材。每张卡尽量用独立的 PCIe 供电线从电源引出不要用一拖二转接线串接两张卡。很多人忽略这一点因为 M40 在桌面环境经常用的是转接线但一拖二线材的额定电流在两张卡高负载时可能不够线材发热后接触电阻增大轻则降频重则断电。我一个朋友的翻车经历特别典型两张 M40 用一条一拖二 8-pin 线供电跑推理任务十多分钟必重启一次换了很多驱动都没解决最后把线材改成独立双线问题立刻消失。这种坑在实践里非常普遍排查起来又特别费时间。所以装机时线材规划要一步到位别在供电上省任何东西。第三道关是开机时序。Tesla M40 没有自己的电源开关完全跟随主板电源时序。如果开机瞬间因为供电不足或短路保护被触发主板直接拒绝上电是有可能的。所以每一次插拔卡之后检查 8-pin 供电有没有卡扣到位、PCIe 插槽有没有插到底这两个动作养成习惯能省下大量排查时间。3.3 被动散热卡在机箱里的续命方案Tesla M40 是被动散热设计整卡靠一块均热板把热量传导到散热鳍片然后完全依赖机箱风道把热带走。这不是有一个风扇吹一下就行那么简单多卡贴脸安装的时候卡与卡之间的缝隙几乎不透风第二张卡和第三张卡的散热条件会明显恶化。我自己实测过一组数据两张 M40 紧挨着插入相邻插槽满载跑 20 分钟靠里面那张卡的温度会到 88-92℃直接触发降频。把两张卡隔开一个插槽位同样负载下温度能压回 70-75℃。所以多卡优先错开插槽位置哪怕因此让某张卡跑在 x8只要不是 x4也值得。如果实在没有条件拉开距离可以考虑下面几招在卡的正上方加装一个 12025 甚至 12038 的高风压风扇直接往散热鳍片吹。风扇支架可以用几根扎带固定在机箱侧板或硬盘位粗糙但有效。打开机箱侧板用一个大风扇对着卡的方向鼓风。这是最快的临时方案长期跑不建议积灰太严重。使用涡轮改造套件把整卡改成涡轮抽风结构。这类套件价格不便宜且安装有一定风险适合预算充足、长期满载跑的人。用软件限制功耗墙或风扇策略间接控制温度。M40 的功耗可以通过nvidia-smi -pl 200这类命令设定上限牺牲一点点性能换温度稳定偶尔应急能用。顺带说一句安装驱动之后建议第一时间在nvidia-smi里盯一下每张卡的温度和功耗曲线。如果某张卡的传感器读数为 N/A小心这通常是卡已经处于掉链路或驱动异常状态别急着重新拔插先把日志和dmesg拉出来看后面第四章继续讲。4. 设置完不等于搞定验证方法与四种典型故障的排查链路4.1 用 nvidia-smi 和 lspci 确认卡的真实状态一切设置完成后怎么确认 Above 4G Decoding 真的生效了最简单粗暴的方法是看系统能不能完整识别每张卡的显存。Linux 系统下安装好 NVIDIA 驱动后在终端输入nvidia-smi正常状态下每张 Tesla M40 会显示24576MiB的显存。如果看到0 MiB、12288 MiB或者其他不完整的容量基本可以判定 BAR 映射不正常Above 4G Decoding 可能没真正生效或者主板没把地址空间正确分配给对应插槽。再用lspci看一眼卡在系统里的链路状态lspci -v | grep -A 20 -i nvidia重点看 LnkCap 和 LnkSta 两行确认链路协商到的速度是 8 GT/s即 PCIe 3.0而不是 5 GT/s即 PCIe 2.0。如果协商速度偏低回到 BIOS 把链路速度手动锁定到 Gen3 再测。Windows 系统下更简单设备管理器里 N 卡对应的设备如果带此设备找不到足够的可用资源之类的错误或 NVIDIA 控制面板里已禁用灰块基本都是资源分配问题。GPU-Z 可以看 Bus Interface 和 Memory Usage正常显示 24GB 就没问题。4.2 故障一开启后依然黑屏这是最常见的挫败场景你已经找到 Above 4G Decoding 并设为 Enabled保存重启之后屏幕还是黑着。别急着怀疑设置没生效按照下面顺序排查。第一步确认视频输出走的是哪张卡。M40 没有输出接口如果你把显示器接到了 M40 上那是永远不会有画面的。必须使用核显或另一张亮机卡的视频输出口。开机后如果看到主板自检画面但进入系统后黑屏那往往是显卡驱动或显示输出策略问题不是 M40 的锅。第二步确认 BIOS 设置是否保存。华硕主板修改设置后需要 F10 保存并退出有些人改完选项直接重启设置丢失。检查方法很简单重新进 BIOS看 Above 4G Decoding 是否仍然显示 Enabled。如果显示 Disabled说明上次没有保存成功。第三步尝试切换 CSM 状态。前面提到不同 vBIOS 版本的 M40 对 CSM 敏感度不同。如果当前是 Enabled改 Disabled 再试如果当前是 Disabled改 Enabled 再试。这个步骤能解决大量什么都对但就是黑屏的怪异问题。第四步最小化硬件。拔掉所有多余 PCIe 设备只保留一张 M40 和一块亮机卡再开机。如果最小化配置能进系统再逐一插回其他卡定位是哪张卡或哪个插槽导致问题。这个过程耗时但非常有效我处理过的绝大多数多卡问题最后都能在最小化配置逐一加回这一步收敛。4.3 故障二显存只显示一半或系统报错 43显存显示一半这是个非常经典的 BAR 空间映射问题特征。只显示 12288 MiB、4096 MiB 或 0 MiB都说明驱动只能访问到部分显存地址缺失的部分被 BIOS 丢掉了。这类问题我处理过几个案例多数情况下原因是设置成了 Enabled 但系统里仍然有设备占用了低 4GB 地址空间导致 M40 的 BAR 无法完整分配。处理思路确认 Above 4G Decoding 在 BIOS 里确实生效重启进系统后再跑一次nvidia-smi。检查主板 PCIe 插槽周边是否插了其他占用地址空间的设备比如某些 NVMe 转接卡、声卡、网卡。临时拔掉它们看看 M40 是否恢复正常。尝试更换 M40 所在的 PCIe 插槽有时候是主板把地址空间分配给了错误的位置。检查 Windows 系统下的 资源 冲突设备管理器里显示资源冲突的禁用设备在系统层面调整 BAR 位置有时也能解决。Windows 下设备错误码 43 则是一个大杂烩症状很多原因都会导致 43。但针对 Tesla M40绝大多数原因是驱动和卡之间无法完成完整的资源握手。建议顺序先重装最新版 NVIDIA 驱动Windows 下用 R475 或更新的专业驱动分支同时把 Windows 快速启动关掉再重启。如果还不行就回到 BIOS 里把 Above 4G Decoding 关闭再开启一次强制主板重新做一次地址分配。千万别忘了M40 本身就是无显示输出的计算卡驱动装不上或报 43 时别把它和普通游戏卡的处理方式混为一谈很多排错步骤是没有意义的。4.4 故障三多卡中间某张卡时不时掉线三张卡同时跑起来过一段时间发现 nvidia-smi 只剩两张卡了或者某张卡报没有在总线上找到这种掉线问题比黑屏更折磨人。按频率从高到低排查温度过高。M40 被动散热卡间距过小风扇不够温度冲上 90℃ 后可能会触发 bus 掉线。用nvidia-smi -q -d TEMPERATURE查看每张卡的当前温度如果某张卡明显偏高先处理散热别去折腾 BIOS。供电瞬断。高负载时全卡功耗拉升电源或线材扛不住会瞬间掉压最直接的表现是其中一张或多张卡从总线上消失。建议用独立供电线并检查电源的健康度。PCIe 链路协商不稳定。把 BIOS 里 PCIe 链路速度从 Gen3 手动改到 Gen2稳定跑一段时间对比。计算任务对 Gen2 带宽的敏感度通常不高但掉卡问题往往因此消失。供电接口松脱。M40 的 8-pin 供电接口没有卡扣锁紧插一下听到咔哒声再确认。掉线问题往往是硬件环境综合作用的结果单抓一个环节解决不了但按上面顺序排查多数情况下能在几个小时内收敛。4.5 故障四BIOS 里压根找不到这个选项华硕 X99 早期的 BIOS 版本比如 2014-2015 年发布的 1.x 版本里Above 4G Decoding 要么不存在要么以 Memory Mapped I/O above 4GB 这种老名字藏在某个角落。如果你按键 F7 之后翻遍整个高级菜单都找不到最大的嫌疑是 BIOS 版本太老。解决办法是更新 BIOS。华硕 X99 主板普遍支持 USB BIOS Flashback 功能可以在不进入 BIOS、不接 CPU 的情况下直接刷写。具体步骤不复杂找个 U 盘格式化为 FAT32去华硕官网下载对应主板型号的最新 BIOS 文件把文件重命名为该型号规定的文件名不同型号规则不同主板说明书里有写插到标有 BIOS 字样的 USB 接口按住主板上的 Flashback 按钮几秒指示灯闪烁过程就是刷写过程。全程千万别断电。更新到最新 BIOS 之后Above 4G Decoding 选项基本都会出现。顺带一提新 BIOS 对内存兼容性和 PCIe 设备枚举也有优化多卡环境下的稳定性通常比老版本更好。最后分享一个我自己的使用习惯每次改动 BIOS 设置之后我都会在纸上记下改了哪个选项、改成了什么、当时系统是什么状态。听起来很土但多卡配置的排错过程往往横跨好几天中间穿插各种拆机、换卡、换电源的步骤没有记录的话你很容易忘记上一次到底是什么状态、哪次改动起效了然后重复踩同一个坑。玩 X99 配 Tesla M40 这件事本身就是个高密度踩坑和排错的过程把每一步都留下痕迹比什么都重要。
RELATED READING

延伸阅读

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