Uni-Dock 实战测评:源码编译、四体系基准与批量吞吐验证

发布时间:2026/10/24 6:33:56
Uni-Dock 实战测评:源码编译、四体系基准与批量吞吐验证

本文收录于专栏gnina系列—— 专栏系统覆盖分子对接引擎选型、GPU 加速虚拟筛选与打分函数评估,点击订阅可跟踪后续更新。

你看过 Uni-Dock 论文里"超千倍加速、100 块 V100 十二小时筛完 3820 万分子"的说法,想知道拿到自己这张消费级 GPU 上到底能兑现多少?
这篇在 12 GB 显存(sm_86)的机器上从源码编译 Uni-Dock v1.2.0,跑四个真实体系的单配体基准(1.7–16.5 秒)和 100 配体批量吞吐(1.04 秒/个),给出对 Vina 1.2.7 CPU 单核 4–7 倍、批量摊销后 11.9 倍的实测加速比——以及论文千倍口径与单机实测之间差距的三个来源。金属酶体系的配体拒收链坑(CA→ZN→MASTER)也一并给修法。
读完你能判断手里的库规模值不值得上 Uni-Dock。同时给出 v1.0 到 v1.2.0 的版本沿革、LGPL 到 Apache 2.0 的许可证切换时间点,以及 conda 与源码两条安装路线的取舍(conda 解算超时的实测记录也一并奉上)。

关键字:Uni-Dock、分子对接、GPU加速、虚拟筛选、批量对接、CUDA编译、AutoDock Vina、分层筛选

Uni-Dock 实战

它是什么

Vina 1.2 的 CUDA 重写

深势科技出品

怎么装

conda 与源码两条路

三分钟编译

跑得如何

四体系单配体

百配体批量摊销

口径差在哪

千倍是集群批量

单任务只有几倍

坑在哪

金属原子拒收

gpu_batch 语法

目录:§0. 相关教程与核心文献 | §1. 软件介绍与版本沿革 | §2. 原理:蒙特卡洛线程化与动态批量 | §3. 特点与边界 | §4. 文献测评口径 | §5. 本地安装实测 | §6. 基准与加速比 | §7. 结论与选型建议

§0. 相关教程与核心文献

资源链接与本文关系
Uni-Dock 官方仓库—源码、CHANGELOG 与安装文档
Yu 等, JCTC 2023, 10.1021/acs.jctc.2c01145—方法论文(千倍加速与 3820 万分子实测)
conda-forge unidock—官方推荐的预编译安装路径

§1. 软件介绍与版本沿革

Uni-Dock 由深势科技(DP Technology)开发、在 DeepModeling 社区孵化,是对 AutoDock Vina 1.2 计算内核的 CUDA 重写:保留 vina/vinardo/ad4 三种打分函数与 Vina 风格的盒子参数,把蒙特卡洛构象搜索搬进 GPU 线程束。版本沿革:v1.0(2023 年,随 JCTC 论文发布)→ v1.1(2024 年 2 月,加入单配体模式等,LGPL 协议)→ 2025 年 3 月许可证统一为 Apache 2.0 →v1.2.0(2026 年 6 月,本文实测版本);另有一个定位增强版的新仓库 Uni-Dock2(Apache 2.0)。对商用集成来说,现在的 Apache 2.0 与 Vina-GPU 系一致,比早期 LGPL 宽松。

§2. 原理:蒙特卡洛线程化与动态批量

Vina 的搜索是"多条蒙特卡洛链、每条链串行迭代",天然适合把链间并行交给 GPU:每条链一个线程,同时跑成千上万条链,再砍短每条链的搜索深度——总评估数不变,墙钟时间被压到单链水平。第二个关键是动态批量显存管理:一批配体同时驻留显存,按显存占用预测自动调整批量,让 GPU 利用率始终打满。这两点合起来决定了它的性能形态——单配体任务吃不满卡,批量任务才能把优势兑现(§6 的实测会反复印证这一点)。

