很多人买 CMP 170HX 是冲着「A100 同芯、矿卡价格」。到手后才发现:
显存只有8GB / 10GB(硅片其实能撑更大容量)
大量 SM 被固件关掉,算力腰斩
PCIe 被压到Gen1,带宽拖后腿
社区工具cmpunlocker的思路不是改 OTP(一次性熔丝改不了),而是在nvidia-open 驱动加载、GSP 启动阶段拦截并重写配置:打开被关的 SM、改 HBM 几何、把 PCIe 拉回 Gen2,重启后仍然生效。
实测方向(以项目公开 PoC 为准):
项目 | 解锁前(库存) | 解锁后 |
|---|---|---|
8GB 卡显存 | ~8GB | 64GB |
10GB 卡显存 | ~10GB | 40GB |
计算 SM | 约一半被关 | 全开 |
PCIe | Gen1 | Gen2 |
一句话:同样一张卡,解锁后更像「能干活的 A100 同芯」,而不是阉割矿卡。
项目地址:amoghmunikote/cmpunlocker
二、原理速览(方便你写技术向评论区)
CMP 170HX 与 A100 同属 GA100,限制主要来自固件 / OTP,在驱动初始化时生效:
SS0 / SS1:挂起状态寄存器,关掉大量 SM
CFG1 / LMR:HBM2e 几何配置成 8GB 或 10GB
PCIe:链路被训到 Gen1
JTAG / PLM:权限锁死,用户态难改运行时配置
cmpunlocker 做的是:给nvidia-open打补丁,在 SEC2 Booter 阶段打开 PLM、写入内存与 SM 配置、再训 PCIe,并把补丁模块装到updates/cmpunlocker/,每次开机随驱动加载自动解锁。
支持设备 ID(安装脚本会识别):
10de:20c2→ 按8GB配置解锁到64GB10de:2082→ 按10GB配置解锁到40GB
三、环境要求(缺一不可,别跳过)
条件 | 说明 |
|---|---|
系统 | 仅 Linux x86-64(Ubuntu / Debian / Fedora 等) |
显卡 | NVIDIA CMP 170HX(8GB 或 10GB) |
驱动 | 已安装nvidia-open 610.43.0x(如 610.43.02 / 610.43.03) |
权限 | root( |
内核头文件 | 与当前内核一致: |
Secure Boot | 必须关闭(补丁模块未签名) |
网络 | 首次安装需联网,下载对应 |
Python | Python 3(构建/识别配置用) |
不支持:Windows、闭源专有驱动那一套启动路径、开着 Secure Boot 硬装。
四、安装前检查清单
# 1. 确认是 CMP 170HX lspci -nn | grep -iE '10de:20c2|10de:2082|10de:20b0' # 2. 确认驱动与当前显存(解锁前应是 ~8192 或 ~10240 MiB) nvidia-smi # 3. 驱动版本(需 610.43.0x 开源内核模块) nvidia-smi | grep -i "driver version" # 或 modinfo nvidia | grep -i version # 4. Secure Boot 应为 disabled mokutil --sb-stateBIOS 里关掉 Secure Boot;若用 Intel/AMD IOMMU,安装脚本默认会加intel_iommu=on/amd_iommu=on与iommu=pt(可用--no-iommu跳过)。
五、详细解锁教程(复制即用)
步骤 1:准备内核头文件与基础工具
Ubuntu / Debian:
sudo apt update sudo apt install -y build-essential dkms linux-headers-$(uname -r) git python3Fedora / RHEL 系:
sudo dnf install -y kernel-devel-$(uname -r) gcc make git python3确认nvidia-open 610.43.0x的用户态库 + 固件已装好,且nvidia-smi能正常认出卡。
步骤 2:获取 cmpunlocker
git clone https://github.com/amoghmunikote/cmpunlocker.git cd cmpunlocker步骤 3:一键安装
默认安装(自动按 PCI ID 区分 8GB / 10GB,多卡、混插也支持):
sudo ./install.sh强制指定内存档位(一般不必,脚本已按设备 ID 分类):
sudo ./install.sh --profile=8gb # 8GB 卡 → 目标 64GB sudo ./install.sh --profile=10gb # 10GB 卡 → 目标 40GB可选参数:
sudo ./install.sh --help # --no-iommu 不改内核 cmdline 的 IOMMU # --no-gen2-service 不装早期 PCIe Gen2 重训服务安装过程会:校验 root → 识别 GPU → 拉源码并打补丁 → 编译并安装nvidia.ko/nvidia-drm.ko等到/lib/modules/$(uname -r)/updates/cmpunlocker/→(默认)配置 Gen2 服务与 IOMMU。日志在项目logs/目录。
步骤 4:冷重启(关键!)
必须是关机断电再开机(cold reboot),不要只reboot了事:
sudo poweroff # 断电几秒后重新上电开机步骤 5:验证是否解锁成功
nvidia-smi预期大致为:
8GB 卡:Memory 约65536 MiB(64GB)
10GB 卡:Memory 约40960 MiB(40GB)
PCIe 速度到Gen2(可用
nvidia-smi -q | grep -i pci等查看)
项目自带验证:
sudo ./verify.sh看内核日志里是否有解锁相关输出(示例):
sudo dmesg | grep -iE 'SEC2_DEBUG|cmpunlocker|PLM|SS0|SS1|PCIe'常见成功痕迹类似:
SEC2_DEBUG: PLMs opening to 0xffffffff SEC2_DEBUG: SS0 = 0xffffffff SEC2_DEBUG: SS1 = 0xffffffff SEC2_DEBUG: PCIe ... speed=2再用 OpenCL / CUDA / 挖矿软件跑一圈基准,对比解锁前后算力与显存带宽——这才是文章里最能吸评论的「前后对比图」位置。
六、解锁后「多出来的」能力一览
能力 | 状态 |
|---|---|
全量 SM 算力(SS0/SS1) | ✓ |
显存几何(8GB→64GB / 10GB→40GB) | ✓ |
PCIe Gen2 | ✓ |
JTAG(Host2Jtag) | ✓ |
重启后仍生效(补丁模块) | ✓ |
七、卸载(还原库存限制)
sudo ./remove.sh # 文档中也可能写作 uninstall,以仓库脚本为准 sudo poweroff # 同样建议冷重启重启后再nvidia-smi,显存应回到约 8GB / 10GB。
八、常见坑(评论区高频)
驱动版本不对
必须是nvidia-open 610.43.0x。专有闭源驱动启动路径不同,同一套补丁不适用。
Secure Boot 开着
补丁模块未签名,加载失败。BIOS / mokutil 关掉。
只 reboot 不冷启动
部分状态依赖完整上电;按文档做断电冷启。
内核升级后模块失效
补丁模块按当前
uname -r编译。换内核后需在新内核头文件下重新sudo ./install.sh。认不出卡
lspci看不到10de:20c2/2082/20b0,或不是 CMP 170HX,脚本会直接退出。IOMMU / 虚拟化环境
默认会改 cmdline;若你有特殊虚拟化需求,用
--no-iommu自行控制。
结语
CMP 170HX 长期被当成「便宜但残血」的矿卡;在驱动层把 SM、HBM、PCIe 限制解开之后,它更接近同芯 GA100 该有的形态。
如果你手里正好有 170HX、系统又是 Linux + nvidia-open 610.43.0x,按上面五步走完,用nvidia-smi和基准跑一遍,前后差距通常一眼就能看出来。