news 2026/10/25 1:52:35

Vina-CUDA 实战测评:CUDA 重写的编译陷阱与四体系同机对照

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vina-CUDA 实战测评:CUDA 重写的编译陷阱与四体系同机对照

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

你想找一个比 OpenCL 移植更快的 Vina 系 GPU 引擎,Vina-CUDA 论文宣称对 Vina-GPU 2.1 还有平均 3 倍的再加速——但 clone 下来会发现仓库默认分支几乎是空的,编译过了又会在 300³ 格点上爆显存。
这篇在一台 12 GB 显存的消费级 GPU 机器上把 Vina-CUDA v1.1 从 clone 到四体系基准全流程走通:给出真实存在的代码分支位置、系统 boost 编译补丁、SMALL_BOX 与 LARGE_BOX 的显存边界(附 1u1b 示例实测 9.9 秒)、免 JIT 重编的计时差异(24.8 秒对 9.9 秒),以及与 Vina-GPU 2.1、Uni-Dock、Vina CPU 的同机对照——四体系 1.1–7.1 秒,对 Vina 单核 7.2–15.6 倍,同机比 Vina-GPU 2.1 快 1.1–1.6 倍,复现论文方向。
文中还给出五坑的逐条修法(含 master 分支位置、SMALL_BOX 的 48 Å 判据、免 JIT 重编命令)与打分正确性的能量对齐证据,末尾附同机四引擎横评表供选型直查。

关键字:Vina-CUDA、分子对接、GPU加速、CUDA编译、AutoDock Vina、虚拟筛选、显存优化、RILC-BFGS

Vina-CUDA 实战

它是什么

Vina-GPU 2.1 的 CUDA 重写

北理工 HPCLab 出品

怎么编

master 分支才有码

系统 boost 补丁

怎么跑

SMALL_BOX 显存边界

免 JIT 计时

跑得如何

四体系最快之一

对单核 7 到 16 倍

坑在哪

空壳 main 分支

LARGE_BOX 爆显存

目录:§0. 相关教程与核心文献 | §1. 软件介绍与版本沿革 | §2. 原理:双层并行与共享内存 | §3. 特点与边界 | §4. 文献测评口径 | §5. 本地安装实测 | §6. 四体系基准与同机对照 | §7. 结论与选型建议

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

资源链接与本文关系
Vina-CUDA 官方仓库—源码(注意分支,见 §5 坑 1)
Vina-CUDA, JCIM 2025, PubMed 40377068—方法论文与头对头数据
Vina-GPU-2.1 仓库—它的重写基线(上一篇)

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

Vina-CUDA 由北京理工大学 HPCLab 团队开发,定位是 Vina-GPU 2.1 的 CUDA 深度重写:不是把 OpenCL 内核直译成 CUDA,而是针对 GPU 硬件特性重新组织并行结构与访存。仓库当前提供 v1.0 与 v1.1 两个版本目录(本文实测 v1.1),并同步发布 QuickVina2-CUDA 与 QuickVina-W-CUDA 两个衍生(下一篇单独测)。许可跟随上游 Apache 2.0。要注意 GitHub 上的论文引用信息与仓库更新节奏并不同步——以仓库目录内的版本为准。

§2. 原理:双层并行与共享内存

论文给出的三个核心改造:
任务级并行(每条随机构象分配到一个 CUDA block,block 内自洽完成变异到输出);
计算级并行(block 内多线程协作执行变异、打分与迭代累加,用循环融合、末级循环展开与规约求和提升 warp 效率);
两级访存优化(构象分布走全局内存、对接关键操作进共享内存)。格点缓存沿用 Vina-GPU 2.1 的跨配体复用策略,但计算搬进 CUDA 实现。RILC-BFGS 局部优化器继承自 2.1,配套 Lewis-Overton 线搜索。

§3. 特点与边界

特点:单二进制即可单配体模式或批量;自带基于 PyVina 的多 GPU 动态负载均衡框架;输出与 Vina 生态同口径。
边界:只支持 NVIDIA(CUDA 专属);编译档位按盒子大小静态分配格点数组内存——SMALL_BOX(128³ 上限,约 48 Å 盒子)与 LARGE_BOX(300³ 上限)二选一,选错要么显存溢出要么白浪费(见 §5 坑 3);单配体任务同样吃不满卡,批量才是主场。

§4. 文献测评口径

