Gromacs安装教程及一些思考

2023-05-16

写这篇博客目的当然不是只安装一下GROMAC,而是想借这个机会思考一下认知的问题。

想起来刚上研究生的时候,要在Linux服务器上安装这个软件,当时费了好大劲,各种求助师兄,虽然安装好了,但当时的我其实没有和好的理解这个过程。这导致后面的后处理算法也没有精深,只是在师兄的代码上进行一些改动。这次就借这个机会重温一下这个过程,了解一下当了解一个新的东西时,我们要做多少功课才能相对比较全面深入的了解这个问题。

gromacs下载地址:https://manual.gromacs.org/documentation/

gromacs官方安装指南:https://manual.gromacs.org/documentation/2021.5/install-guide/index.html

整个过程在阿里云服务器下进行。


最简单的安装方法

按照官方教程:

tar xfz gromacs-2021.5.tar.gz
cd gromacs-2021.5
mkdir build
cd build
cmake .. -DGMX_BUILD_OWN_FFTW=ON -DREGRESSIONTEST_DOWNLOAD=ON
make
make check
sudo make install
source /usr/local/gromacs/bin/GMXRC

只要按照这些命令,就可以将gromacs安装好。

当然如果你要定制化安装,那就要更加详细的了解gromacs了。

我们需要了解下面的东西:

  • 支持的平台

  • 不同编译器及版本

  • 并行计算

    • GPU

    • MPI

  • cmake

  • Fast Fourier Transform library

    • FFTW

    • MKL

大概了解了这些之后,我们就要了结合这些了解和cmake来定制化我们的安装过程。

如果对应到上面的安装命令,那就是对下面这句命令进行适应性更改:

cmake .. -DGMX_BUILD_OWN_FFTW=ON -DREGRESSIONTEST_DOWNLOAD=ON

下面我们一个一个的介绍这些。

如果不想把gromacs安装到默认的目录,想要自定义安装目录,可以在cmake命令后面加-DCMAKE_INSTALL_PREFIX=/home/marydoe/programs,加下划线的就是你想自定义安装的目录。

cmake .. -DCMAKE_INSTALL_PREFIX=/home/marydoe/programs

如果发现cmake找不到一些库文件和头文件,可以使用下面的参数:

  • CMAKE_INCLUDE_PATH for header files
  • CMAKE_LIBRARY_PATH for libraries
  • CMAKE_PREFIX_PATH for header, libraries and binaries (e.g. /usr/local).

如果想使用GPU加速,可以使用下面的参数:

cmake .. -DGMX_GPU=CUDA -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda

这个需要我们提前安装好cuda。

如果不是Nvdia的显卡,是AMD或者Intel的显卡,我们就不能使用CUDA了,这时我们可以使用OpenCL来加速。可以使用下面的命令:

cmake .. -DGMX_GPU=OpenCL 
cmake .. -DGMX_GPU=OpenCL -DGMX_OPENCL_NB_CLUSTER_SIZE=4
cmake .. -DGMX_GPU=OpenCL -DclFFT_ROOT_DIR=/path/to/your/clFFT -DGMX_EXTERNAL_CLFFT=TRUE

上面的几种命令行情况需要根据不同的情况去使用。

一般来说,gromacs的安装都是使用的动态链接,如果你想使用静态链接,那可以参考下面的使用方法。

Dynamic linking of the GROMACS executables will lead to a smaller disk footprint when installed, and so is the default on platforms where we believe it has been tested repeatedly and found to work. In general, this includes Linux, Windows, Mac OS X and BSD systems. Static binaries take more space, but on some hardware and/or under some conditions they are necessary, most commonly when you are running a parallel simulation using MPI libraries (e.g. Cray).

  • To link GROMACS binaries statically against the internal GROMACS libraries, set -DBUILD_SHARED_LIBS=OFF.
  • To link statically against external (non-system) libraries as well, set -DGMX_PREFER_STATIC_LIBS=ON. Note, that in general cmake picks up whatever is available, so this option only instructs cmake to prefer static libraries when both static and shared are available. If no static version of an external library is available, even when the aforementioned option is ON, the shared library will be used. Also note that the resulting binaries will still be dynamically linked against system libraries on platforms where that is the default. To use static system libraries, additional compiler/linker flags are necessary, e.g. -static-libgcc -static-libstdc++.
  • To attempt to link a fully static binary set -DGMX_BUILD_SHARED_EXE=OFF. This will prevent CMake from explicitly setting any dynamic linking flags. This option also sets -DBUILD_SHARED_LIBS=OFF and -DGMX_PREFER_STATIC_LIBS=ON by default, but the above caveats apply. For compilers which don’t default to static linking, the required flags have to be specified. On Linux, this is usually CFLAGS=-static CXXFLAGS=-static.

