gpu-test-0.1.1 is not a library.
面向产线测试工位的显卡检测插件:自动识别显卡是否被系统识别、驱动是否正常加载、nvidia-smi 是否稳定,
对不良显卡(识别异常 / 驱动未装 / 概率性丢失)自动拦截;无独显机型不误杀。
✨ Features
- 🚫 自动拦截不良显卡:枚举 → 驱动 → 功能自检(利用率 / 功耗 / 温度 / 时钟)→ 稳定性采样,任一异常即 FAIL
- 🔁 首件基准一键同步:
--info输出型号 / 驱动 / 显存 / VBIOS,量产逐台比对,型号不一致即拦截 - 🌐 全平台兼容:Windows 10/11 + Ubuntu 18.04+/银河麒麟 V10/统信 UOS V20(x86_64)
- 🖥️ 双运行模式:GUI 人工确认 +
--no-gui命令行自动化,均支持接入 e-autotest - 📊 e-log 标准日志:文件 + stdout 双输出,结尾
R<{json}>R平台契约,退出码 0/非 0 判定 - 🛡️ 不误杀核显机型:无 NVIDIA 独显时默认 PASS,仅记录,不强制拦截
🚀 Quick Start
安装 / 构建
# 方式一:直接安装(x86_64)
# 方式二:从源码构建(统一入口 justfile,无独立脚本)
示例 1:一键同步型号标识(首件基准 / 量产比对)
真实输出:
2026-08-12T04:46:42.594026Z INFO gpu-test: 运行开始: sn= station= mode= samples=3
2026-08-12T04:46:42.944743Z INFO gpu-test: 型号标识: GPU 0: NVIDIA GeForce RTX 3060 [10de:2487] 驱动:610.62 显存:12288 MiB VBIOS:94.04.71.00.c2 WMI驱动:32.0.16.1062
2026-08-12T04:46:42.944766Z INFO gpu-test: 型号标识: GPU 1: OrayIddDriver Device 驱动:17.50.19.949
R<{"content":"GPU 0: NVIDIA GeForce RTX 3060 [10de:2487] 驱动:610.62 显存:12288 MiB VBIOS:94.04.71.00.c2 WMI驱动:32.0.16.1062\nGPU 1: OrayIddDriver Device 驱动:17.50.19.949","opts":{"api":"None","args":[],"command":[],"filter":[],"full":false,"init":false,"task":""},"status":true}>R
示例 2:自动化功能测试
真实输出:
2026-08-12T04:47:00.339075Z INFO gpu-test: 运行开始: sn=TEST001 station=FCT1 mode=AUTO samples=3
2026-08-12T04:47:00.612700Z INFO gpu-test: 硬件枚举: NVIDIA GeForce RTX 3060 - 状态:OK 驱动:32.0.16.1062
2026-08-12T04:47:00.660348Z INFO gpu-test: 显卡功能: nvidia-smi: GPU 0: NVIDIA GeForce RTX 3060 (UUID: GPU-94c70323-272d-d7f7-902a-cbf18c996507)
2026-08-12T04:47:00.723550Z INFO gpu-test: 功能自检: NVIDIA GeForce RTX 3060, 3 %, 47.57 W, 45, 1777 MHz, 7501 MHz
2026-08-12T04:47:00.770132Z INFO gpu-test: 稳定性采样: 采样 1/3 正常
2026-08-12T04:47:01.328519Z INFO gpu-test: 稳定性采样: 采样 2/3 正常
2026-08-12T04:47:01.887764Z INFO gpu-test: 稳定性采样: 采样 3/3 正常
2026-08-12T04:47:01.887793Z INFO gpu-test: status=PASS sn=TEST001 station=FCT1 mode=AUTO samples=3
R<{"content":"检测到显卡设备 2 个:\n NVIDIA GeForce RTX 3060 - 状态:OK 驱动:32.0.16.1062\n OrayIddDriver Device - 状态:OK 驱动:17.50.19.949\n检测到 NVIDIA 显卡 1 个,进入驱动与稳定性检查\n nvidia-smi: GPU 0: NVIDIA GeForce RTX 3060 (UUID: GPU-94c70323-272d-d7f7-902a-cbf18c996507)\n 功能自检: NVIDIA GeForce RTX 3060, 3 %, 47.57 W, 45, 1777 MHz, 7501 MHz\n 采样 1/3 正常\n 采样 2/3 正常\n 采样 3/3 正常\nPASS: 显卡硬件识别正常,驱动已加载,nvidia-smi 采样 3 次全部正常","opts":{"api":"None","args":[],"command":[],"filter":[],"full":false,"init":false,"task":""},"status":true}>R
📷 界面预览

