我对计算化学的探索——之复杂天然产物NMR和ECD计算程序安装
欢乐102
2023年11月11日 11:52

前言

复杂天然产物往往需要进行NMR和ECD的计算,为了便于计算,尽量减少计算操作,在反复多次的计算中,我们对脚本经历多次修改和测试,几乎接近自己心中的理想计算脚本,因此拿出来与大家分享交流。

本脚本及其配套的相关输入文件主要是在前人基础进行再次修改和创造作。

Molclus程序: http://bbs.keinsci.com/thread-577-1-1.html

Molclus配套的PBS作业提交脚本:http://bbs.keinsci.com/thread-15598-1-1.html

SVM-M复杂天然产物NMR计算:https://github.com/Anan-Wu-XMU/SVM-M

1.1天然产物NMR和ECD的基础

1.1软硬件基础

一台至少24核以上的linux系统的电脑和普通的win系统笔记本即可

笔者有两台计算电脑,一台24核2019年配置,一台16核2023年配置,分别安装Centos 7.6 和Centos 9 stream系统

配置如下:

处理器:AMD Ryzen™ 9 7950X 16-Core, 32-Thread Unlocked Desktop Processor

主板:GIGABYTE B650M AORUS Elite AX

处理器散热器:Cooler Master Hyper 212 Halo Black CPU Air Cooler

显卡:ASUS TUF GeForce RTX® 4090 OC Edition Gaming Graphics Card

内存:CORSAIR VENGEANCE DDR5 RAM 64GB (2x32GB) 5200MHz C40-40-40-77

硬盘:Seagate IronWolf Pro 8TB Enterprise NAS Internal HDD Hard Drive – CMR 3.5 Inch SATA 6Gb/s 7200 RPM 256MB Cache for RAID Network Attached Storage, Rescue Services - FFP (ST8000NTZ01)

电源:Seasonic FOCUS GX-1000

机箱:Corsair 4000D Airflow Tempered Glass Mid-Tower ATX PC Case – Black

1.2 制作Centos 7.6系统安装U盘

下载Centos 7.6文件https://www.centos.org/download/, 在Win中用ultroISO制作 CENTOS7.6的U盘

1.3 计算电脑硬盘的操作

用网上购买的Win系统U盘,插入计算电脑,开机按delte键,进入主板面板,不用设置主板的优先启动顺序,因为,安装好系统后还得再调回来,因此多次一举。在save &exit界面直接进入该U盘的系统。

一般网上买的系统U盘里面比较全面,会提供一个硬盘的分区,格式化软件,打开DiskGenius V4.9.3软件,对2T的机械硬盘删除分区,弄成空闲,以待安装centos7.6。

完成后,关机拔出U盘,待新系统装入。

1.4 计算电脑主板的操作

以上两个备齐,将制作的Centos 7.6的U盘插入24核电脑,开机按delete键,进入Centos 7.6 系统的安装界面。对于用ultro制作 Centos 7.6的U盘,容易路径不明,需要修改指定文件。对于用ultro制作 CENTOS Stream 9的U盘,路径不用修改指定文件。

然后具体的操作教程参考《VMware 15中安装CentOS 7.6 Linux系统的过程演示》:https://www.bilibili.com/video/BV1mt41167Uf/?spm_id_from=333.1007.tianma.1-1-1.click&vd_source=e38be56554d121c442bfbd0ddcadcc8c​

CentOS 7.6 Linux相关系统软件和数据库的选择如下

之后等待40分钟,安装完成,重启,拔出U盘,正常的话就进入系统了。

注意在分区时,我的16核电脑是8T硬盘,准备留2T以备其他用,在安装CentOS stream 9按照如下分区:

CentOS stream 9相关系统软件和数据库的选择如下

1.5 计算电脑centos7.6系统安装的操作

对centos7.6系统的设定

1.6 对CentOS stream 9系统的设定

注意,2023年的电脑,主板和CPU较新,装不上centos7.6

自此新系统安装完成,这是我探索两三个月的结果,生命在于折腾,尽量少折腾。

2 各种软件和数据包的安装

2.1 主机名的配置,在root用户下

修改以下希望显示的主机名

vi /etc/hostname 

vi /etc/hosts 

2.2 ssh无密码访问,在root用户下

yum install ssh

ssh-keygen -t rsa

在/root/目录下会新建一个.ssh文件夹,里面会生成公钥~/.ssh/id_rsa.pub和私钥~/.ssh/id_rsa。