JCIM 2025 论文的两组关键数字(基准与口径都已逐源核对):
对标准 AutoDock Vina,两个数据集上平均 3.03× 与 4.38×、最大 23.84×;对 Vina-GPU 2.1,平均 3.01× 与 4.08×、最大 9.83×——注意这两组常被引错位(4.08 与 4.38 是不同基准的平均值而非最大值)。
衍生引擎侧:QuickVina2-CUDA 对 QuickVina2-GPU 2.1 平均 11.81×/13.81×、最大 32.72×/33.78×;五库综合平均 3.71×。
精度口径:与 AutoDock Vina 的打分 Pearson 相关系数 0.992,CASF-2016 上 192/285 个体系落在 2 Å 内(Vina 本尊 210 个)——重写基本无损。

§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 + make(不用 cmake)
C++ 库系统 boost 1.74 dev 套件

第 0 步:系统依赖:

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

第 1 步:获取源码——必须走 master 分支(默认 main 是空壳,见坑 1):

curl-sLhttps://codeload.github.com/HPCLab-933/Vina-CUDA/tar.gz/refs/heads/master-ovc.tgztarxzf vc.tgz&&mvVina-CUDA-master Vina-CUDAcdVina-CUDA/Vina-CUDA_v1.1

第 2 步:Makefile 手术(系统 boost + 本机 nvcc + sm_86 + SMALL_BOX,即坑 2/坑 3 的修法):

WD=$(pwd)sed-i"s|^WORK_DIR=.*|WORK_DIR=$WD|; s|^NVCC_COMPILER=.*|NVCC_COMPILER=/usr/local/cuda/bin/nvcc|; s|^DOCKING_BOX_SIZE=.*|DOCKING_BOX_SIZE=-DSMALL_BOX|"Makefilesed-i's|^BOOST_INC_PATH=.*|BOOST_INC_PATH=-I/usr/include|; s|^SRC=.*|SRC=./lib/*.cpp|; s|^LIB_PATH=.*|LIB_PATH=-L/usr/lib/x86_64-linux-gnu|'Makefilesed-i's|^LIB1=.*|LIB1=-lboost_program_options -lboost_system -lboost_filesystem -lboost_thread|'Makefilesed-i's|^OPTION=|OPTION=-arch=sm_86\n#OPTION=|'Makefile

第 3 步:首编 + 冒烟(make source 版含运行时内核编译,首跑 1u1b 示例预计 25 秒左右):

exportPATH=/usr/local/cuda/bin:$PATHmakesource-j8mkdir-pdocking_result ./Vina-GPU-2-1-CUDA--config./input_file_example/1u1b_config.txt# 预期: mode 表首行约 -6.9 kcal/mol, "total runtime = 24 s" 量级(含 JIT)

第 4 步:免 JIT 正式版(正式计时装这个,同一示例降到 10 秒级,即坑 4):

makeclean>/dev/null&&make-j8./Vina-GPU-2-1-CUDA--config./input_file_example/1u1b_config.txt# 预期: "total runtime = 9.8 s" 量级

五个坑按杀伤力排序(步骤里已含修法,这里讲清为什么):

坑 1(克隆即中):默认 main 分支是空壳。仓库main分支只有 README 和 LICENSE(4 KB),git clone默认拿到的是它,极易误判"项目没放代码"。真实代码在master 分支(18 MB,含 v1.0/v1.1 与两个衍生)——clone 时显式指定分支,或直接下 master 的 tarball。

坑 2:Makefile 绑死作者环境。与 Vina-GPU 系同款:WORK_DIR写死路径、boost 要求源码树现场编译 thread.cpp。补丁一致:WORK_DIR 指当前目录、boost 走系统库并补-lboost_thread、编译加-arch=sm_86。

坑 3:LARGE_BOX 档直接爆显存。Makefile 默认-DLARGE_BOX,把 300×300×300 的静态格点结构体整个cudaMalloc上卡,12 GB 卡瞬间报cudaErrorMemoryAllocation (code=2)。盒子不超过 48 Å 时改-DSMALL_BOX(128³)即可;本文四个体系最大 22.9 Å,SMALL_BOX 全覆盖。

坑 4:make source版每次运行都 JIT。首次用make source编译没问题,但它带的-DBUILD_KERNEL_FROM_SOURCE会在每次运行时现场编译 CUDA 内核——1u1b 示例 24.8 秒里大头是 JIT。正式计时前务必make clean && make重编免 JIT 版,同一示例降到 9.9 秒。

坑 5:config 相对路径按工作目录解析。receptor/ligand 的相对路径是相对运行时 CWD 的,批量脚本里 cd 来 cd去时建议直接在配置里写绝对路径或固定运行目录。

§6. 四体系基准与同机对照

四体系(SMALL_BOX、thread=8192、exhaustiveness=8 等价配置;3tmn 用去金属受体),免 JIT 版总耗时:

