LK-UniDock 是 Uni-Dock 与 UniDock-Pro 的跨平台打包发行项目。提供预编译二进制(含 两个原项目尚未提供的 Windows GPU 版本)和适配补丁后的源代码。静态链接 CUDA Runtime、Boost、MSVC CRT,运行时仅需 1 个 DLL。特别感谢 Uni-Dock 与 UniDock-Pro 原项目作者的工作。
LK-UniDock 打包维护两款基于 AutoDock-Vina 的 GPU 分子对接引擎。Uni-Dock 提供经典全局对接与 GPU 批量虚拟筛选;UniDock-Pro 在此基础上增加相似性引导对接与混合模式。
Uni-Dock / UniDock-Pro 是国内在 GPU 加速分子对接领域的代表性工作,原项目作者的贡献为社区提供了高质量的 GPU 对接能力。同时部分平台上的安装与依赖还需使用者手工费心配置,LK-UniDock 面向这些部署场景提供一体化发行。
dptech-corp/Uni-Dock 与 NiBoyang/UniDock-Pro 目前 未提供 Windows GPU 预编译二进制。Windows 用户通常需要借助 WSL2 运行,或自行从源码构建,部署门槛较高。面向 Windows GPU 构建的适配工作。 在实际构建 Uni-Dock v1.1.3 与 UniDock-Pro v0.0.1 的 Windows GPU 版本过程中,我们识别并适配了下列几个点:
① MSVC + CUDA 12 的头文件交互:boost/filesystem/path.hpp在 CUDA 编译单元中会触发__std_fs_copy_options相关问题,原源码在 Windows MSVC 环境下需采用__CUDACC__guard 隔离;
② conda Boost 与静态打包的适配:BUILD_PORTABLE=ON与 conda 预编译动态 Boost 同时使用时会约束冲突,采用FETCH_BOOST=ON策略从源码拉取静态 Boost;
③ CUDA 11.8 与 Blackwell 架构:GitHub CI 默认的 CUDA 11.8 不覆盖 sm_100 / sm_120(RTX 50),需升级至 CUDA 12.8;
④ UniDock-Pro 项目补齐:NiBoyang/UniDock-Pro尚未提供 LICENSE 与自动化构建配置,LK-UniDock 同步补齐 Apache 2.0 LICENSE 与 GitHub Actions 构建流程。
Windows 用户的现实选择。 在原项目提供 Linux GPU 版本的前提下,Windows 用户一般通过 WSL2 + CUDA 访问。WSL2 本身表现优秀,但在部分 GPU 上可能会有小幅性能损耗(常见为 10-15%),且需额外配置 CUDA-WSL 驱动栈。对企业科研团队而言,原生 Windows 工作站 + RTX 显卡 + 复制即用 的部署模式依然有价值。
从 RTX 10 到 RTX 50 的硬件跨越。 NVIDIA 近十年发布了 Pascal(sm_60)、Volta(sm_70)、Turing(sm_75)、Ampere(sm_80/86)、Ada Lovelace(sm_89)、Hopper(sm_90)、Blackwell(sm_100/120)七代架构。研发实验室中常混合使用多代显卡,一份二进制覆盖全部架构才能实用。
从二进制分发、构建补丁到生态整合,LK-UniDock 让 GPU 分子对接真正"开箱即用"。
BUILD_PORTABLE=ON + FETCH_BOOST=ON 策略全静态链接,让 Windows 用户可以不依赖 WSL2 也能使用 GPU 加速。__CUDACC__ guard 补丁、CMake 跨平台选项、macOS OpenMP 静态链接、UniDock-Pro LICENSE 与 CI 补全均以开源形式发布,欢迎原项目及社区取用 / PR 回上游,为整个 Uni-Dock 生态提供可复用的构建基础设施。生态意义:LK-UniDock 不改变 Uni-Dock / UniDock-Pro 原项目的核心算法与实现,将性能与质量的功劳完全归于原作者;LK-UniDock 仅为打包分发与跨平台适配,让 GPU 分子对接在 Windows / mac 上也能复制即用。
下表对比预编译发行版与“从原项目源码自行编译”、“WSL2 方案”三者。原项目本身质量优秀;LK-UniDock 关注的是在不同平台上降低部署门槛。
| 能力维度 | LK-UniDock 预编译 | 原项目源码自编译 | WSL2 方案 |
|---|---|---|---|
| Windows GPU 可用性 | ✓ 预编译 exe | 需适配 MSVC + CUDA 12 构建 | 需安装 WSL2 + CUDA-WSL |
| 部署时间 | < 1 分钟(解压) | 数小时(首次构建) | 30 分钟 ~ 数小时 |
| 依赖安装 | 零(静态打包) | CUDA + Boost + MSVC 全套 | WSL2 + Linux 工具链 |
| 运行时 DLL 数 | 1(vcomp140.dll) | 10+ | Linux 动态库 |
| GPU 性能 | 原生 100% | 原生 100% | 原生 85~90%(常见 WSL 损耗) |
| Blackwell(RTX 50) | ✓ sm_100/120 支持 | 需 CUDA 12.8+ 配置 | 需 CUDA 12.8 WSL 驱动 |
| 跨机器可移植 | ✓ 复制即用 | 需重复构建或备齐 DLL | 需在每台机器配 WSL |
| UniDock-Pro 发行 | ✓ 同步补齐 LICENSE + CI | 需自行适配 | 同 Linux 方案 |
| 许可证合规 | Apache 2.0 明确 | 与原项目一致 | 与原项目一致 |
| macOS Apple Silicon | ✓ CPU 版预编译 | 需安装 brew + libomp | 不支持 |
核心定位:LK-UniDock 完全保留 Uni-Dock / UniDock-Pro 原项目的核心算法与实现,只面向 跨平台预编译与一键部署 场景补位。对 Windows 企业工作站、多代 GPU 架构混合的实验室、以及需多台机器快速部署的场景提供开箱即用体验。
从 Releases 页面下载对应平台的预编译包,解压即可运行。macOS arm64 为 CPU 版本;Linux 与 Windows 提供 GPU 加速版本。
原项目目前 未发布 Windows GPU 预编译二进制。LK-UniDock 通过全静态链接构建补齐这部分:CUDA Runtime、Boost、MSVC CRT 全部静态嵌入,运行时仅需 vcomp140.dll。
| 组件 | LK-UniDock build | 原项目 GitHub release |
|---|---|---|
| Windows GPU binary | ✓ 提供 | — 尚未提供 |
| CUDA Runtime | 静态嵌入(无需安装) | 动态 DLL(需 CUDA Toolkit) |
| Boost | 静态嵌入 FETCH_BOOST=ON |
动态 conda DLL |
| MSVC CRT | 静态嵌入 BUILD_PORTABLE=ON |
需 VC++ Redist |
| 运行时 DLL 依赖 | 仅 1 个:vcomp140.dll(bundled) |
10+ 个,需逐一配置 |
| CUDA 架构 | sm_60 → sm_120(GTX 10 → RTX 50) | 取决于 CI 配置 |
| 可移植性 | ✓ 复制 exe + dll,任意机器运行 | 需同步部署运行时环境 |
Windows / Linux GPU 构建支持 sm_60 到 sm_120 全部架构。CUDA 12.8 构建带来 Blackwell(RTX 50)支持,一个二进制覆盖 GTX 10 到 RTX 50。
| 架构 | 代表 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。
单配体全局对接、GPU 批量虚拟筛选、以及 UniDock-Pro 的相似性引导 / 混合模式。
| 参数 | 默认值 | 说明 |
|---|---|---|
| Uni-Dock | ||
--exhaustiveness | 8 | 搜索彻底性(越大越准、越慢) |
--num_modes | 9 | 最大输出构象数 |
--energy_range | 3.0 | 能量窗口(kcal/mol) |
--scoring | vina | 评分函数:vina / vinardo / ad4 |
--score_only | — | 仅评估当前 pose,不搜索 |
--local_only | — | 仅局部优化 |
| UniDock-Pro 额外参数 | ||
--reference_ligand | — | 相似性引导对接的参考配体 |
--similarity_searching | — | 启用相似性搜索引导 |
--hybrid_mode | — | 混合模式(相似性 + 自由对接) |
--max_gpu_memory | all | 限制 GPU 内存使用(MB) |
--refine_step | 3 | 精化步数 |
LK-UniDock 的源码基于 Uni-Dock / UniDock-Pro 原项目,主要进行了几个跨平台构建适配,以便 MSVC + CUDA 12 环境下能顺利构建、以及支持静态打包(portable build)。所有修改均以开源形式发布,欢迎原项目及社区取用。
src/lib/common.h 中 boost/filesystem/path.hpp 在 MSVC + CUDA 12 下会引发 __std_fs_copy_options 相关构建错误。添加 __CUDACC__ guard 隔离。src/lib/file.h 应用同样的 __CUDACC__ guard,防止 CUDA TU 通过 file.h 间接引入 Boost filesystem 头。cache.h / ad4cache.h 中 Boost filesystem #include 下移到 .cpp 文件,防止 monte_carlo.cu 链式导入。CMP0167、FORCE_CPU_ONLY、BUILD_PORTABLE、FETCH_BOOST、macOS OpenMP 检测、CUDA sm_100/120 自动检测、/utf-8 MSVC 标志等。build_mac.sh(macOS CPU)、build_linux.sh(Linux CPU + GPU)、build_windows.bat(Windows CPU + GPU Portable)。.github/workflows/build.yml CI 工作流;MSVC/CUDA 补丁同步。相关改动可 PR 回原项目。| 项目 | 原项目 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 | 动态(需 CUDA Toolkit) | 静态嵌入 |
| Boost | 动态(需 conda / vcpkg) | 静态嵌入 FETCH_BOOST=ON |
| MSVC CRT | 动态(需 VC++ Redist) | 静态嵌入 BUILD_PORTABLE=ON |
| Windows 运行时 DLL 数 | 10+ | 1(vcomp140.dll) |
| MSVC + CUDA 环境适配 | 需手工处理 | ✓ 已通过 __CUDACC__ guard 适配 |
要求:CMake 3.16+,C++17(GCC 7+ / Clang 5+ / MSVC 2019+),Boost 1.72+(可自动 fetch),CUDA Toolkit 11.8+(GPU 构建)。
| 错误信息 | 原因 | 解决方案 |
|---|---|---|
[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, Boost_USE_STATIC_LIBS=ON) |
conda Boost + BUILD_PORTABLE=ON 冲突 |
使用 -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=full\path\to\nvcc.exe |
LK-UniDock 基于 Apache 2.0 许可证开源发行。预编译二进制覆盖 macOS arm64、Linux x86_64、Windows x64 三平台。Windows GPU 版本全静态链接,复制即用。核心算法与实现来自 Uni-Dock 与 UniDock-Pro 原项目,特此致谢。