写在前面的话

本页内容的设置是建立在大家能通过ssh连接到咱们一楼服务器的基础上展开的一些描述和记录,我已经将前期讲的视频和所有人分享的安装文件和安装教程都分享在“华晨宇”的百度网盘上了(具体在rzLab文件夹内),对于组内新来的小伙伴可能不太友好,但是“华晨宇”的百度网盘已经沦为我们组的通用网盘了,大家可以去找他要一个。

1 软件安装教程

1.1 已装好的依赖和软件

nvidia driver,cuda,gcc,g++,openmpi etc.

1.2 一些基本知识

1.2.1 补充和更新一些依赖
1
2
3
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt-get install build-essential

build-essential(包含一些基本的库和依赖,默认有gcc,openmpi等等,但是没有g++,所以通过这个命令安装就非常便捷)

1.3 galamost 安装

1.3.1 Requirement
  • Python >=2.6
  • Boost library >=1.53.0
  • NVIDIA CUDA Toolkit >= 7.0
  • MPI(MVAPICH2 >= 2.3 or OpenMPI >= 4.0.0)
1.3.2 Preinstallation
1.3.2.1 Python

1.3.2.2 Boost
1
$sudo apt-get install libboost-all-dev

测试文件(test.cpp)

1
2
3
4
5
6
7
8
9
10
11
#include <boost/lexical_cast.hpp>
#include <iostream>
int main()
{
using boost::lexical_cast;
int a = lexical_cast<int>("123");
double b = lexical_cast<double>("123.12");
std::cout<<a<<std::endl;
std::cout<<b<<std::endl;
return 0;
}

运行test.cpp测试

1
$g++ test.cpp -o test.out

执行test.out

1
$ ./test.out
1.3.2.3 openmpi的安装
1
2
3
4
5
6
7
$ sudo apt-get install openmpi-bin openmpi-doc libopenmpi-dev

装好后查询版本
$ mpirun --version
mpirun (Open MPI) 1.10.2
$ mpiexec --version
mpiexec (OpenRTE) 1.10.2
1.3.3 Installation
1
2
$cd path_to_galamost/src
$./configure --prefix=path_to_your_location
1
2
$sudo make install -j20 
$make install
1.3.4 Setting env_variables
1
2
3
$vim ~/.bashrc
export PATH=path_to_your_location/bin:$PATH
$source ~/.bashrc 或者 重开一个终端
1.3.5 测试

1.4 gaussian安装

解压文件:

1
$tar -jxvf gaosi09-A01_em64L.tar.bz2

添加环境变量:

1
2
3
export g09root=/home/gy/software/g09:$g09root
export GAUSS_SCRDIR=/home/gy/software/g09/tmp
source /home/gy/software/g09/bsd/g09.profile

在g09目录下新建Default.Route文件并写入:

1
2
-M- 10GB
-P- 8

切换到g09目录下运行:

1
$chmod 750 -R *

运行gaussian(可在任意路径):

1
$g09 test.gjf

Reference: Gaussian的安装方法及运行时的相关问题

1.5 gaussview安装

解压文件:

1
$unzip gv.zip

添加环境变量:

1
export PATH=path_to_your_location:$PATH

(添加完后可利用alias用法,将一个长串的名字alias成自己想要的短命令,e.g. alias gv=‘gview.exe’)

1.6 Lammps安装

conda环境依赖安装:

1
2
$conda config --add channels conda-forge
$conda install lammps

手动安装:

1
详见黄崇洋、宋子辰提供的文档

此处感谢黄崇洋、宋子辰提供的文档!

1.7 HOOMD-blue安装

含三体势的HOOMD-blue2.x版本的安装:

1
2
3
4
5
6
7
8
$conda install -c conda-forge sphinx git openmpi numpy cmake
$cd hoomd-blue
$mkdir build
$cd build
$cmake ../ -DCMAKE_INSTALL_PREFIX=`python3 -c "import site; print(site.getsitepackages()[0])"`
$cmake ../ -DCMAKE_INSTALL_PREFIX=`python3 -c "import site; print(site.getsitepackages()[0])"` -DCMAKE_CXX_FLAGS=-march=native -DCMAKE_C_FLAGS=-march=native -DENABLE_CUDA=ON -DENABLE_MPI=ON
$make -j20
$make install

