LKlight(参考引擎,全原子逐对,v1.2.0)· LKlight-grid(CPU 网格加速,v1.2.0)· GPU 版本(LKlight-GPU,CUDA / Metal 双后端,v1.2.2)
LKlight 是 Python LightDock(GSO 群智能对接)的 Rust 高性能实现,以“同一内核、三种执行架构”交付:LKlight(参考引擎,全原子逐对,v1.2.0)、LKlight-grid(CPU 网格,四平台换机即用)、GPU 版本(LKlight-GPU)——同一 GPU 引擎提供 NVIDIA CUDA 与 Apple Silicon Metal 两个后端(v1.2.2),实现级把“GPU 加速”覆盖到 Windows / Linux / macOS 全平台。三档共享同一命令行、数据格式与物理打分模型。基准要点(全部真机实测,见第 8 节数据来源):
同一套 GSO 与打分模型的三档产物;切换只影响“用哪块硬件、多快算完”,不影响“算什么、多准”。
| 引擎 | 打分架构 | 平台与二进制 | 定位 / 说明 |
|---|---|---|---|
| LKlight v1.2.0 · 参考引擎 |
全原子逐对遍历(30 Å 截断) | macOS arm64 / Win x64 / Linux x64,单文件零依赖 | gold reference:论文对照、结果校验、小体系可复现 |
| LKlight-grid v1.2.0 |
近距 ≤10 Å cell-list 精确 + 10–30 Å 远距静电势场查表(v1.2.0 起 0.5 Å 场,默认) | LKlight-v1.2.0-mac-arm64 ≈17.7 MB;LKlight-win64.exe;LKlight-linux-x64(static-pie 全静态) |
日常生产默认:评分级约 10–19×,全原子函数最高 48×;四平台换机即用 |
| LKlight-GPU GPU 版本 · v1.2.2 |
整步全部构象合并一次 GPU kernel(近距+远距+device 端变换);CUDA(NVIDIA)与 Metal(Apple Silicon)同源双后端 | CUDA:LKlight-win64-cuda.exe / LKlight-linux-cuda(v1.2.0,仅需驱动);Metal:LKlight-mac-arm64-metal ≈17.7 MB(仅系统框架) |
大负载(≥数百构象/步×长步数)在 grid 之上再快约 7.6–31×;无 GPU 自动回退 CPU grid,结果等价 |
GPU 版为 Apple Silicon 提供 Metal 后端(v1.2.1 起):macOS 无 NVIDIA,但仍可借助集成 GPU 加速(同源 kernel 逐行移植,Metal best 与 CUDA best 逐位一致);CUDA 后端面向 Windows / Linux NVIDIA 主机。任一主机无可用 GPU 时自动回退 CPU grid 路径,结果不变。
加速只改写“求和顺序与执行硬件”,原子对覆盖与物理模型不变。
gridDim.y = 构象数;原子刚体变换在 kernel 内以 f64 完成(与宿主逐位一致)后转 f32。MTLBuffer 零拷贝上传,GPU 只做 f32 近/远场累加(与 CUDA 同 f32 预算);MSL 逐字移植 CUDA 数值,故 Metal best 与 CUDA best 逐位一致。以 LKlight 为真值的实测一致性(v1.1.0 采集口径,v1.2.x 同源保持)(1AZP 蛋白-DNA、用户 RNA 大体系)。
| 验证项 | 结果 | 说明 |
|---|---|---|
| ★ 远场插值误差逐函数审计(v1.2.0,0.5 Å 场,1AZP 31 decoy) | 9/12 逐字节一致;dna / pydock / cpydock 共享有界 max 6.94(中位 2.50)能量单位 | v1.1.0(1.0 Å 场)同口径 max 9.6 → 0.5 Å 收紧约 1.4× |
| ★ 三平台最优能量逐位一致(1AZP dna,1,000×1,000 同批) | Windows RTX 5090 = Linux RTX 3080 Ti = macOS M4 | GPU −7254.9516108;CPU grid −7254.95220161(差 <1e-5 f32 舍入) |
| ★ Metal vs CUDA 最优能量(v1.2.1) | 逐位一致 | MSL kernel 逐字移植 CUDA 数值,GPU 结果与厂商无关 |
| ★ 缓存修复不改变打分(v1.2.0) | 最优能量与修复前逐位相同 | 267.6 s → 4.05 s 为纯实现级提速,零打分变化 |
| 12 随机位姿能量误差(含旋转,位移 1–38 Å) | 平均 0.07% / 最大 0.33% | grid vs LKlight(v1.1.0 口径,v1.2.x 同源保持) |
| 打分排序一致 | Spearman = 1.0(12/12 同序) | 不翻转任何“谁更好” |
| 同 seed 收敛 top-5 解 | ±2 Å 与 LKlight 100% 重合 | n=20 与 n=150 两档规模 |
| GPU vs grid 打分 | <1e-5(f32 舍入) | 同分解不同硬件 |
| 网格/GPU 二进制输出(蛋白,12 函数) | 11/12 逐字节一致 | dna 走 f32 批量路径,其余同代码同值 |
| 能量标尺系统差 | ≤0.5%(结合位姿)· vdw = 0 | 仅远距场插值,不影响排序 |
4.0 为 v1.2.0 / v1.2.1 最新同场验收(2026-09-06 采集);4.1–4.3 为 v1.1.0 era 在 Linux RTX 3080 Ti 上采集的规模扫描(1.0 Å grid 口径;v1.2.x 同源结构保持——远场 0.5 Å 精度更高、GPU 批路径经缓存修复后只快不变、最优能量不变)。
| 主机 | LKlight | LKlight-grid | GPU 版(后端) | GPU/grid | GPU/LKlight |
|---|---|---|---|---|---|
| Windows + RTX 5090(32 GB,Blackwell sm_120) | 128.41 | 37.01 | 4.05(CUDA) | 9.1× | 31.7× |
| macOS Mac mini M4(10 核,Apple Silicon) | 219.29 | 47.10 | 6.22(Metal,v1.2.1) | 7.6× | 35.3× |
GPU 4.05 s 为缓存修复后实测(早期内部构建同批 267.6 s;修复不改变任何打分,best 逐位不变,见 §7)。两主机 CPU 行均为 v1.2.0 同参数、同 PDB、同 seed;GPU/CPU-grid/LKlight 三档 best 与 Linux RTX 3080 Ti 逐位一致(表 2)。Mac M4 无 NVIDIA 设备即达 7.6× grid——Metal 后端把 GPU 加速带到 Apple 平台。GPU 单步(1000 构象批打分)≈4–6 ms;跨平台同批数据与驱动器见第 8 节归档。
| 平台 / 场景 | LKlight | LKlight-grid | GPU 版 |
|---|---|---|---|
| macOS · 6×20×100 | 5.01 | 2.56 | — |
| Linux · 单 swarm 1×20×100 | 1.18 | 1.17 | 1.28(ACTIVE) |
| Linux · 6×20×100 | 7.16 | 7.35 | 7.41 |
| Windows · 6×20×100(RTX 2080) | — | 6.14 | 7.25(ACTIVE,每步 20 构象×506 原子) |
蛋白级小体系三引擎≈打平(每 swarm 固定框架开销 ~1.2 s 主导);grid/GPU 收益需由构象数×步数放大(见 4.0 与 4.2–4.3)。
| 评分 | LKlight | LKlight-grid | GPU 版 | 加速 |
|---|---|---|---|---|
dna | 79.08 | 8.51 | 7.87(ACTIVE) | grid 9.3× · GPU 10.0× vs LKlight |
| 构象数 N | LKlight | LKlight-grid | GPU 版 | GPU/grid | GPU/LKlight |
|---|---|---|---|---|---|
| 20 | 40.7 | 7.73 | 7.57 | 1.02× | 5.4× |
| 100 | 126.6 | 9.60 | 7.81 | 1.23× | 16.2× |
| 500 | ~537(外推) | 16.74 | 7.89 | 2.12× | ~68× |
| 1000 | ~1055(外推) | 24.72 | 8.35 | 2.96× | ~126× |
| 2000 | ~2090(外推) | 41.84 | 9.12 | 4.59× | ~230× |
| 5000 / 10000 | —(不现实) | ~93(外推) | 11.49 / 11.38(20 步) | ~8× | — |
LKlight 线性增长(每增 1 构象/50 步约 +1.04 s);grid 线性但斜率低一个量级;GPU 在 N=20→2000 仅 7.6→9.1 s 近乎水平——GPU 硬上限实测 N=10,000 可跑,常规安全线取 5,000。
对照 Python LightDock(参考实现):同机单 swarm 100 步 × 200 构象实测 dfire 107.5×、vdw 18.8×、cpydock 14.2×、dna+ANM 13.0×(开发期同协议);用户 RNA 任务 Python >2 h 超时,LKlight-grid ≈22 s 端到端。
RNA 大体系单 swarm 20×100 步(Linux 实测,v1.1.0 era 采集;加速前=该函数在 LKlight 全原子语义下的耗时)。
| 函数 | 加速前 | LKlight-grid | 加速 | 说明 |
|---|---|---|---|---|
vdw | 50.1 s | 1.04 s | ≈48× | 与 LKlight 逐位一致 |
pydock | 114.1 s | 7.61 s | ≈15× | 静电+LJ 网格化 |
cpydock | 114.1 s | 9.72 s | ≈12× | 脱溶精确(6.4 Å 窗口在 cell 内) |
dna | ≈19×(Mac run 级口径) | 8.9 s | — | AMBER94 全原子主路径;GPU 批量(CUDA+Metal)自 dna 起始,现与 vdw/pydock/cpydock 共享按族参数化 kernel |
| dfire / dfire2 / mj3h / pisa / sipper / tobi / sd / ddna | 任何规模 ≤4.8 s(多为 ≤0.2 s) | — | 查表/统计势/自带 cell,天然无瓶颈 | |
GPU 版:批量加速覆盖全部四个全原子族——dna/vdw/pydock/cpydock,CUDA 与 Metal 双后端同构(按族参数化 batch kernel,cpydock 另含两阶段去溶剂化)。1,000×1,000 实测:M4 上 6.99 s / 5.42 s / 7.02 s / 26.9 s(对 CPU grid 6.7× / 6.8× / 6.1× / 7.5×),3080Ti CUDA 对 cpydock 27.8×;各族 best 能量差在 f32 预算内(vdw ≈2.5e-4、pydock ≈3.5e-4、cpydock ≈1.5e-4 绝对值,dna 逐位一致)。其余 8 个查表/统计势函数(dfire … ddna)exact 即 ≤4.8 s(多为 ≤0.2 s),无瓶颈,在 GPU 二进制内走与 LKlight-grid 相同的 CPU 网格路径(输出逐字节一致)。注意:Linux 静态版(musl libm)对 pow 密集函数较慢,sd 实测 11.5 s vs glibc 版 1.28 s(结果一致)——sd 重度场景请用 glibc 构建。
| 场景 | 推荐 | 说明 |
|---|---|---|
| 结果校验 / 论文对照 / 数值真值 | LKlight | 小体系或单点抽查,绝对可复现 |
| 日常对接 · 无 GPU · 流程验证(G≤200) | LKlight-grid | 四平台零依赖;快速测试档 15×150×50 ≈2–3 min |
| Apple Silicon Mac 大规模(G≥300、步长≥100) | GPU 版(Metal 后端) | v1.2.1:1,000×1,000 同批 6.22 s(7.6× grid),无需 NVIDIA 设备 |
| 大规模筛选 / 高精度对接(NVIDIA 服务器,G≥300、步长≥100) | GPU 版(CUDA 后端) | 1,000×1,000 同批 4.05 s(31.7× LKlight / 9.1× grid,RTX 5090);高精度档 75×300×150:LKlight-grid 23.8 min / GPU 10 min(LKlight >15 h 不可行) |
| 多 swarm 吞吐 | 任一 + tools/run_parallel.py | swarm 相互独立 → 多进程并行,实测 P4 ≈ 线性 4× |
sd 等 pow 密集函数(结果一致);dna/vdw/cpydock 不受实质影响。LKlight-mac-arm64-metal 与 LKlight-mac-arm64-cpu;Windows/Linux CUDA 资产见 v1.2.0 Release)LKlight论文/functest/ht1000_regression_summary.csv(5090 / M4 / 洁净复跑四档矩阵)、ht1000_summary_5090.csv、ht1000_mac/ht1000_summary_mac.csv、ht1000_metal/(Metal 引擎与运行日志)、TEST_REPORT_20260906.md(全面回归报告:便携性 / 逐位一致 / 回退验证)functest/win_drive.ps1(三档同参驱动器)· functest/ht1000_mac/mac_drive_ht1000.sh(Mac 版)· functest/make_fig7.py(同场基准图)LKlight-GPU/tests/acceptance/(macos / linux / windows_acceptance.txt、protein_e2e_1azp、three_engine_horizontal、python_lightdock_note)GPU_BENCH_20260902.md(GPU 批量与缓存修复 267.6→4.05 s)· PERF_COMPARE_20260902.md(精度/场景/评分函数矩阵)· RELEASE_NOTES_v1.2.1.md(Metal 后端与实测)numeric_validation_v2.py);v1.2.0 0.5 Å 逐函数审计见论文 §3.7(functest/equiv_full_summary.csv)