每个节点上面分别执行公钥拷贝

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 700 ~/.ssh/authorized_keys

在root(132.239.116.81)用户下,将132.239.116.84的公钥考到root(132.239.116.81)用户下的钥匙中,将这个钥匙让两个计算机都用。

ssh 132.239.116.84 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys 132.239.116.84:~/.ssh/authorized_keys

直接ssh至各个计算机,对于centos已经不需要密码便可登录,而Ubuntu还需要,这是不同软件之间的毛病。

此外如果出现另一台机器更换系统,本台可以删除已有的钥匙,而从新添加的

ssh-keygen -R 132.239.116.84

3 对python的探索

3.1. 查看是否已经安装Python

CentOS 7.2 默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5。

使用 python -V 命令查看一下是否安装Python

然后使用命令 which python 查看一下Python可执行文件的位置

可见执行文件在/usr/bin/ 目录下,切换到该目录下执行  ll /usr/bin/python*  命令查看

python 指向的是python2.7

因为我们要安装python3版本,所以python要指向python3才行,目前还没有安装python3,先备份,备份之前先安装相关包,用于下载编译python3

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

不能忽略相关包,我之前就没有安装readline-devel导致执行python模式无法使用键盘的上下左右键;

然后备份

mv python python.bak

3.2.开始编译安装python3

去官网下载编译安装包或者直接执行以下命令下载

解压

tar -xvJf Python-3.7.12.tar.xz

切换进入

编译安装

./configure prefix=/usr/local/python37

make -j && make install

安装完毕,/usr/local/目录下就会有python3了

因此我们可以添加软链到执行目录下/usr/bin

ln -s /usr/local/python37/bin/python3 /usr/bin/python

可以看到软链创建完成

测试安装成功了没,执行

python -V 看看输出的是不是python3的版本

执行python2 -V 看到的就是python2的版本

3.3 修改相关文件

因为执行yum需要python2版本,所以我们还要修改yum的配置,执行:

vi /usr/bin/yum

#! /usr/bin/python修改为#​! /usr/bin/python2

同理 vi /usr/libexec/urlgrabber-ext-down 文件里面的#! /usr/bin/python 也要修改为#​! /usr/bin/python2

这样python3版本就安装完成;同时python2也存在

python -V  版本3

python2 -V 版本2

配置环境变量,执行vim /etc/profile,打开配置文件,添加如下配置:

vim /etc/profile 

编辑,在最后一行加上

PATH=/usr/local/python37/bin:$PATH

export PATH

3.4 卸载pyhton3

•             注意卸载的时候python后跟的2或3,若什么都不跟的话,会全部删除

rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps

删除所有残余文件

whereis python3 |xargs rm -frv

查看现有安装的python

whereis python

4. module的编译安装设置

4.1 module安装

sudo apt-get install environment-modules

对于Ubuntu,首先安装TCL

wget https://cfhcable.dl.sourceforge.net/project/tcl/Tcl/8.5.9/tcl8.5.9-src.tar.gz

tar -zxvf tcl8.5.9-src.tar.gz

cd tcl8.5.9/unix

./configure --prefix=/usr/local/tcl

make

make install

之后就OK拉

正常解压,进入解压包,

./configure

make -j

make

4.2 在环境变量.bashrc中加入

source /usr/local/Modules/init/bash

在/etc/profile中加入

source /usr/local/Modules/init/profile.sh

4.3 module 和python连用

vi /usr/local/Modules/modulefiles/python

vi /usr/local/Modules/modulefiles/intel

vi /usr/local/Modules/modulefiles/mkl

加入下面的东西

#%Module

set python_version 3.7.12

set python_home /usr/local/python37

proc ModulesHelp { } {

  puts stderr "Sets up the environment for Python $python_version"

}

module-whatis "Sets up the environment for Python $python_version"

setenv PYTHON_VERSION $python_version

prepend-path PATH $python_home/bin

prepend-path LD_LIBRARY_PATH $python_home/lib

4.4成功

注:mkdir -p /usr/local/Modules/modulefiles/python

vi /usr/local/Modules/modulefiles/python/python

ln -s /usr/local/tools/modules/init/profile.sh /etc/profile.d/module.sh

5 CentOS stream 9 上NVIDIA的安装

安装NVIDIA的安装是为了在GPU显卡上运行Gromacs。

5.1 禁用默认的驱动程序

首先查看默认的驱动程序

lsmod | grep nouveau