§3. 特点与边界

特点:--gpu_batch批量模式(配体列表一次提交);--search_mode三档预设(fast/balance/detail 对应分层筛选的初筛/复筛/精筛);支持 SDF 直读与配对批量(paired_batch);输出与 Vina 生态同口径(打分、mode 表格式一致,本文 §6 与 Vina CPU 的能量逐体系对齐印证了这点)。

边界:只支持 Linux + CUDA(README 明说 ROCm 支持已停止维护);单口袋少于 10 个配体时开销占比大、反而慢,官方给出的最优场景是"单口袋上千配体";PDBQT 解析器对金属原子类型(CA 钙、ZN 锌)与非标准记录严格拒收——见 §5 坑 4。

§4. 文献测评口径

JCTC 2023 论文口径:对比 AutoDock Vina 单核 CPU超过 1000 倍加速且精度可比;head-to-head 实验中比 AutoDock-GPU 与 Vina-GPU 快 10 倍以上;单分子耗时在 V100 上 vina/vinardo 打分 0.1 秒、ad4 打分 0.5 秒;规模化演示为 3820 万分子(Enamine Diverse REAL 对接 KRAS G12D)在 100 块 V100 上不到 12 小时。官方 README 现行版本已更新为"V100 上超过 2000 倍"。
注意三个口径前提:数据中心卡、批量摊销、大 exhaustiveness——这三条在消费级 GPU 单任务场景都不成立,这正是 §6 实测只有个位数倍数的原因。

§5. 本地安装实测

实测环境(specs):

项值
操作系统Ubuntu 22.04 LTS
GPU消费级 GPU,12 GB 显存,sm_86 架构
驱动 / CUDA Toolkit580.178.04 / 12.4(装在 /usr/local/cuda,nvcc 需在 PATH)
编译器与构建gcc/g++ 11.4 + cmake ≥ 3.16
C++ 库系统 boost ≥ 1.72 dev 套件(Ubuntu 22.04 的 1.74 即满足)

第 0 步:系统依赖(一次装齐,全部来自 Ubuntu 官方仓库):

sudoapt-getinstall-ybuild-essential cmake\libboost-system-dev libboost-thread-dev libboost-serialization-dev\libboost-filesystem-dev libboost-program-options-dev libboost-timer-dev

第 1 步:获取源码(两条路线二选一):

# 路线一(官方推荐):conda 预编译包,免编译conda create-nunidock_env unidock-cconda-forge conda activate unidock_env&&unidock--help# 路线二(本文实测):源码编译,全程约 5 分钟gitclone https://github.com/dptech-corp/Uni-Dock.gitcdUni-Dock/unidock

第 2 步:编译(sm_86 卡用 86,其他卡换算力号):

exportPATH=/usr/local/cuda/bin:$PATHcmake-Bbuild-DCMAKE_CUDA_ARCHITECTURES=86-DCMAKE_BUILD_TYPE=Release cmake--buildbuild-j8

第 3 步:冒烟验证:

./build/unidock--help# 首行应显示 "Uni-Dock v1.2.0" 与参数列表./build/unidock--receptor<受体.pdbqt>--ligand<配体.pdbqt>\--center_x0--center_y0--center_z0--size_x20--size_y20--size_z20\--scoringvina--exhaustiveness8--num_modes9--dir<已存在的输出目录># 预期: 每配体秒级完成, 输出目录出现 *_out.pdbqt

坑 1:conda 路线可能超时。本机conda create解算加下载超过 8 分钟未完成,遂改走源码;源码路线依赖只有 CUDA、CMake、Boost(≥1.72)与 g++,Ubuntu 22.04 全部现成。

坑 2:--job_name不是参数。部分教程把它写进命令行,v1.2.0 直接unrecognised option退出——那是上层工具 unidock_tools 的概念。