这次重新看gromacs的安装过程,发现如果想要对gromacs有一个非常深入的理解的话,那需要有不错的计算机基础(果然计算机是YYDS)。

当然这次重新看gromacs的安装教程,又让我不禁感叹英文manual讲的详细又清楚。以前因为自己英语的原因,好像总有点对英文材料有点抗拒,倒不是看不懂,而是没有看中文材料那么清晰和迅速。这次也让我重新了解到阅读英文材料的重要性,尤其是有关计算机,开源软件的使用等方面。


为了内容的完整性,在安装完gromacs之后,我们安装惯例来对gromacs的使用进行一点了解。

gromacs User guide官方地址:https://manual.gromacs.org/documentation/2021.5/user-guide/index.html

安装好gromacs之后,在命令行中键入

gmx -version

来测试一下是否正确安装了gromacs。以我的为例,我在键入gmx -version之后,显示的信息如下:

                         :-) GROMACS - gmx, 2021.5 (-:

                            GROMACS is written by:
     Andrey Alekseenko              Emile Apol              Rossen Apostolov     
         Paul Bauer           Herman J.C. Berendsen           Par Bjelkmar       
       Christian Blau           Viacheslav Bolnykh             Kevin Boyd        
     Aldert van Buuren           Rudi van Drunen             Anton Feenstra      
    Gilles Gouaillardet             Alan Gray               Gerrit Groenhof      
       Anca Hamuraru            Vincent Hindriksen          M. Eric Irrgang      
      Aleksei Iupinov           Christoph Junghans             Joe Jordan        
    Dimitrios Karkoulis            Peter Kasson                Jiri Kraus        
      Carsten Kutzner              Per Larsson              Justin A. Lemkul     
       Viveca Lindahl            Magnus Lundborg             Erik Marklund       
        Pascal Merz             Pieter Meulenhoff            Teemu Murtola       
        Szilard Pall               Sander Pronk              Roland Schulz       
       Michael Shirts            Alexey Shvetsov             Alfons Sijbers      
       Peter Tieleman              Jon Vincent              Teemu Virolainen     
     Christian Wennberg            Maarten Wolf              Artem Zhmurov       
                           and the project leaders:
        Mark Abraham, Berk Hess, Erik Lindahl, and David van der Spoel

Copyright (c) 1991-2000, University of Groningen, The Netherlands.
Copyright (c) 2001-2019, The GROMACS development team at
Uppsala University, Stockholm University and
the Royal Institute of Technology, Sweden.
check out http://www.gromacs.org for more information.

GROMACS is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License
as published by the Free Software Foundation; either version 2.1
of the License, or (at your option) any later version.

GROMACS:      gmx, version 2021.5
Executable:   /usr/local/gromacs/bin/gmx
Data prefix:  /usr/local/gromacs
Working dir:  /code/gromacs-2021.5/build
Command line:
  gmx -version

GROMACS version:    2021.5
Precision:          mixed
Memory model:       64 bit
MPI library:        thread_mpi
OpenMP support:     enabled (GMX_OPENMP_MAX_THREADS = 64)
GPU support:        disabled
SIMD instructions:  AVX_512
FFT library:        fftw-3.3.8-sse2-avx-avx2-avx2_128-avx512
RDTSCP usage:       enabled
TNG support:        enabled
Hwloc support:      disabled
Tracing support:    disabled
C compiler:         /usr/bin/cc GNU 9.3.0
C compiler flags:   -mavx512f -mfma -Wno-missing-field-initializers -fexcess-precision=fast -funroll-all-loops -O3 -DNDEBUG
C++ compiler:       /usr/bin/c++ GNU 9.3.0
C++ compiler flags: -mavx512f -mfma -Wno-missing-field-initializers -fexcess-precision=fast -funroll-all-loops -fopenmp -O3 -DNDEBUG

可以看到这些信息包括了开发人员(感谢),gromacs软件版本,安装目录,以及对一些库的支持情况,C/C++编译器版本等。这时我们可以知道我们的gromacs安装成功了。


如果再让我读一次研究生,我会坚决的润去计算机,如果必须要读原专业的话,我会先学好计算机基础,然后把gromacs的安装指南和用户手册翻译一下写在博客上,然后深入去了解对轨迹分析的算法,而不是在对建模上花时间。

这让我不禁想起了之前我的一个观点:如果你没有认为之间的自己是傻逼,那你这段时间就没有进步。人在每段时间都很难有高于最适合自己现阶段的认知,因此我有时会很惶恐,是否过段时间的我再来看现在的我,也会觉得现在自己的选择不好,觉得现在的我是傻逼。

当然,事在人为,从之前的经历来看,把现阶段的每件事做好,是我们在不确定中能够把握的事情。提高认知,破圈,多了解不同的领域(不是看科普的那种了解,至少要在电脑前静下心来认知了解几个小时,最好能有总结了解的文章输出)可能是很好的方法,找大牛了解可能也很有用,注意和大牛建立链接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gromacs安装教程及一些思考 的相关文章

  • 如何把苍白的一年写成耀眼的年终报告?写完当场加薪的那种

    毕导的文章简直太好玩了 xff1a https mp weixin qq com s Q qd2ky6AoKM1Dn3cC9q9w 啊 xff01 光阴似箭 xff0c 日月如梭 xff01 不知不觉我在公众号写了一年了 xff0c 你也到
  • 【每天一个 Linux 命令】网络相关命令(ifconfig、route、ping、traceroute、netstat、ss、telnet、rcp、scp)

    文章目录 ifconfig命令ifconfig命令使用示例route命令语法route命令使用示例ping命令语法ping命令使用示例traceroute命令语法traceroute命令使用示例netstat命令语法netstat命令使用示
  • Windows常用CMD命令

    参考下面几篇博客 xff1a Windows 用户需要知道的 CMD 常用命令总结 CMD常用命令大全 CMD常用命令
  • PIXHAWK飞行模式

    PIXHAWK飞行模式 从mission planner中设置pixhawk的飞行模式时 xff0c 一共给出了多种飞行模式 xff0c 分别为 xff1a MANUAL STABILIZED ACRO RATTITUDE ALTCTL P
  • FileZilla 通过sftp(ssh)协议远端登录Linux虚拟机

    FileZilla nbsp 通过sftp ssh 协议远端登录Linux虚拟机 参考网址 1 Filezilla连接虚拟机Ubuntu16 04传输文件 生命长跑的博客 CSDN博客 2 问题解决手记 VMWare虚拟机与本地主机不能互p
  • 【Python学习笔记】Python学习资料汇总

    不懂算法的程序员不是好程序员 xff0c 学习Python xff0c 可以更好的使用算法 xff0c 使用ML DL来处理数据 这篇文章就对自己觉得不错的学习资料进行汇总 Python基础教程 xff0c Python入门教程 xff08
  • 【LeetCode刷题日记】1716. 计算力扣银行的钱

    题目 Hercy 想要为购买第一辆车存钱 他 每天 都往力扣银行里存钱 最开始 xff0c 他在周一的时候存入 1 块钱 从周二到周日 xff0c 他每天都比前一天多存入 1 块钱 在接下来每一个周一 xff0c 他都会比 前一个周一 多存
  • 美团人的写作基本功是如何练成的

    在美团 xff0c 王兴非常重视写作 他曾经说过 xff1a 写作是我要带头苦练的基本功 xff0c 是非常基本的能力 因为一个事情要积累的话 xff0c 就得书面化 写作看起来和业务没什么关系 xff0c 但这是一个非常共通的 极其基础的
  • 【LeetCode刷题日记】382. 链表随机节点

    题目 给你一个单链表 xff0c 随机选择链表的一个节点 xff0c 并返回相应的节点值 每个节点 被选中的概率一样 实现 Solution 类 xff1a Solution ListNode head 使用整数数组初始化对象 int ge
  • Python Matplotlib教程

    Python Matplotlib教程 文章目录 Python Matplotlib教程教程特点阅读条件 数据可视化是什么数据可视化数据可视化应用场景 Matplotlib是什么Matplotlib架构组成1 脚本层2 美工层3 后端层 M
  • 【Python学习笔记】认识anaconda

    可以参考下面几篇文章 xff1a Anaconda完全入门指南 Anaconda介绍 安装及使用教程 Anaconda使用教程一 xff08 新手友好 xff09 另外下面总结一下conda的常用命令 xff1a span class to
  • 【Python学习笔记】 if __name__ == ‘__main__‘ 如何正确理解?

    引言 学过Java C C 43 43 的程序员应该都知道 xff0c 每次开启一个程序 xff0c 都必须写一个主函数作为程序的入口 xff0c 也就是我们常说的main函数 如下所示 xff0c main 就是Java中的一个main函
  • 聊聊我常用的5款动态数据可视化工具

    转自 Python大数据分析 xff08 ID xff1a pydatas xff09 视频当道的时代 xff0c 数据可视化自然也要动起来 我常用的动态可视化工具主要有 Tableau Echarts Flourish Python 这几
  • 物联网十年简史

    分享一篇好文 xff1a 万字长文 xff1a 物联网十年简史
  • 【LeetCode刷题日记】539. 最小时间差

    题目 给定一个 24 小时制 xff08 小时 分钟 34 HH MM 34 xff09 的时间列表 xff0c 找出列表中任意两个时间的最小时间差并以分钟数表示 示例 1 xff1a 输入 xff1a timePoints 61 34 2
  • LQR、LQR-MPC、GP-MPC控制倒立摆

    LQR控制倒立摆 xff1a 倒立摆状态方程 xff1a 目标任务 xff1a 模型参数 xff1a LQR for the cart pole system load 39 cp params mat 39 syms phi phid x
  • 事件驱动和消息驱动

    之前简单写过一些关于事件驱动的文章 xff1a C C 43 43 服务器开发 事件驱动 事件驱动架构 事件驱动编程及设计模式 最近看到一篇不错的文章 xff0c 在此转载一下 xff1a 事件驱动和消息驱动 事件驱动和消息驱动 消息驱动和
  • 如何写好一个数据分析报告,需要注意哪些?

    写一份好的数据分析报告的重要性不言而喻 xff08 只要我写的好 xff0c 升职加薪 年终奖就少不了我 xff09 大家都知道 xff0c 数据分析报告的输出是整个业务分析过程的成果 xff0c 是评定一条业务线的参考依据 xff0c 既
  • 任正非:全面提升软件工程能力与实践,打造可信的高质量产品

    最近看了点软件工程相关的东西 xff0c 转一下这篇文章 全面提升软件工程能力与实践 xff0c 打造可信的高质量产品 致全体员工的一封信 我今天写信 xff0c 是要和大家沟通公司如何全面提升软件工程能力和实践 二十年前的IPD变革 xf
  • 你真的会画时序图吗?

    文章目录 一 WaveDrom功能二 WaveDrom的使用三 绘制时序图四 时序图教程五 逻辑电路图教程六 Github主页七 VScode中使用Waveform 摘要 xff1a WaveDrom是一个免费开源的在线数字时序图渲染引擎

随机推荐

  • 【LeetCode刷题日记】1332. 删除回文子序列

    题目 给你一个字符串 s xff0c 它仅由字母 39 a 39 和 39 b 39 组成 每一次删除操作都可以从 s 中删除一个回文 子序列 返回删除给定字符串中所有字符 xff08 字符串为空 xff09 的最小删除次数 子序列 定义
  • PicGo图床与Typora(PicGo+Typora+GitHub的完整设置)以及常见错误的解决方法

    首先介绍下怎么使用PicGo 43 Typora 43 GitHub来搭建属于自己的图床 xff0c 后面介绍一下使用过程中可能产生的错误 本文主要参考下面两篇文章 xff1a PicGo图床与Typora xff08 PicGo 43 T
  • 【Python学习教程】Python编程基础

    文章目录 编程语言是什么编译型语言和解释型语言的区别编译型语言1 可执行程序不能跨平台2 源代码不能跨平台 解释型语言关于 Python总结 Python是什么 xff0c Python简介Python的特点 xff08 优点和缺点 xff
  • 【Python学习教程】Python编程环境搭建

    文章目录 Windows安装Python xff08 图解 xff09 关于 IDLE Linux xff08 Ubuntu xff09 系统安装Python更新 Python 版本重新安装 Python1 下载源代码2 编译 小技巧 Ma
  • 【Python学习教程】Python变量类型和运算符

    文章目录 Python变量的定义和使用Python 变量的赋值Python 变量的使用Python 是弱类型的语言 Python整数类型 xff08 int xff09 详解关于 Python 2 x整数的不同进制1 十进制形式2 二进制形
  • 【Python学习教程】Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解

    文章目录 什么是序列 xff0c Python序列详解 xff08 包括序列类型和常用操作 xff09 序列索引序列切片序列相加序列相乘检查元素是否包含在序列中和序列相关的内置函数 Python list列表详解Python创建列表1 使用
  • 手把手教用ROS做机器人控制(二)--加速度计与陀螺仪两种融合算法:mahony 互补滤波器算法与EKF算法

    对于加速计与陀螺仪融合 xff0c 介绍两种滤波算法 xff1a 他们的核心思想不太相同 xff0c 这两种方法现在也已经有了应用 xff0c 现在你可以发现互补滤波融合在无人机上 xff0c EKF我做过在平衡车上面 mathony主要思
  • 【Python学习教程】Python模块和包

    文章目录 什么是模块 xff0c Python模块化编程 xff08 入门必读 xff09 Python导入模块 xff0c Python import用法 xff08 超级详细 xff09 import 模块名 as 别名from 模块名
  • 【Python学习教程】Python字符串常用方法详解

    文章目录 Python字符串拼接 xff08 包含字符串拼接数字 xff09 Python字符串和数字的拼接str 和 repr 的区别 Python截取字符串 xff08 字符串切片 xff09 方法详解获取单个字符获取多个字符 xff0
  • 【Python学习教程】Python流程控制

    文章目录 Python if else条件语句详解if else 如何判断表达式是否成立 Python if else对缩进的要求不要忘记缩进缩进多少合适 xff1f 所有语句都要缩进同一代码块缩进量要相同不要随便缩进 Python if语
  • 【Python学习教程】Python函数和lambda表达式

    文章目录 Python函数 xff08 函数定义 函数调用 xff09 用法详解Python函数的定义Python函数的调用为函数提供说明文档 Python函数值传递和引用传递 xff08 包括形式参数和实际参数的区别 xff09 Pyth
  • 【Python学习教程】Python类和对象

    文章目录 什么是面向对象 xff0c Python面向对象 xff08 一切皆对象 xff09 面向对象相关术语 Python class xff1a 定义类 xff08 入门必读 xff09 Python类的定义 Python init
  • 最易学和最难学的编程语言Top 5

    文 白开水不加糖 出品 OSC开源社区 xff08 ID xff1a oschina2013 xff09 在线学习平台 Springboard 罗列了一个最容易学习和最难学的编程语言 Top 5 榜单 事实上 xff0c 问一个程序员最容易
  • 【Python学习教程】Python异常处理机制

    文章目录 什么是异常处理 xff0c Python常见异常类型 xff08 入门必读 xff09 Python语法错误Python运行时错误 Python异常处理机制到底有什么用 xff1f Python try except异常处理详解
  • 【NumPy教程】(快速入门版)

    文章目录 读者阅读条件 NumPy是什么NumPy使用需求NumPy应用场景 NumPy下载与安装Windows系统安装MacOSX系统安装Linux系统安装1 Ubuntu Debian2 Redhat CentOS NumPy ndar
  • Pillow(PIL)入门教程(非常详细)

    文章目录 相关资源 教程特点读者 amp 阅读条件 Pillow是什么Pillow版本支持Pillow库特点1 支持广泛的文件格式2 提供了丰富的功能3 配合GUI工具使用 Pillow的下载与安装pip包管理器安装二进制包安装Anacon
  • Tkinter教程

    文章目录 Tkinter教程 xff08 非常详细 xff09 教程特点阅读条件 GUI是什么GUI发展史GUI应用领域GUI的优势GUI开发工具 Tkinter是什么第一个Tkinter程序1 主窗口设置2 添加文本3 添加按钮4 独立运
  • 成功解决卡巴斯基6莫名其妙自动关闭的问题

    卡巴斯基6确实是个不错的杀毒工具 xff0c 但是安装好后 xff0c 会有个特别烦人的问题 xff0c 老是会提示错误 xff0c 然后自动关闭 xff0c 在网上查了一下 xff0c 终于找到了解决方案 解决步骤如下 xff1a 1 进
  • Tcl和Tk教程

    在Python Tkinter中 xff0c 重新了解到TCL和Tk 想起之前在做分子动力学模拟的时候 xff0c 有用到一个软件 xff0c 其命令行好像就是支持Tcl脚本 xff0c 当时对CS没那么了解 xff0c 所以也就没有深入了
  • Gromacs安装教程及一些思考

    写这篇博客目的当然不是只安装一下GROMAC xff0c 而是想借这个机会思考一下认知的问题 想起来刚上研究生的时候 xff0c 要在Linux服务器上安装这个软件 xff0c 当时费了好大劲 xff0c 各种求助师兄 xff0c 虽然安装