就会出来几行信息,接下来就是禁用这种默认的驱动程序,

vim /usr/lib/modprobe.d/dist-blacklist.conf  #编辑该文档

# blacklist nvidiafb #​注释该行

blacklist nouveau #添加此行

options nouveau modeset=0 #添加此行

保存退出此文档,编辑第二个文档

vi /etc/default/grub #编辑该文档

GRUB_CMDLINE_LINUX="crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/cs_tjgpu-swap rd.lvm.lv=cs_tjgpu/root rd.lvm.lv=cs_tjgpu/swap rhgb quiet rd.driver.blacklist=nouveau nouveau.modeset=0" #其中一行信息添加rd.driver.blacklist=nouveau nouveau.modeset=0,就是开机时按e键进行编辑的那个文档。

grub2-mkconfig -o /boot/grub2/grub.cfg #使修改生效

重启机器,如果未禁用默认显卡成功,

再运行如下命令,这些命令还不理解具体含义,尝试操作就行

mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak

dracut /boot/initramfs-$(uname -r).img $(uname -r)

systemctl set-default multi-user.target

重启,应该能够禁用成功,即使显示器连接机器,此时Linux的图形界面是没有的,只有命令行的界面。待所有软件安装成功,想要尝试图形界面的话,以下两个命令是开启和关闭图形界面的命令,可留存备用。

systemctl stop gdm.service

systemctl start gdm.service

再次运行lsmod | grep nouveau命令就没有信息弹出,说明禁用默认网卡成功。

5.2 NVIDIA驱动的安装

Win系统下下载最新的NVIDIA驱动NVIDIA-Linux-x86_64-525.116.04.run文件https://www.nvidia.com/download/driverResults.aspx/210649/en-us/,上传至Linux系统

chmod +x * #增加权限

./NVIDIA-Linux-x86_64-525.116.04.run

安装基础依赖

yum update

yum install kernel-devel kernel-headers -y

yum list | grep kernel-devel

查看kernel不一样的地方

rpm -qa | grep kernel

rpm -aq | grep kernel-devel 

将不一样的删除之

yum remove kernel-5.14.0-362.el9.x86_64

yum remove kernel-modules-core-5.14.0-362.el9.x86_64

如果不删除,即使指定路径也不行

ls /usr/src/kernels

./NVIDIA-Linux-x86_64-535.129.03.run \

 --kernel-source-path=/usr/src/kernels/5.14.0-378.el9.x86_64 

安装过程出现如下弹窗均是正常(图1-3):

图3感觉此处yes 或no均可,笔者选的yes。

还有一处弹窗询问是否需要安装32位兼容的数据库,笔者的liunx系统是64位,所以并未选择该选项,最后安装成功会有如下提示(图4): 

运行nvidia-smi命令会有如下提示(图5):(如果在计算过程中,每隔10s实时监测GPU使用情况,输入命令:watch -n 10 nvidia-smi) 