坑 3:--dir目录必须先建。输出目录不存在时报Directory does not exist,进程 0.01 秒静默退出,容易被脚本误判为"跑完"。

坑 4(金属酶必踩):配体解析链式拒收。热解蛋白锌酶体系 3tmn 先后报Atom type CA is not a valid AutoDock type(钙)、ZN(锌)、Unknown or inappropriate tag(MASTER 记录)——修法是受体清洗后另存:

awk'$NF!="CA" && $NF!="ZN" && $1!="MASTER" && $1!="END"'rec.pdbqt>rec_clean.pdbqt

要注意的是 vina 打分本来就不为金属参数化,剥离是基准测试的合理操作,但真实金属酶项目应改用带金属处理的引擎并在报告中注明。

坑 5:--gpu_batch要文件列表不是目录。传目录会静默秒退并抛出"构象不在搜索空间内"的误导性警告;正确写法是--gpu_batch dir/*.pdbqt。

§6. 基准与加速比

四个体系(同机、scoring=vina、exhaustiveness=8、num_modes=9;3tmn 用清洗受体),wall 时间含格点计算:

体系Uni-DockVina 1.2.7 单核Vina 1.2.7 十二核加速比(对单核)mode1 (kcal/mol)
1stp2.44 s12.35 s2.40 s5.1×-7.35
3ce37.10 s29.86 s7.45 s4.2×-11.9
3tmn1.71 s8.06 s1.62 s4.7×-8.30
7cpa16.47 s110.87 s20.21 s6.7×-8.09

单配体场景的结论直白:对单核 4–7 倍,对十二核基本打平——卡没有喂饱。批量场景立刻改观:100 个 1stp 配体一次提交(--gpu_batch),总耗时 103.7 秒、1.04 秒/配体(内核时间 102.9 秒),对 Vina 单核的 12.35 秒/配体即11.9 倍——批量摊销把格点计算与启动开销一次性摊掉。与论文千倍的差距可以拆成三块:V100 对消费级卡的算力差、论文基准的 exhaustiveness 与批量规模更大、以及单任务场景 GPU 根本吃不饱。另外,Uni-Dock 与 Vina CPU 的 mode1 能量逐体系一致(-7.35 对 -7.38、-11.9 对 -11.42),移植正确性的直接证据。

§7. 结论与选型建议

Uni-Dock 的正确打开方式是"单口袋大批量":百万级以上库的分层筛选(fast 初筛全库、balance 复筛前 10%、detail 精筛再前 10%),批量越大摊销越好,许可证 Apache 2.0 对商业友好。反过来,十几个配体的零星任务、或者需要金属/特殊原子类型的体系,它在消费级卡上并不占优——后者建议 AutoDock-GPU(配体容忍度高)或专门的金属处理流程。
下一篇进入 Vina 打分家族的 OpenCL 主线:Vina-GPU 系列的版本谱系与移植实录。


系列导航:专栏全集gnina系列—— 上一篇:AutoDock-GPU 实战测评;下一篇:Vina-GPU 系列实战测评。

更多专栏:

我的专栏

蛋白 / 抗体 / 多肽 / 核酸分子模拟 / 动力学 / 对接药物 / 设计 / 案例AI / Agent / 大模型
开源蛋白结构预测分子模拟基础小分子药物设计案例AI Agent系列
开源蛋白生成方法实践分子动力学模拟-Amber蛋白药物设计案例化学大模型
开源多肽设计模型分子动力学模拟-Gromacs多肽药物设计案例《AI Agent原理与实战》
开源多肽性质预测分子动力学模拟-OpenMM开源小分子生成设计CADD中的机器学习模型
DNA/RNA药物设计結合自由能高效计算配置《MCP 入门实战》
siRNA药物设计模型UCSF DOCK系列我胡师兄说药《AI入门实战2026》
ASO药物设计模型rDock系列 LeDock系列 gnina系列《经典机器学习实战》