用户工具

站点工具


atk:通过命令行方式手动提交quantumatk计算

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
atk:通过命令行方式手动提交quantumatk计算 [2018/05/23 21:39] – [在Linux单机上并行计算] fermiatk:通过命令行方式手动提交quantumatk计算 [2023/09/03 16:23] (当前版本) – [并行提交脚本设置] fermi
行 1: 行 1:
 ====== 通过命令行方式手动提交QuantumATK计算 ====== ====== 通过命令行方式手动提交QuantumATK计算 ======
  
-===== 运行串行计算 =====+===== 串行计算 =====
 在Linux单机上安装好并行环境后,可以直接通过交互式命令来并行计算: 在Linux单机上安装好并行环境后,可以直接通过交互式命令来并行计算:
 <code bash> <code bash>
-atkpython input.py | tee log+#假设ATK安装路径为[atk_installdir] 
 +[atk_installdir]/bin/atkpython input.py | tee log
 </code> </code>
  
-===== 在Linux单机上并行计算 =====+===== 在 Linux 并行计算 =====
 在Linux单机上安装好并行环境后,可以直接通过交互式命令来并行计算: 在Linux单机上安装好并行环境后,可以直接通过交互式命令来并行计算:
 <code bash> <code bash>
 #假设ATK安装路径为[atk_installdir] #假设ATK安装路径为[atk_installdir]
-[atk_installdir]/libexec/mpiexec.hydra -n 4 [atk_installdir]/bin/atkpython input.py | tee log+[atk_installdir]/mpi/bin/mpiexec -n 4 [atk_installdir]/bin/atkpython input.py | tee log
  
 </code> </code>
行 18: 行 19:
 === 注意 === === 注意 ===
   * 在单机上使用MPI并行可能和MKL的多线程并行互相干扰,降低并行效率。应使用环境变量 MKL_NUM_THREADS=1 MKL_DYNAMIC=FALSE 将动态多线程功能关闭。   * 在单机上使用MPI并行可能和MKL的多线程并行互相干扰,降低并行效率。应使用环境变量 MKL_NUM_THREADS=1 MKL_DYNAMIC=FALSE 将动态多线程功能关闭。
-  * 2017版本以后,QuantumATK使用内置Intel MPI并行,可更好的管理同时使MPI多进程MKL多线程并,敬请测试+  * 大型HPC服务器上的并行计算效率与机器配置和管理方式强烈相关,户应当与HPC管理员技术人员协商如何进提交脚本的设置
 </WRAP> </WRAP>
 ===== 在Linux计算机集群上并行计算 ===== ===== 在Linux计算机集群上并行计算 =====
  
 ==== 并行提交脚本设置 ==== ==== 并行提交脚本设置 ====
-以下是个典型的PBS提交脚本,用户根据实际情况修改使用用户应对实际安装的系统进行一些测试计算以得到最佳的运行方案。+ 
 +以下是个典型的提交脚本示例,用户需要根据实际情况修改。调试成功后,应对实际安装的系统进行一些测试计算以得到最佳的运行方案。 
 + 
 +=== PBS === 
 <file bash atk.pbs> <file bash atk.pbs>
 #!/bin/bash #!/bin/bash
行 40: 行 45:
  
 ##--------------------------------------------------------- ##---------------------------------------------------------
-## 设置输入文件的名称 +## 设置输入文件的名称(不写.py) 
-SCRIPT=atktest.py+SCRIPT=atktest
 ##--------------------------------------------------------- ##---------------------------------------------------------
  
 ##修改路径以适配系统 ##修改路径以适配系统
-ATK_BIN_DIR=/your/route/to/QuantumWise/VNL-ATK-2014.2/bin/ +##假设ATK安装路径为[atk_installdir] 
-MPI_DIR=/your/route/to/mpich-3.1.4/ +ATK_BIN_DIR=[atk_installdir]/QuantumATK-2022.12/bin/atkpython 
-export LD_LIBRARY_PATH=$MPI_DIR/lib:$LD_LIBRARY_PATH + 
-export PATH=$MPI_DIR/bin:$PATH+## 为适配HPC硬件并正确使用并行网络 mpiexec.hydra可能需要带一些参数,请咨询HPC硬件或服务商 
 +MPI_DIR=[atk_installdir]/QuantumATK-2022.12/mpi/bin/mpiexec
  
 ## 通知计算时需要访问的License server所在位置或自动搜索 ## 通知计算时需要访问的License server所在位置或自动搜索
-export QUANTUM_LICENSE_PATH="6200@管理节点主机名或IP"+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 cd $PBS_O_WORKDIR
 +$MPI_DIR -n $NP $ATK_BIN_DIR ${SCRIPT}.py > ${SCRIPT}.out
  
