OpenMM分子动力学模拟02 安装:Linux:conda 一条命令装通 GPU 加速的分子模拟环境

摘要:一条 conda 命令装好 OpenMM 并验证四平台。本章按官方安装路径复刻加本机实测踩坑------镜像超时、PYTHONPATH 污染、CUDA 版本与驱动匹配、环境 CUDA 漂移,并给出装完后验证 GPU 真被用上的方法。

关键字 :OpenMM安装、conda、Linux、CUDA、GPU驱动、testInstallation、PYTHONPATH、环境配置


【官方来源】docs.openmm.org User Guide §2.2 Installing OpenMM

【Linux 实测】Ubuntu 22.04 / conda-forge OpenMM 8.5.2 / 消费级 GPU(12 GB 显存) / 驱动 580.178.04(支持到 CUDA 13.0)

注:本章安装验证时环境 conda 解析的 CUDA 运行时为 12.9(≤ 驱动支持版,正常);环境 CUDA 版本以安装时 conda 实际解析为准,全文各章实测均以当时环境如实记录


1. 官方安装路径(两条)

【官方来源】原文要点:

OpenMM 用 pip 或 conda 安装。最简单的 conda 来自 Miniconda。源码编译也行,但很少人需要。

前提(官方原文逐条):

  • 装 64 位 Python 3.x 的 Miniconda
  • 想跑 GPU 的话先装厂商最新驱动:

路径 A:conda(本机用的)

【官方来源】

bash 复制代码
conda install -c conda-forge openmm

新版 conda(≥4.8.4)会自动装"驱动支持的最新 CUDA 版本"的编译版。也可以钉死 CUDA 版本:

bash 复制代码
conda install -c conda-forge openmm cuda-version=12

(12 换成你要的 CUDA 版本,官方为 CUDA 12 及以上出包。不同 CUDA 版本互不二进制兼容。)

路径 B:pip

【官方来源】

bash 复制代码
pip install openmm

默认只含 OpenCL + CPU + Reference 三平台。要 CUDA 平台(有 NVIDIA 卡推荐装):

bash 复制代码
pip install openmm[cuda12]

cuda13 也有。AMD 用户用 hip6 / hip7:

bash 复制代码
pip install openmm[hip6]

2. 官方验证命令

【官方来源】

bash 复制代码
python -m openmm.testInstallation

官方说明:确认 OpenMM 已装好、检查 GPU 加速是否可用(CUDA/OpenCL/HIP 平台)、验证所有平台给出一致结果。

【Linux 实测】Ubuntu 22.04 + 消费级 GPU 上运行结果(节选):

复制代码
OpenMM Version: 8.5.2
Git Revision: ...

There are 4 Platforms available:

    1 Reference - Successfully computed forces
    2 CPU - Successfully computed forces
    3 CUDA - Successfully computed forces
    4 OpenCL - Successfully computed forces

Median difference in forces between platforms:

    Reference vs. CPU: 6.3214e-06
    Reference vs. CUDA: 6.7468e-05
    Reference vs. OpenCL: 6.7875e-05

All differences are within tolerance.  Platform tests have passed.

四个平台全部通过、力差异在容差内 = 安装成功。

3. 【Linux 实测】完整安装记录(含踩坑)

实际执行的命令

bash 复制代码
# 1. 建环境(本机为避免镜像干扰加了 --override-channels)
conda create -n openmm python=3.11 -y --override-channels -c conda-forge

# 2. 安装 OpenMM
conda install -n openmm --override-channels -c conda-forge openmm -y

# 3. 验证
~/anaconda3/envs/openmm/bin/python -m openmm.testInstallation

【踩坑 1】清华镜像 HTTP 超时

.condarc 配了国内镜像时,conda create 可能连不上。两种解法:

bash 复制代码
# 解法 A:单次绕过(推荐,不动全局配置)
conda create -n openmm python=3.11 --override-channels -c conda-forge -y

# 解法 B:临时禁用代理(如果你挂着代理)

【踩坑 2】Hermes/IDE 的 PYTHONPATH 污染

在 agent 沙箱或某些 IDE 里跑 conda env 的 python,PYTHONPATH 会被注入别的 Python 版本的 site-packages,造成 .so 二进制不匹配(典型报错 cannot import name '_imaging' from 'PIL' 或 numpy ABI 冲突)。解法:

bash 复制代码
env -u PYTHONPATH ~/anaconda3/envs/openmm/bin/python your_script.py

普通终端不受影响。

【踩坑 3】CUDA 版本与驱动匹配

conda-forge 的 openmm 包自带 CUDA 运行时,不用单独装 cudatoolkit。但注意:

bash 复制代码
nvidia-smi   # 右上角 CUDA Version 显示驱动最高支持的 CUDA 版本(本机 580.178.04 → 13.0)