(p.s. 1. -DCMAKE_INSTALL_PREFIX= 这里完全可以定义成你自己想装的路径)
(p.s. 2. 如果有地方导致安装失败,请记得进入build/目录,make clean一下,再删除build/下的所有文件)
(p.s. 3. 此处为HOOMD-blue安装的简化版,详见罗煜林提供的文档,非常感谢她提供的文档!)
含三体势的HOOMD-blue3.x版本的安装:

1
conda install -c conda-forge hoomd

含三体势的HOOMD-blue3.x-beta安装:

1
$conda install -c conda-forge/label/hoomd_dev -c conda-forge hoomd

GPU版本的安装:

1
$conda install -c conda-forge hoomd=*=*gpu*

详见HOOMD-blue

2 服务器一些常见使用

2.0 请大家在拿到账号前,先安装好conda:

1
$sh Anaconda*.sh

2.1 禁用conda

1
$conda config --set auto_activate_base false

(打开只需要把false改成true就行了)

2.2 使用GPU注意事项

使用GPU干活的时候,请一定先提前用nvidia-smi命令看看哪块GPU是空闲的,当然你也可以简单的使用qwe或者gpu命令,但是请注意这两者是不同的,对于咱们课题组来说,运行的有galamost、hoomd、lammps或者其他需要GPU脚本,而qwe或者gpu命令只能识别galamost、hoomd脚本,不能识别lammps或者其他需要用到GPU的脚本,所以如果你想真正看到哪些GPU被占用了,请使用nvidia-smi命令。

另外请大家多多检查自己的任务是否被正确kill掉,如果没有,请:

1
$kill+PID

这个的PID指的是你的任务号,用nvidia-smi命令即可看到。

2.3 设置galamost

如果你想使用S1、G1、G2中的galamost,只需要在你个人的环境变量中添加:

1
export PATH=/opt/galamost4/bin:$PATH

(待补事项,全局的HOOMD-blue、LAMMPS的安装,以便让大家直接调用)

2.4 把任务放到后台

1
$nohup *** > *** &

nohup = no hang up

第一个***表示你的任务

第二个***表示你想输出到哪个文件中

例如:

1
$nohup python test.py > data.log &

当然,这还有另外一种用法:

1
$nohup python test.py 1>data.log 2>err.log &

这命令表示,提交test.py脚本到后端运行,且把输出文件输出到data.log,如果程序运行失败,那么把报错信息输出到err.log文件中。

2.5 wait命令的使用

我现在面对的只有一块GPU可以用,但是有两个任务要跑,如果让这两个任务同时在这个GPU上面运行的话,效率会非常低,这时候就要用到wait命令了。举例如下:
新建一个python文件为run.py,写入以下内容:

1
2
3
4
5
6
7
8
9
import os

os.chdir(r'path_to_your_script1')
os.system('nohup python3 test1.py --gpu=1 1>data.log 2>err.log &')

os.system("wait")

os.chdir(r'path_to_your_script2')
os.system('nohup python3 test2.py --gpu=1 1>data.log 2>err.log &')

其中os.chdir表示你要更改到哪个路径下去运行命令,os.system表示你要运行什么命令,所以整个脚本就表示只有等待test1.py运行完之后,才能运行test2.py

当然你可以用bash脚本去写,写入以下信息到run.sh文件中:

1
2
3
4
5
6
7
8
9
#!/bin/bash

cd path_to_your_script1
nohup python3 test1.py --gpu=1 1>data.log 2>err.log &

wait

cd path_to_your_script2
nohup python3 test2.py --gpu=1 1>data.log 2>err.log &

至于python脚本和bash脚本的差别,想必大家仔细比对一下便知。

2.6 一些linux或者shell的使用(vim等)

可以参见这里,不再累赘。

2.7 cuda的设定

S1(3080ti)的服务器cuda有装3个版本(10.2, 11.4, 11.5),如果你有依赖cuda版本安装的软件,可以在环境变量中设置:

1
2
export PATH=/usr/local/cuda-10.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH

需要用哪个版本,取决于你自己,比如我想用11.4的版本,只需要将上面两行中的10.2改成11.4即可。

而G1和G2就只有一个cuda11.5的版本。

3 该文档整理会长期更新在此页面