说明安装成功。对于新装的系统,--kernel内核是一致的,对于出现不一致的提示,按照网上教程修改即可(https://cloud.tencent.com/developer/article/1879466)。

虽然此时,NVIDIA的信息显示CUDA Version:12.0,但是机子上并没有真正有CUDA的功能,如果你去安装GPU加速版Gromacs2023.1并不成功,能成功的只是不加速的普通版。如果您不信,可以进行尝试,熟悉编译过程,此外也正好对比一下GPU加速版与普通版的速度差别。当你按照官方手册安装Gromacs2023.1时,在cmake步骤中不用-DGMX_GPU=CUDA(GPU加速)选项,也能顺利安装完成,此时查看版本信息,用命令gmx -version, 可以看到GPU support是disabled状态,说明是普通版(图6)。 

因此,想要实现GPU加速版Gromacs2023.1还需要进行额外CUDA的安装。

5.3 CUDA12.1安装

CUDA安装,笔者尝试CUDA11.3,11.4,11.7安装,虽然能够安装成功,但并不能成功编译GPU加速版Gromacs2023.1,Gromacs2022.5,其尝试的过程,在此就不再赘述了,如果您需要尝试,值得一试,说不定能编译成功,并且能迫使你去学习一些编译的相关命令。最终,笔者选择最新版的CUDA12.1进行安装,过程比较简单,去网页(https://developer.nvidia.com/cuda-downloads)下载最新的CUDA12.1, win 下载如下图7(https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=RHEL&target_version=9&target_type=rpm_local),选version 7, runfile (local)就行,version 7感觉像是给Centos 7用的,但是大胆尝试就行,这并不影响成功安装CUDA12.1和GPU加速版Gromacs2023.1。  

Liunx界面操作的话,进入一个你的常用目录,直接输入以下命令,

wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run

chmod +x *

./cuda_12.1.1_530.30.02_linux.run

安装过程会提示是否接受协议,输入accept进入下一步,还提示选择哪些需要安装的套件,由于Driver已经安装,因此,去掉此选项,按Enter键进行选择或不选择。进行安装,主要参考https://zhuanlan.zhihu.com/p/122286055。 

安装完成后屏幕提示设置环境变量:

vi ~/.bashrc

加入如下两行

export PATH="/usr/local/cuda-12.2/bin:$PATH"

export LD_LIBRARY_PATH="/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH"

重新加载环境变量,

source ~/.bashrc

查看CUDA12.1是否安装成功,弹出信息说明安装成功(图8)。

nvcc -V #注意要大写 

此信息说明安装完成。

6  CentOS stream 9安装GPU加速版Gromacs2023.1

Gromacs 2018.8的安装参考http://sobereva.com/457

6.1基础库文件FFTW的安装

Centos stream 9系统的cmake, gcc 和g++对于Gromacs2023.1都兼容,使用默认的就行,不用担心不兼容情况,最好不要刻意去更改。

FFTW库可以按照社长博文http://sobereva.com/457进行安装,笔者认为,FFTW库提前安装Gromacs2023.1并非必须的,因为官方安装指导原文https://manual.gromacs.org/current/install-guide/index.html指出在编译过程若需要会自动下载该库。笔者认为,对于如果硬件、系统、驱动、和软件都相对较新,这些库不用担心不兼容。

6.2 基础依赖cmake安装

下载https://cmake.org/download/

cmake软件包,解压,进入目录,用如下进行安装

./bootstrap --prefix=/usr --datadir=share/cmake --docdir=doc/cmake && make

make install

cmake -version

另一种安装方法

GROMACS 2018需要系统里有cmake 3.x才能编译。CentOS 7.6自带的cmake版本太老,因此需要先装cmake 3.x。

首先运行以下命令,添加EPEL源

yum install epel-release

然后在终端里输入yum install cmake3即可下载和安装cmake包,遇到提示的时候都输入y。之后输入cmake3 /V命令,如果显示出了3.x的版本号就说明没问题了。

注1:如果用yum的时候出现乱七八糟的提示安装不了,把操作系统重启一下往往就好了。

./bootstrap --prefix=/root/soft/cmake3 -- -DCMAKE_USE_OPENSSL=OFF

6.3安装GPU加速版Gromacs2023.1

可以用win系统下载Gromacs2023.1软件包,然后上传Linux,进行安装。

也可以Linux命令行进行下载,进入你的软件安装常用目录,在命令终端,复制粘贴以下命令:

wget https://ftp.gromacs.org/gromacs/gromacs-2023.1.tar.gz

tar xfz gromacs-2023.1.tar.gz

cd gromacs-2023.1

mkdir build

cd build

cmake  ..(上一级目录)    -DCMAKE_INSTALL_PREFIX=/sob/gmx_GPU_2023.1(指定你要安装到哪个文件夹里,若不指定会按照到默认目录里)        -DGMX_BUILD_OWN_FFTW=ON(是否用FFTW库) -DREGRESSIONTEST_DOWNLOAD=ON(如果需要自动下载功能)     -DGMX_SIMD=AVX2_256(512指令集)    -DGMX_GPU=CUDA(GPU加速)  -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.1(CUDA路径)

笔者安装了不同的版本

cmake .. -DCMAKE_INSTALL_PREFIX=/root/soft/gmx_GPU_2023.3 -DGMX_BUILD_OWN_FFTW=ON -DREGRESSIONTEST_DOWNLOAD=ON -DGMX_SIMD=AVX2_256 -DGMX_GPU=CUDA -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.3

cmake .. -DCMAKE_INSTALL_PREFIX=/root/soft/gmx_GPU_2022.6 -DGMX_BUILD_OWN_FFTW=ON -DREGRESSIONTEST_DOWNLOAD=ON -DGMX_SIMD=AVX2_256 -DGMX_GPU=CUDA -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.3

cmake .. -DCMAKE_INSTALL_PREFIX=/sob/gmx_GPU_2022.5 -DGMX_BUILD_OWN_FFTW=ON -DREGRESSIONTEST_DOWNLOAD=ON -DGMX_SIMD=AVX2_256 -DGMX_GPU=CUDA -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.1

cmake .. -DCMAKE_INSTALL_PREFIX=/sob/gmx2018.8 -DGMX_SIMD=AVX2_256

make

make check

make install

笔者在make时没有加-j,只用单核进行编译,大概花费20分钟左右完成安装,有兴趣的同学可以试试加-j,多核是否更快,应该也不会出现啥问题。安装完成,接下来添加环境变量吧。

vi ~/.bashrc

加入

#source /sob/gmx2023.1/bin/GMXRC     #笔者也安装了普通版,以进行按需更换,对比速度

export GMX_MAXBACKUP=-1                #运行之后对旧文件不进行备份,不产生带#​的文件

source /root/soft/gmx_GPU_2023.3/bin/GMXRC

重新加载环境变量source ~/.bashrc,

查看一下GPU加速版Gromacs2023.1信息, 用如下命令

gmx -version, 可以看到GPU support是CUDA状态,说明是GPU加速版(图9)。

7 xtb的安装参考http://sobereva.com/421

8 Molclus安装参考:http://bbs.keinsci.com/thread-577-1-1.html

9 gaussian安装参考:http://bbs.keinsci.com/thread-10814-1-1.html

10 ORCA 的安装参考:http://bbs.keinsci.com/forum.php?mod=viewthread&tid=11697&extra=page%3D1%26filter%3Dtypeid%26typeid%3D11%26digest%3D1

11 Multiwfn在Linux下安装的中文说明:http://bbs.keinsci.com/thread-40529-1-1.html

12 Shermo的安装参考:http://bbs.keinsci.com/thread-17494-1-1.html

13 Gaussian的安装方法及运行时的相关问题参考:http://bbs.keinsci.com/thread-10814-1-1.html

使用Gaussian时的几个实用脚本和命令http://sobereva.com/258

详谈Multiwfn的命令行方式运行和批量运行的方法http://sobereva.com/612

14 分享一下我的环境设置:

环境变量设置,在CentOS stream 9和centos7.6都一样,

export g16root=/root/soft

export GAUSS_SCRDIR=/root/soft/g16/scratch

source /root/soft/g16/bsd/g16.profile

export PGI_FASTMATH_CPU=sandybridge

source /usr/local/Modules/init/bash

export PATH=$PATH:/root/svm

#source /root/soft/gmx_GPU_2023.3/bin/GMXRC

source /root/soft/gmx2018.8/bin/GMXRC

export GMX_MAXBACKUP=-1 

export PATH=$PATH:/root/soft/xtb/bin

export XTBPATH=/root/soft/xtb/share/xtb

export OMP_NUM_THREADS=12

export MKL_NUM_THREADS=12

export OMP_STACKSIZE=1000m

ulimit -s unlimited

#ORCA

export PATH=$PATH:/root/soft/openmpi411/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/soft/openmpi411/lib

export PATH=$PATH:/root/soft/orca504

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/soft/orca504

alias orca='/root/soft/orca504/orca'

export OMPI_ALLOW_RUN_AS_ROOT=1

export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1

export PATH=$PATH:/root/soft/Shermo_2.4

export Shermopath=/root/soft/Shermo_2.4

ulimit -s unlimited

export OMP_STACKSIZE=2000M

export Multiwfnpath=/root/soft/Multiwfn_3.8_dev_bin_Linux

export PATH=$PATH:/root/soft/Multiwfn_3.8_dev_bin_Linux

15 总结

经过两三个月的系统和软件的探索,期间也因为装不上软件绝望过,试了千百种方法,还是装不上,有些方法对有些人适合,成功的装上了,而在我的电脑上就是装不上。你只能忍受,就像忍受所有的厄运一样。他无所不在,这操蛋的岁月。时间真他妈残酷,岁月并不长久,所有生命里想留也留不住,终会失去的东西都是珍宝,哪怕琐碎,哪怕曾经以为不值一提。

千辛万苦踏遍万水千山,试过万行代码,苦尽甘来,终于折腾到了一个目前较为满意的状态,别人都爱玩游戏,而我经常枯坐电脑前所搞的是计算化学,能够成功搞成以上操作,我感觉就像打游戏我也是个厉害人物一样,内心里成就感满满,这也是我踏入计算化学5年来的小小总结,期间得到很多人的帮助,真诚的感谢大家。希望大家都能找到心中的桃花源。