GUI 模式:检测过程实时展示(硬件枚举 → 驱动检查 → 功能自检 → 稳定性采样),完成后点「确认」或 --auto 倒计时自动关闭;无显示器工位用 --no-gui。
🗂️ 功能与平台支持
| 模块 | Windows 10/11 | Ubuntu 18.04+ | 麒麟 V10 / 统信 UOS V20 | 状态 |
|---|---|---|---|---|
| 硬件枚举(WMI / lspci) | ✅ | ✅ | ✅ | 已验证 |
| NVIDIA 深度检测(驱动 / smi / 采样) | ✅ | ✅ | ✅ | Windows + Ubuntu 真机已验证 |
| GUI 人工确认 | ✅ | ✅ | ✅ | 已验证 |
--no-gui 自动化 |
✅ | ✅ | ✅ | 已验证 |
| 核显机型(无独显) | ✅ 不误杀 | ✅ 不误杀 | ✅ 不误杀 | 已验证 |
| AMD / Intel 独显深度检测 | 🚧 规划中 | 🚧 规划中 | 🚧 规划中 | 枚举兼容,深度检测待扩展 |
| ARM64 架构 | — | 🚧 规划中 | 🚧 规划中 | 客户机为飞腾 / 鲲鹏时构建 |
⚙️ 命令行参数
| 参数 | 说明 | 默认 |
|---|---|---|
--sn |
序列号(平台自动传入,手动可省略,仅写日志) | 空 |
--station |
工站(平台自动传入,手动可省略,仅写日志) | 空 |
--mode |
模式(平台自动传入,手动可省略,仅写日志) | 空 |
--samples |
nvidia-smi 稳定性采样次数,越多拦截越严、耗时越长 | 3 |
--info |
只输出一键同步标识(型号 / 驱动 / 显存 / VBIOS),供平台 filter 比对 | 关 |
--no-gui |
不弹窗,命令行直接输出(自动化 / 调试) | 关 |
--auto |
GUI 检测完成后倒计时自动关闭 | 关 |
--close SECS |
自动关闭倒计时秒数 | 5 |
--res PATH |
额外把 R<json>R 写入文件(平台 res_url 方式) |
空 |
🔌 接入 e-autotest
-
放置插件:把
gpu-test(Linux)/gpu-test.exe(Windows)放入plugins/gpu-test/,Linux 记得chmod +x -
注册 APP(extend_app 配置):建议注册两个独立 APP,职责分离、互不干扰
tag args 用途 GPU_TEST--sn --station --mode --samples 3 --no-gui功能检测(自动化跑批) GPU_TEST_INFO--info型号标识(首件 / 量产比对) fileinfo 要点:
exe_type=WindowsExe/LinuxExe、architecture=X86_64、is_check=true(解析R<...>R)、timeout=30s -
流程挂载:把 APP 挂到显卡检测工站,
on_fail设为拦截(重测 / 上报 MES NG) -
首件一键同步:首件跑
gpu-test --info,把返回标识填入平台“校验筛选”(如*10de:2487*或型号名),量产每台自动比对,不一致即 NG 拦截 -
验证:
输出契约(e-autotest 插件标准)
- 单行
R<{json}>R,JSON 为{"content": "...", "status": true|false, "opts": {...}};status与退出码一致(0=PASS,非 0=FAIL) - stdout 同步输出 e-log 详细日志(同样式写入
logs/gpu-test.log),末尾收尾R<...>R;UTF-8 编码并强制 flush,平台取最后一个R<...>R解析
💡 Why Choose
- 痛点:单客户一年反馈 17 块不良显卡(开箱 + 终端),不良 DPPM 高企,靠人工目检漏检严重 → 自动拦截,每台量产机跑一遍功能测试,异常即 NG
- 痛点:概率性丢失(nvidia-smi 偶发失败)难以复现 → 连续采样 N 次(
--samples,默认 3),任一次失败即拦截 - 痛点:首件 / 量产信息比对靠人工抄录 →
--info一键同步,平台 filter 按型号 / PCI ID 逐台校验,不一致即拦截 - 痛点:旧测试脚本只拦截核显,误杀正常机型 → 无 NVIDIA 独显默认 PASS,不阻断产线
- 兼容现有生态:日志框架统一 e-log(与 e-autotest / etest 一致),输出契约
R<{json}>R+ 退出码,平台无需改造即可接入
🛠 Development / Contributing
- 构建统一走
justfile(Windows 需 VS/MSVC 工具链;Linux 交叉编译需 cargo-zigbuild + zig,glibc 2.27 基线) - 架构:
src/detect.rs检测核心(Windows WMI / Linux lspci 枚举 + nvidia-smi 功能检测)、src/gui.rsegui 界面、src/logger.rse-log 日志、src/main.rsCLI/GUI 入口 - 提交 PR 前:代码符合规范、核心逻辑有单元测试、文档与代码同步更新
- 欢迎贡献:修复、新增显卡厂商支持(AMD / Intel 深度检测)、新增检测项