常用科学计算软件使用

平台上已安装常用应用软件,平台使用Environment Modules以模块的形式对环境变量进行管理。在高性能计算集群系统中,安装有多种软件及其不同版本,它们需要设置不同的环境变量,Environment Module可以将这些环境变量做成模块文件(modulefile)。模块可以被加载(load)、卸载(unload)、切换(switch)等,这些操作会改变相应的环境变量设置,让用户方便的在不同环境之间切换

以下列出module常用的一些命令:

module help       # 显示帮助信息

module avail      # 显示已经安装的软件环境

module load       # 导入相应的软件环境

module unload     # 删除相应的软件环境

module list       # 列出已经导入的软件环境

module purge      # 清除所有已经导入的软件环境

module switch [mod1] mod2# 删除mod1并导入mod2

以下是module使用示例:

查看集群现有软件库:

module avail

查看集群可用的intel版本:

module avail intel

导入intel/2017u5软件环境:

module load intel/2017u5

清除所有通过module导入的软件环境:

module purge


GNU编译器套件

GCCGNU Compiler CollectionGNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括CC++Objective-CFortranJavaAdaGo语言前端,也包括了这些语言的库(如libstdc++libgcj等)。

GCC使用方法如下:平台上安装了多个版本的gcc,可以直接通过module加载使用;加载gcc编译器代码如下:

module load gcc/7.3.0


VASP

VASP是维也纳大学Hafner小组开发的进行电子结构计算和量子力学-分子动力学模拟软件包。它是目前材料模拟和计算物质科学研究中最流行的商用软件之一。

VASP提交作业步骤如下:

1.创建工作目录

2.通过xftp传输工具将(INCARKPOINTSPOSCARPOTCAR等文件传输到该目录下。

3.使用vi、vim等编译器在该目录下编写slurm脚本。

4.下面slurm脚本以vasp5.4.4为例。

作业脚本名称可以自定义,内容如下:

#!/bin/bash

#SBATCH -J test                                                        #作业名称

#SBATCH -p cpu                                                       #队列名称

#SBATCH -n 64                                                         #作业使用核数

#SBATCH --error=%J.err                                         #作业错误输出

#SBATCH --output=%J.out                                     #作业日志输出

module load intel/2017u5 vasp/5.4.4                #加载 intelvasp5.4.4 环境

mpirun -np 64 vasp_std                                        #vasp 运行命令,-np 数值需要和上面-n 数值一致

scontrol show job $SLURM_JOBID                      #作业信息输出

5.使用sbatch命令+作业脚本文件名称提交作业。例:sbatch vasp.sh

若提示作业ID则代表作业提交成功,使用squeue命令可查看作业状态。作业计算完成后使用xftp将作业结果从服务器上下载到本地。


Gromacs

Gromacs是用于研究生物分子体系的分子动力学程序包。它可以用分子动力学、随机动力学或者路径积分方法模拟溶液或晶体中的任意分子,进行分子能量的最小化,分析构象等。同时它是一个功能强大的分子动力学的模拟软件,其在模拟大量分子系统的牛顿运动方面具有极大的优势。它的模拟程序包包含Gromacs力场(蛋白质、核苷酸、糖等),研究的范围可以包括玻璃和液晶、到聚合物、晶体和生物分子溶液。

Gromacs提交作业步骤如下:

1.创建工作目录

mkdir gromacsJob1

cd gromacsJob1

2.将运行gromacs需要的相关文件上传到该文件夹下

3.在该文件夹下编写作业脚本,并命名为gromacs.sh,脚本内容如下:

#!/bin/bash

#SBATCH -J test

#SBATCH -p cpu

#SBATCH -n 64 

#SBATCH --error=%J.err

#SBATCH --output=%J.out

module load gcc/7.3.0

module load openmpi/3.1.1

/gpfs/share/software/gromacs/2021.3_gpu/gcc_7.2.0/opempi_3.1.3/bin/GMXRC.bash

mpirun -np 48  /gpfs/share/software/gromacs/2021.3_gpu/gcc_7.2.0/opempi_3.1.3/bin/gmx_mpi mdrun -deffnm md1-cluster0 -dlb yes

4.提交作业

sbatch gromacs.sh


Fluent

FLUENT是用于模拟具有复杂外形的流体流动以及热传导的计算机程序。它提供了完全的网格灵活性,用户可以使用非结构网格,例如二维三角形或四边形网格、三维四面体/六面体/金字塔形网格来解决具有复杂外形的流动,甚至可以使用混合型非结构网格。软件允许用户根据解的具体情况对网格进行修改(细化/粗化)。

fluent作业运行步骤如下:

1.通过xftp上传执行fluent程序需要的文件(.cas .dat.cas.dat后缀文件的名字自定义。

2.编写fluent.jou文件。

.jou文件是fluent的脚本文件,fluent.jou文件需要单独编写。

以下是fluent.jou脚本编写框架:

fluent分瞬态和稳态

稳态的fluent.jou写法:

/file/read-case C-10.cas                             ###算例输入文件###

/file/read-data C-10.dat                             ###算例输入文件###

/solve/iterate 1000                                     ###算例跑多少步,根据实际情况改步数###

exit

yes

瞬态fluent.jou写法:

/file/read-case C-10.cas                              ###算例输入文件###

/file/read-data C-10.dat                              ###算例输入文件###

/file/auto-save/data-frequency 500          ###算例500步自动保存一次,根据实际情况改保存步数###

/solve/set/time-step 0.0001                       ###算例步长为0.0001,根据实际情况改###

/solve/dual-time-iterate 50000 80            ###算例总共跑50000步,每步迭代80###

exit

yes

3.编写slurm脚本文件:

#!/bin/bash

#SBATCH -J test

#SBATCH -p cpu

#SBATCH -n 64 

#SBATCH --error=%J.err

#SBATCH --output=%J.out

srun -n 64 hostname -s > hostlist               ###将主机名写到hostlist文件,给fluent调用

/fs0/software/ansys/17.1/v171/fluent/bin/fluent -ssh -g 3ddp -t64 -cnf=hostlist -mpi=intel -i fluent.jou

参数释义:

-g       run without GUI or graphics(无需图形或图形即可运行)

-t<x>     specify number of processors <x>(指定处理器数量)

-cnf=<x>   specify the hosts file(指定主机文件)

-mpi=<mpi>  specify MPI implementation; <mpi>={openmpi | intel | ...} (指定 MPI 实现)

-i=<journal> read the specified journal file(读取指定的日志文件)

维度和精度: 2d(2维单精度)2ddp(2维双精度)3d(3维单精度)3ddp(3维双精度)


Lammps

主要用于分子动力学相关的一些计算和模拟工作,一般来讲,分子动力学所涉及到的领域,LAMMPS代码也都涉及到了

lammps作业运行脚本示例:

#!/bin/bash

#SBATCH -J test

#SBATCH -p cpu

#SBATCH -n 64

#SBATCH --error=%J.err

#SBATCH --output=%J.out

module load intel/2017u5                    #加载intel环境变量

module load lammps/7Aug19             #调用lammps环境变量

mpirun -np 64 lmp_mpi < in.cutting

scontrol show job $SLURM_JOBID

提交作业:

sbatch lammps.job