这是本文档旧的修订版!
在Linux单机上安装好并行环境后,可以直接通过交互式命令来并行计算:
#假设ATK安装路径为[atk_installdir] [atk_installdir]/bin/atkpython input.py | tee log
在Linux单机上安装好并行环境后,可以直接通过交互式命令来并行计算:
#假设ATK安装路径为[atk_installdir] [atk_installdir]/mpi/bin/mpiexec -n 4 [atk_installdir]/bin/atkpython input.py | tee log
以下是一个典型的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 ##--------------------------------------------------------- ## 设置输入文件的名称 SCRIPT=atktest.py ##--------------------------------------------------------- ##修改路径以适配系统 ##假设ATK安装路径为[atk_installdir] ATK_BIN_DIR=[atk_installdir]/QuantumATK-2022.12/bin/atkpython ## 为适配HPC硬件并正确使用并行网络 mpiexec.hydra可能需要带一些参数,请咨询HPC硬件提供商 MPI_DIR=[atk_installdir]/QuantumATK-202.12/mpi/bin/mpiexec ## 通知计算时需要访问的License server所在位置或自动搜索 export SNPSLMD_LICENSE_FILE="27020@管理节点主机名或IP" cd $PBS_O_WORKDIR echo ------------------------------------------------------ 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 ------------------------------------------------------ ## 将启动的MPI进程总数为NP NP=$( sort $PBS_NODEFILE | wc -l ) ## 关闭MKL的OpenMP线程 export OMP_NUM_THREADS=1 export MKL_NUM_THREADS=1 export MKL_DYNAMIC=FALSE ## 并行计算命令 $MPI_DIR -n $NP $ATK_BIN_DIR $SCRIPT > ${PBS_JOBNAME}.out
目前主流的计算机集群都配备了InfiniBand(IB)高速网络用于节点间并行的高速数据交换,用户应选择IB网络进行并行。
以上脚本的修改需要根据具体的集群hosts文件中的主机名规律进行调试。