LK-UniDock:跨平台 GPU 分子对接发行
基于 AutoDock-Vina 生态 · 打包维护 Uni-Dock(经典全局对接 + GPU 批量)与 UniDock-Pro(+ 相似性引导 / 混合模式)
上游版本:Uni-Dock v1.1.3 · UniDock-Pro v0.0.1
许可:Apache-2.0
构建:CUDA 12.8 · sm_60–sm_120
整理日期:2026-09-03
摘要
LK-UniDock 为 Uni-Dock / UniDock-Pro 提供开箱即用的跨平台发行:macOS arm64(CPU)、Linux x86-64(GPU)、Windows x64(GPU)三平台预编译;Windows GPU 版通过 BUILD_PORTABLE=ON + FETCH_BOOST=ON 全静态打包,运行时仅依赖 1 个 DLL(vcomp140.dll),复制即用、无需 WSL2 或 CUDA Toolkit。以 CUDA 12.8 构建,一份二进制覆盖 sm_60(GTX 10 系)到 sm_120(RTX 50 / Blackwell) 全部 NVIDIA 架构。所有构建补丁(MSVC+CUDA12 guard、CMake 跨平台、CI 等)以 Apache-2.0 开源,欢迎回 PR 上游。
1两款引擎
表 1 Uni-Dock 与 UniDock-Pro 能力对照
| 能力 | Uni-Dock | UniDock-Pro |
| 定位 | 经典全局对接 + GPU 批量虚拟筛选 | + 相似性引导与混合对接 |
| macOS(CPU,arm64) | ✓ 全局对接 | ◐ Score / Local 模式 |
| Linux GPU 虚拟筛选 | ✓ | ✓ |
| Windows GPU 虚拟筛选(LK-UniDock build) | ✓ | ✓ |
| 相似性引导对接(Similarity-guided) | — | ✓ |
| 混合对接模式(Hybrid docking) | — | ✓ |
| 详细能量分解输出 | — | ✓ |
| 配体格式 | PDBQT / SDF | PDBQT / SDF |
2为什么需要跨平台发行
- 大规模筛选是 GPU 刚需:百万级配体虚拟筛选在 CPU 上需数天,Uni-Dock GPU 单卡压缩到数小时;而 GPU 二进制的跨平台分发长期是痛点。
- Windows GPU 预编译缺失:原项目(dptech-corp/Uni-Dock、NiBoyang/UniDock-Pro)未提供 Windows GPU 二进制,用户通常依赖 WSL2(部分 GPU 有 10–15% 性能损耗,且需配置 CUDA-WSL 驱动栈)或自行源码构建。
- 动态依赖运维成本高:Windows 原生构建默认依赖 10+ 个动态库(CUDA Runtime、Boost、VC++ Redist 等);静态打包显著降低部署与换机成本。
3发行价值
- 补齐 Windows GPU 发行:首次系统性提供预编译 Windows GPU 二进制,原生 Windows 工作站 + RTX + 复制即用,不再依赖 WSL2。
- 构建补丁回馈社区:MSVC+CUDA 12 的
__CUDACC__ guard、CMake 跨平台选项、macOS OpenMP 静态链接、UniDock-Pro LICENSE 与 CI 补全均开源,欢迎 PR 回原项目。
- RTX 10 → RTX 50 全覆盖:CUDA 12.8 支持 sm_60–sm_120,一份二进制覆盖 GTX 1060 到 RTX 5090,适配混合多代显卡的实验室环境。
4预编译发行 vs 源码自编译 / WSL2
表 2 三种使用方式对比(原项目本身质量优秀,LK-UniDock 聚焦部署门槛)
| 能力维度 | LK-UniDock 预编译 | 原项目源码自编译 / WSL2 |
| Windows GPU 可用性 | ✓ 预编译 exe | 自编译:需适配 MSVC + CUDA 12;WSL2:需安装 WSL2 + CUDA-WSL |
| 部署时间 | < 1 分钟(解压) | 数小时 / 30 分钟~数小时 |
| 依赖安装 | 零(静态打包) | CUDA+Boost+MSVC 全套 / WSL2+Linux 工具链 |
| 运行时 DLL 数 | 1(vcomp140.dll) | 10+ / Linux 动态库 |
| GPU 性能 | 原生 100% | 原生 100% / WSL2 常见 85–90% |
| Blackwell(RTX 50) | ✓ sm_100/120 | 需自配 CUDA 12.8+/WSL 驱动 |
| 跨机器可移植 | ✓ 复制即用 | 需重复构建或配好依赖 |
| UniDock-Pro 发行 | ✓ 同步补齐 LICENSE+CI | 需自行适配 |
| 许可证合规 | Apache 2.0 明确 | 与原项目一致 |
| macOS Apple Silicon | ✓ CPU 版预编译 | 自编译需 brew+libomp / WSL2 不支持 |
5三平台二进制与 Windows 静态打包
从 Releases 下载对应平台包解压即用:macOS arm64 为 CPU 版;Linux 与 Windows 提供 GPU 加速版。Windows GPU 版将 CUDA Runtime、Boost、MSVC CRT 全部静态嵌入,运行时仅需 1 个 vcomp140.dll(随包附带)。
表 3 Windows GPU build 与原项目 GitHub release 对比
| 组件 | LK-UniDock build | 原项目 release |
| Windows GPU 二进制 | ✓ 提供 | 尚未提供 |
| CUDA Runtime | 静态嵌入(无需安装) | 动态 DLL(需 CUDA Toolkit) |
| Boost | 静态嵌入 FETCH_BOOST=ON | 动态 conda DLL |
| MSVC CRT | 静态嵌入 BUILD_PORTABLE=ON | 需 VC++ Redist |
| 运行时 DLL 依赖 | 仅 vcomp140.dll(bundled) | 10+ 个,需逐一配置 |
| CUDA 架构 | sm_60 → sm_120(GTX 10 → RTX 50) | 取决于 CI 配置 |
| 可移植性 | ✓ 复制 exe+dll 任意机器运行 | 需同步部署运行时环境 |
6GPU 架构覆盖
Windows / Linux GPU 构建覆盖 sm_60–sm_120,CUDA 12.8 带来 Blackwell(RTX 50)支持。
表 4 架构支持矩阵
| 架构 | 代表 GPU | 支持 |
| sm_60 / sm_61 | GTX 1060 / GTX 1080 Ti(Pascal) | ✓ |
| sm_70 | Tesla V100 / Titan V(Volta) | ✓ |
| sm_75 | RTX 20 系列 / T4(Turing) | ✓ |
| sm_80 / sm_86 | RTX 30 系列 / A100(Ampere) | ✓ |
| sm_89 | RTX 40 系列 / L40(Ada Lovelace) | ✓ |
| sm_90 | H100(Hopper) | ✓ |
| sm_100 / sm_120 | RTX 50 / Blackwell(CUDA 12.8 构建) | ✓ |
驱动要求:Windows GPU 二进制需 NVIDIA Driver ≥ R528(2022 年末);RTX 50 / Blackwell 额外需 ≥ R570。
7快速开始
7.1 Uni-Dock:单配体全局对接(CPU · macOS / Linux / Windows)
# ── Uni-Dock:单配体全局对接(CPU · macOS/Linux/Windows)──
./Uni-Dock --receptor receptor.pdbqt --ligand ligand.pdbqt \
--center_x 15.19 --center_y 53.90 --center_z 16.92 \
--size_x 20 --size_y 20 --size_z 20 \
--out output.pdbqt --exhaustiveness 8 --num_modes 9
# ── Uni-Dock-GPU:批量虚拟筛选(Linux/Windows · 需 NVIDIA GPU)──
./Uni-Dock-GPU --receptor receptor.pdbqt \
--gpu_batch lig1.pdbqt lig2.pdbqt lig3.pdbqt \
--center_x 15.19 --center_y 53.90 --center_z 16.92 \
--size_x 25 --size_y 25 --size_z 25 --dir output_dir/ --exhaustiveness 32
# ── 大规模筛选:配体索引文件 ──
./Uni-Dock-GPU --receptor receptor.pdbqt --ligand_index ligands.txt \
--center_x X --center_y Y --center_z Z \
--size_x 20 --size_y 20 --size_z 20 --dir output_dir/
7.2 UniDock-Pro:Score 模式与相似性引导 / 混合模式
# ── Score 模式(CPU · macOS 支持),输出详细能量分解 ──
./UniDock-Pro --receptor receptor.pdbqt --ligand ligand.pdbqt \
--center_x 15.19 --center_y 53.90 --center_z 16.92 \
--size_x 20 --size_y 20 --size_z 20 --score_only
# Score: -18.118 kcal/mol
# (1) Final Intermolecular Energy: -17.634 kcal/mol
# (2) Final Total Internal Energy: -0.485 kcal/mol
# (3) Torsional Free Energy: 5.121 kcal/mol
# ── 相似性引导对接(需 CUDA)──
./UniDock-Pro-GPU --receptor receptor.pdbqt --gpu_batch candidates.pdbqt \
--reference_ligand known_active.pdbqt --similarity_searching
# ── 混合模式(相似性 + 自由对接)──
./UniDock-Pro-GPU --receptor receptor.pdbqt --gpu_batch candidates.pdbqt \
--reference_ligand known_active.pdbqt --hybrid_mode
8关键参数
表 5 Uni-Dock 常用选项
| 参数 | 默认值 | 说明 |
--exhaustiveness | 8 | 搜索彻底性(越大越准、越慢) |
--num_modes | 9 | 最大输出构象数 |
--energy_range | 3.0 | 能量窗口(kcal/mol) |
--scoring | vina | 评分函数:vina / vinardo / ad4 |
--score_only / --local_only | — | 仅评估当前 pose / 仅局部优化 |
表 6 UniDock-Pro 额外参数
| 参数 | 默认值 | 说明 |
--reference_ligand | — | 相似性引导对接的参考配体 |
--similarity_searching | — | 启用相似性搜索引导 |
--hybrid_mode | — | 混合模式(相似性 + 自由对接) |
--max_gpu_memory | all | 限制 GPU 内存使用(MB) |
--refine_step | 3 | 精化步数 |
9与原项目的差异与适配补丁
表 7 LK-UniDock vs 原项目
| 项目 | 原项目 dptech-corp/Uni-Dock | LK-UniDock |
| 源码版本 | v1.1.3 | v1.1.3(同源) |
| Windows GPU 预编译 | 尚未提供 | ✓ 提供 |
| CUDA 版本 | 11.8(GitHub CI) | 12.8(支持 RTX 50 / Blackwell) |
| CUDA Runtime / Boost / MSVC CRT | 动态(需 Toolkit / conda / VC++ Redist) | ✓ 全静态嵌入 |
| Windows 运行时 DLL 数 | 10+ | 1(vcomp140.dll) |
| MSVC + CUDA 环境适配 | 需手工处理 | ✓ __CUDACC__ guard 已适配 |
六项开源补丁(均欢迎 PR 回原项目)
- P1/P2:Boost Filesystem / File I/O 的
__CUDACC__ guard——隔离 MSVC+CUDA 12 下 __std_fs_copy_options 构建错误与 CUDA TU 间接引入 Boost 头。
- P3:cache.h / ad4cache.h 中 Boost filesystem include 下移 .cpp,防
monte_carlo.cu 链式导入。
- P4:CMakeLists 跨平台扩展——CMP0167、FORCE_CPU_ONLY、BUILD_PORTABLE、FETCH_BOOST、macOS OpenMP 检测、CUDA sm_100/120 自动检测、
/utf-8 等。
- P5:构建脚本 build_mac.sh / build_linux.sh / build_windows.bat(CPU+GPU、portable)。
- P6:UniDock-Pro 项目补齐——LICENSE(Apache 2.0)、
.github/workflows/build.yml CI、MSVC/CUDA 补丁同步。
10源码构建与常见报错
要求:CMake 3.16+、C++17(GCC 7+ / Clang 5+ / MSVC 2019+)、Boost 1.72+(可自动 fetch)、CUDA Toolkit 11.8+(GPU 构建)。
# macOS(CPU-only,Apple Silicon 无 CUDA)
brew install cmake boost libomp
cd Uni-Dock-main && bash build_mac.sh --clean
cd UniDock-Pro-main && bash build_mac.sh --clean
# 输出 dist/Uni-Dock、dist/UniDock-Pro(仅系统库依赖,可移植)
# Linux(CPU + GPU)
bash build_linux.sh # CPU + GPU
bash build_linux.sh --cpu-only | --gpu-only | --fetch-boost
# Windows GPU Portable(须在 x64 Native Tools Command Prompt for VS2022 中)
# 要求 Visual Studio 2022 + CUDA Toolkit 12.8
set CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8
set CUDACXX=%CUDA_PATH%\bin\nvcc.exe
cd Uni-Dock-main
cmake -S unidock -B build_portable -G "Visual Studio 17 2022" -A x64 ^
-T cuda="%CUDA_PATH%" -DFETCH_BOOST=ON -DBUILD_PORTABLE=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build_portable --config Release -j
# 预期输出 build_portable\Release\unidock.exe(仅需 vcomp140.dll)
表 8 常见构建错误排查
| 错误信息 | 原因 / 解决方案 |
| [CPU-only build] GPU batch docking unavailable | CUDA 未检测到 → -DCMAKE_CUDA_COMPILER=… 显式指定 nvcc |
| boost/filesystem/path.hpp 编译错误 | CUDA TU 导入 Boost filesystem → 应用 __CUDACC__ guard(本仓库已含) |
| boost_thread.lib (shared) 冲突 | conda Boost + BUILD_PORTABLE 冲突 → -DFETCH_BOOST=ON 跳过 conda Boost |
| nvcc fatal: Unsupported gpu architecture 'compute_60' | CUDA 13+ 已移除 Pascal/Volta → 使用 CUDA 12.8 |
| CMake CUDA 检测失败(nvcc 已在 PATH) | -T cuda=… 路径含空格 → 用 -DCMAKE_CUDA_COMPILER=完整路径 |