openmm 编译的 CUDA 版本 ≤ 驱动支持版本即可(本机装的是 12.9 编译版,13.0 驱动下正常跑)。若装了不兼容版本,testInstallation 里 CUDA 平台会失败或干脆不出现------此时按官方写法钉版本重装:conda install -c conda-forge openmm cuda-version=12。

【实测新坑·环境 CUDA 漂移】 (本系列写作后期真实发生)往环境里装其他 CUDA 生态包(如 openmm-torch)时,conda 可能连带把 cuda-version 升到比驱动新的版本 ------本机环境曾从 12.9 漂到 13.3(> 驱动 13.0),症状是 testInstallation 通过但跑 kernel 时报 CUDA_ERROR_UNSUPPORTED_PTX_VERSION 。修法:conda install -c conda-forge cuda-version=13.0 钉回(或钉回你原来在用的版本)。纪律:装完任何 CUDA 相关包都重验 kernel 真跑(第 04 章三步验证法)。

常用生态包安装(本系列实测配置)

第 15 章五插件 + 分析库的本机安装版本(全部 conda-forge 一条命令路线):

bash 复制代码
conda install -n openmm -c conda-forge openmmtools openmm-plumed openmmforcefields \
                                openmm-torch openmm-ml matplotlib -y

【Linux 实测终态】openmm 8.5.2 + openmmtools 0.26.0 + openmm-plumed 2.1 +

openmmforcefields 0.15.1 + openmm-torch 1.5.1(cpu build)+ openmm-ml 1.5 + pytorch 2.10(CPU);

环境 CUDA 运行时经上面漂移事故后钉为 13.0(装插件前是 12.9,两者 kernel 均正常)。

openmm-torch 的 CUDA 变体 (cuda130py311 build)在 conda-forge 与 py311 pin 反复解算失败

(详见第 15 章实测记录)------CPU 版 TorchForce/MLPotential 功能完整,仅 ML 势无 GPU 加速;

ML 重度用户可开独立环境专门装 CUDA 栈。

4. 安装后检查 GPU 是否真被用上

【Linux 实测】三种确认方式:

python 复制代码
# 方式 1:列出平台
import openmm as mm
for i in range(mm.Platform.getNumPlatforms()):
    p = mm.Platform.getPlatform(i)
    print(p.getName(), p.getSpeed())
# 有 CUDA 字样 = CUDA 平台在

# 方式 2:跑模拟时看 nvidia-smi
# 另开终端: watch -n1 nvidia-smi
# python 进程出现在进程列表 + 显存占用 = 真在用 GPU

# 方式 3:指定平台名(写错会报错,能过 = 平台存在)
platform = mm.Platform.getPlatform('CUDA')

5. 环境管理速查

bash 复制代码
conda activate openmm            # 激活
conda deactivate                 # 退出
conda remove -n openmm --all     # 删环境
conda list -n openmm openmm      # 看装的版本

下一篇:03 · 安装


系列导航 :本专栏 分子动力学模拟-OpenMM(35 章大百科:官方 User Guide / Tutorials / Cookbook / examples 全覆盖)


我的专栏

蛋白 / 抗体 / 多肽 / 核酸 分子模拟 / 动力学 / 对接 药物 / 设计 / 案例 AI / Agent / 大模型
开源蛋白结构预测 分子模拟基础 小分子药物设计案例 AI Agent系列
开源蛋白生成方法实践 分子动力学模拟-Amber 蛋白药物设计案例 化学大模型
开源多肽设计模型 分子动力学模拟-Gromacs 多肽药物设计案例 《AI Agent原理与实战》
开源多肽性质预测 分子动力学模拟-OpenMM 开源小分子生成设计 CADD中的机器学习模型
DNA/RNA药物设计 結合自由能 开源药代动力学软件 高效计算配置
siRNA药物设计模型 UCSF DOCK系列 我胡师兄说药
ASO药物设计模型 rDock系列 LeDock系列 gnina系列
相关推荐
程序员JerrySUN1 小时前
PCIe Gen5 SSD 为什么读得快、写得慢?从存储原理到 Linux 性能实测
linux·服务器·网络
Android系统攻城狮1 小时前
Linux FFmpeg深度解析之avcodec_parameters_copy调用流程与实战(二十五)
linux·运维·服务器·ffmpeg·音视频·车载音频
ITKEY_2 小时前
emacs 文件管理Dired, the Directory Editor
linux·编辑器·emacs
源图客2 小时前
解决CentOS操作系统网络异常问题
linux·运维·centos
HideF12 小时前
Linux sudo
linux
FlightYe12 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
蹊黎13 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
牛马鸡niumasi14 小时前
【Linux】C语言文件操作
linux
say_fall14 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++