目录

通过命令行方式手动提交QuantumATK计算

串行计算

在Linux单机上安装好并行环境后,可以直接通过交互式命令来并行计算:

#假设ATK安装路径为[atk_installdir]
[atk_installdir]/bin/atkpython input.py | tee log

在 Linux 并行计算

在Linux单机上安装好并行环境后,可以直接通过交互式命令来并行计算:

#假设ATK安装路径为[atk_installdir]
[atk_installdir]/mpi/bin/mpiexec -n 4 [atk_installdir]/bin/atkpython input.py | tee log

注意

  • 在单机上使用MPI并行可能和MKL的多线程并行互相干扰,降低并行效率。应使用环境变量 MKL_NUM_THREADS=1 MKL_DYNAMIC=FALSE 将动态多线程功能关闭。
  • 大型HPC服务器上的并行计算效率与机器的配置和管理方式强烈相关,用户应当与HPC管理员和技术人员协商如何进行提交脚本的设置。

在Linux计算机集群上并行计算

并行提交脚本设置

以下是几个典型的提交脚本示例,用户需要根据实际情况修改。调试成功后,应对实际安装的系统进行一些测试计算以得到最佳的运行方案。

PBS

atk.pbs
#!/bin/bash
## 下载调试此脚本应将中文注释删去,否则可能会有兼容性问题
##
## 提交任务的名称
#PBS -N atktest
## 根据系统提供的队列名设置(这里是low)
#PBS -q low
## 请求计算资源(示例为请求4个节点,每节点20个核)
#PBS -l nodes=4:ppn=20
## 导出环境变量
#PBS -V
## 将out和err合并输出
#PBS -j oe
 
##---------------------------------------------------------
## 设置输入文件的名称(不写.py)
SCRIPT=atktest
##---------------------------------------------------------
 
##修改路径以适配系统
##假设ATK安装路径为[atk_installdir]
ATK_BIN_DIR=[atk_installdir]/QuantumATK-2022.12/bin/atkpython
 
## 为适配HPC硬件并正确使用并行网络 mpiexec.hydra可能需要带一些参数,请咨询HPC硬件或服务商
MPI_DIR=[atk_installdir]/QuantumATK-2022.12/mpi/bin/mpiexec
 
## 通知计算时需要访问的License server所在位置或自动搜索
export SNPSLMD_LICENSE_FILE="27020@管理节点主机名或IP"
 
## 将启动的MPI进程总数为NP
NP=$( sort $PBS_NODEFILE | wc -l )
 
## 关闭MKL的OpenMP线程
export OMP_NUM_THREADS=1
export MKL_NUM_THREADS=1
export MKL_DYNAMIC=FALSE
 
 
## 并行计算命令
cd $PBS_O_WORKDIR
$MPI_DIR -n $NP $ATK_BIN_DIR ${SCRIPT}.py > ${SCRIPT}.out

LSF

atk.lsf
#!/bin/sh
#BSUB -q hpc_q
## LSF经常在这里指定所使用的的MPI,最后不需要直接写出mpirun命令
## 也可以使用QATK自带的Intel MPI版本,具体如何修改脚本请咨询HPC管理员
#BSUB -a intelmpi  
#BSUB -n 12
#BSUB -o output.%J
#BSUB -e error.%J
#BSUB -R "span[ptile=12]"
 
##---------------------------------------------------------
## 设置输入文件的名称(不写.py)
SCRIPT=atktest
##---------------------------------------------------------
 
##修改路径以适配系统
##假设ATK安装路径为[atk_installdir]
ATK_BIN_DIR=[atk_installdir]/QuantumATK-2022.12/bin/atkpython
## QATK自带的MPI,用户应测试使用这个还是HPC安装的其他MPI(仅支持MPICH和Intel MPI)
MPI_DIR=[atk_installdir]/QuantumATK-2022.12/mpi/bin/mpiexec
 
## 通知计算时需要访问的License server所在位置或自动搜索
export SNPSLMD_LICENSE_FILE="27020@管理节点主机名或IP"
 
## 并行计算命令
## 使用QATK自带MPI时
## $MPI_DIR -n $NP $ATK_BIN_DIR $SCRIPT > $.out
## 使用HPC的MPI时
$ATK_BIN_DIR ${SCRIPT}.py > ${SCRIPT}.out

SLURM

atk.srp
#!/bin/bash
#SBATCH -J test
#SBATCH -p test
#SBATCH --tasks=8   
#SBATCH --cpus-per-task=7  
#SBATCH -N 2    
#SBATCH -o test-%j.out
#SBATCH -e test-%j.err
#SBATCH --no-requeue
#SBATCH --tasks-per-node=4 
#SBATCH --ntasks-per-socket=2 
#SBATCH --export=ALL
 
##---------------------------------------------------------
## 设置输入文件的名称
SCRIPT=atktest.py
##---------------------------------------------------------
 
##修改路径以适配系统
##假设ATK安装路径为[atk_installdir]
ATK_BIN_DIR=[atk_installdir]/QuantumATK-2022.12/bin/atkpython
## 为适配HPC硬件并正确使用并行网络 mpiexec可能需要带一些参数,请咨询HPC硬件或服务商
MPI_DIR=[atk_installdir]/QuantumATK-2022.12/mpi/bin/mpiexec
 
## 通知计算时需要访问的License server所在位置或自动搜索
export SNPSLMD_LICENSE_FILE="27020@管理节点主机名或IP"
 
## 并行计算命令
$MPI_DIR -n $NP $ATK_BIN_DIR $SCRIPT > $.out