体系Vina-CUDAVina-GPU 2.1Uni-DockVina 1.2.7 单核对单核mode1 (kcal/mol)
1stp1.17 s1.40 s2.44 s12.35 s10.6×-7.0
3ce33.21 s3.39 s7.10 s29.86 s9.3×-11.4
3tmn1.11 s1.37 s1.71 s8.06 s7.2×-8.5
7cpa7.09 s11.40 s16.47 s110.87 s15.6×-7.7

三个结论:
一、对 Vina 单核 7.2–15.6 倍、对十二核 1.5–2.9 倍——盒子越大优势越大(7cpa 大盒子把 GPU 喂得更饱);
二、同机比 Vina-GPU 2.1 快 1.06–1.61 倍,方向与论文的 3.01× 一致、幅度更温和,消费级小体系场景的 GPU 本来就没吃满;
三、能量与 Vina CPU 逐体系对齐(-11.4 对 -11.42),打分移植正确。在四引擎同机横评里,Vina-CUDA 是单配体均衡性最好的一个——每个体系都不慢于任何对手。

§7. 结论与选型建议

NVIDIA 卡 + Vina 打分 + 追求单任务速度的组合,Vina-CUDA 是当前本机实测的最优解:编译补丁五坑一次修完即稳定,SMALL_BOX 覆盖常规口袋,多卡框架白送。
两个提醒:仓库代码分支的"空壳陷阱"说明该项目工程发布尚不成熟,重要结果建议用 Vina CPU 或 Vina-GPU 交叉验证(本文的能量对齐就是这种验证);盒子超过 48 Å 时回到 LARGE_BOX 档,12 GB 卡需要先算一笔格点显存账。

下一篇测同仓库的两个衍生:QuickVina2-CUDA 与 QuickVina-W-CUDA。


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

更多专栏:

我的专栏

蛋白 / 抗体 / 多肽 / 核酸分子模拟 / 动力学 / 对接药物 / 设计 / 案例AI / Agent / 大模型
开源蛋白结构预测分子模拟基础小分子药物设计案例AI Agent系列
开源蛋白生成方法实践分子动力学模拟-Amber蛋白药物设计案例化学大模型
开源多肽设计模型分子动力学模拟-Gromacs多肽药物设计案例《AI Agent原理与实战》
开源多肽性质预测分子动力学模拟-OpenMM开源小分子生成设计CADD中的机器学习模型
DNA/RNA药物设计結合自由能高效计算配置《MCP 入门实战》
siRNA药物设计模型UCSF DOCK系列我胡师兄说药《AI入门实战2026》
ASO药物设计模型rDock系列 LeDock系列 gnina系列《经典机器学习实战》
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/25 1:48:39

深度学习11:反向传播2:激活层的反向传播和实现ReLU和Sigmoid

激活层的反向传播和实现一、ReLU的反向传播二、Sigmoid的反向传播看不懂blog: 深度学习10:反向传播1:计算图,反向求导,链式法则,加法,乘法节点反向传播(经典,比学会链式法则) 不要看这章及一下,推导都离不开上一章知识 blog 深度学习10:反向传…

作者头像 李华
网站建设 2026/10/25 1:46:42

Windows 上直接安装 APK:APK 安装器如何做到不用模拟器

Windows 上直接安装 APK:APK 安装器如何做到不用模拟器 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer APK 安装器(APK Installer)是…

作者头像 李华
网站建设 2026/10/25 1:45:50

AAC辅助与替代沟通系统:从多模态本质到技术选型的工程实践指南

简介:这份资源围绕AAC辅助与替代沟通系统展开,面向言语治疗师、特教老师、康复从业者及有沟通障碍人士的家属,系统讲解辅助沟通与替代沟通两类系统的概念、适用人群与核心能力框架。内容涵盖发展性障碍、获得性障碍、渐进性神经疾病及临时疾病…

作者头像 李华
网站建设 2026/10/25 1:45:46

2024人形机器人产业链白皮书:从产业元年的硬件成熟到软件算法突破

简介:这份《2024人形机器人产业链白皮书》面向机器人行业研究者、投资人与产业从业者,系统梳理人形机器人从宏观环境到商业化落地的完整图景。内容涵盖产业宏观机遇、产品定义与发展历程、产业链上中下游拆解、主流生产企业扫描及市场投资建议&#xff0…

作者头像 李华
网站建设 2026/10/25 1:43:37

Day 17 | uni-app 小程序:前端从零搭建

摘要:后端 API 全部就绪了(Day01-16),但用户总不能抱着 Postman 购物吧?今天把前端搞起来——用 uni-app Vue3 从零搭建商城小程序。涵盖项目初始化、五大核心页面(首页/商品详情/购物车/订单/个人中心&am…

作者头像 李华