-#创建hostfile +</file>
-cat $PBS_NODEFILE hostile.$PBS_JOBID+
  
-echo ------------------------------------------------------ +=== LSF ===
-echo 'Job is running on node(s): ' +
-cat hostile.$PBS_JOBID +
-echo ------------------------------------------------------ +
-echo PBS: qsub is running on $PBS_O_HOST +
-echo PBS: originating queue is $PBS_O_QUEUE +
-echo PBS: executing queue is $PBS_QUEUE +
-echo PBS: execution mode is $PBS_ENVIRONMENT +
-echo PBS: current home directory is $PBS_O_HOME +
-echo PBS: working directory is $PBS_O_WORKDIR +
-echo PBS: job name is $PBS_JOBNAME +
-echo PBS: job identifier is $PBS_JOBID +
-echo PBS: PATH $PBS_O_PATH +
-echo PBS: node file is $PBS_NODEFILE +
-echo ------------------------------------------------------+
  
-############################################################# 
-## 三种并行方案,使用时选择一种,并去掉相应的“# 
-############################################################# 
  
-## 方案 1: 每计算核心上安排一个MPI进程(适于小系计算)+<file bash 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]"
  
-## 将启动的MPI进程总数为NP +##--------------------------------------------------------- 
-#NP=$( sort $PBS_NODEFILE | wc -l )+## 设置输入文件的名称(不写.py) 
 +SCRIPT=atktest 
 +##---------------------------------------------------------
  
-## 每个节点上分配的MPI进程数需要Linux支持bc计算器命令) +##修改路径以适系统 
-#N_PER_NODE=`$( sort $PBS_NODEFILE | wc -l ) $( sort $PBS_NODEFILE | uniq | wc -l ) |bc`+##假设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
  
-## 关闭MKLOpenMP线程 +## 通知计算时需要访问License server所在位置或自动搜索 
-#export OMP_NUM_THREADS=+export SNPSLMD_LICENSE_FILE="27020@管理节点主机名或IP"
-#export MKL_NUM_THREADS=1 +
-#export MKL_DYNAMIC=FALSE+
  
-## 方案 2: 每路CPU上安排一个MPI进程,适用于中等体系计算 +## 并行计算命令 
-## 例如:在开头资源请求行设置4个节点,假设每个节点有二路CPU,则:+## 使用QATK自带MPI时 
 +## $MPI_DIR -n $NP $ATK_BIN_DIR $SCRIPT > $.out 
 +## 使用HPCMPI时 
 +$ATK_BIN_DIR ${SCRIPT}.py > ${SCRIPT}.out
  
-## 总MPI进程数NP +</file>
-#NP=8+
  
-## 每个节点上MPI进程数(每个节点上的CPU数)N_PER_NODE +=== SLURM ===
-#N_PER_NODE=2+
  
-## 默认使用OpenMP 
  
-## 方案 3: 每个节点一个MPI进程,适用于超大体系计算+<file bash 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
  
-##  总MPI进程数NP +##--------------------------------------------------------- 
-#NP=$( sort $PBS_NODEFILE | uniq | wc -l )+## 设置输入文件的名称 
 +SCRIPT=atktest.py 
 +##---------------------------------------------------------
  
-##  每个节点上一个进程 +##修改路径以适配系统 
-#N_PER_NODE=1+##假设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
  
-##  默认使用OpenMP+## 通知计算时需要访问的License server所在位置或自动搜索 
 +export SNPSLMD_LICENSE_FILE="27020@管理节点主机名或IP"
  
 ## 并行计算命令 ## 并行计算命令
-$MPI_DIR/bin/mpirun -ppn $N_PER_NODE -np $NP -f hostfile.$PBS_JOBID $ATK_BIN_DIR/atkpython $SCRIPT > ${PBS_JOBNAME}.out+$MPI_DIR -$NP $ATK_BIN_DIR $SCRIPT > $.out
  
 </file> </file>
-==== 正确选择并行网络 ==== 
  
-目前主流的计算机集群都配备了InfiniBand(IB)高速网络用于节点间并行的高速数据交换,用户应选择IB网络进行并行。 
- 
-<WRAP center important 100%> 
-==== 注意 ==== 
-与OpenMPI不同,MPICH和Intel MPI可能不会自动选择IB网络,敬请留意。 
-</WRAP> 
- 
-<WRAP center important 100%> 
-==== 说明 ==== 
-以上脚本的修改需要根据具体的集群hosts文件中的主机名规律进行调试。 
-</WRAP> 
  
atk/通过命令行方式手动提交quantumatk计算.1527082766.txt.gz · 最后更改: 2018/05/23 21:39 由 fermi

© 2014-2022 费米科技(京ICP备14023855号