diff --git a/docs/_images/app1.png b/docs/_images/app1.png deleted file mode 100644 index 6763b4c..0000000 Binary files a/docs/_images/app1.png and /dev/null differ diff --git a/docs/_images/app10.png b/docs/_images/app10.png deleted file mode 100644 index e9aa019..0000000 Binary files a/docs/_images/app10.png and /dev/null differ diff --git a/docs/_images/app11.png b/docs/_images/app11.png deleted file mode 100644 index ab7a505..0000000 Binary files a/docs/_images/app11.png and /dev/null differ diff --git a/docs/_images/app12.png b/docs/_images/app12.png deleted file mode 100644 index dbbd6e5..0000000 Binary files a/docs/_images/app12.png and /dev/null differ diff --git a/docs/_images/app13.png b/docs/_images/app13.png deleted file mode 100644 index 8c8a54b..0000000 Binary files a/docs/_images/app13.png and /dev/null differ diff --git a/docs/_images/app14.png b/docs/_images/app14.png deleted file mode 100644 index d645f28..0000000 Binary files a/docs/_images/app14.png and /dev/null differ diff --git a/docs/_images/app15.png b/docs/_images/app15.png deleted file mode 100644 index 54181ae..0000000 Binary files a/docs/_images/app15.png and /dev/null differ diff --git a/docs/_images/app2.png b/docs/_images/app2.png deleted file mode 100644 index 012c4d9..0000000 Binary files a/docs/_images/app2.png and /dev/null differ diff --git a/docs/_images/app3.png b/docs/_images/app3.png deleted file mode 100644 index bb68bf5..0000000 Binary files a/docs/_images/app3.png and /dev/null differ diff --git a/docs/_images/app4.png b/docs/_images/app4.png deleted file mode 100644 index a90e0df..0000000 Binary files a/docs/_images/app4.png and /dev/null differ diff --git a/docs/_images/app5.png b/docs/_images/app5.png deleted file mode 100644 index 4aa3039..0000000 Binary files a/docs/_images/app5.png and /dev/null differ diff --git a/docs/_images/app6.png b/docs/_images/app6.png deleted file mode 100644 index 26f8822..0000000 Binary files a/docs/_images/app6.png and /dev/null differ diff --git a/docs/_images/app9.png b/docs/_images/app9.png deleted file mode 100644 index 5faea05..0000000 Binary files a/docs/_images/app9.png and /dev/null differ diff --git a/docs/index.md b/docs/index.md index b6c6723..509758d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -7,20 +7,19 @@ 由于受水平和时间所限,错误和不妥之处在所难免,欢迎指出错误和改进意见,我们将尽力完善。 -## 目录 - 本使用文档包含以下主要内容: 1. [平台简介](introduction/index.md):介绍平台资源 2. [重大更新公告](introduction/updates.md): 汇总智算中心重大更新相关公告信息 -3. [开户流程](introduction/register.md): 介绍开户流程 -4. [用户登录与文件传输](usage/login.md):如何登录集群和进行文件传输 -5. [分区(队列)管理](usage/partition.md):分区和队列的设置和收费标准 -6. [SCOW算力平台](usage/scow.md):SCOW平台的使用说明 -7. [Slurm作业调度系统](slurm/index.md):详细介绍Slurm的各项功能和使用方法 -8. [应用软件及脚本](./usage/app.md):如何使用平台上的应用软件和编写脚本 -9. [注意事项](./information/notes.md):使用平台时需要注意的事项 -10. [故障排查](./information/troubleshooting.md):用户对可能遇到的故障进行排查的流程 -11. [常见问题](./information/faq.md): 用户经常遇到的问题汇总 +3. [快速上手](usage/quick-start.md): 用户快速上手流程 +4. [开户流程](introduction/register.md): 介绍开户流程 +5. [用户登录与文件传输](usage/login.md):如何登录集群和进行文件传输 +6. [分区(队列)管理](usage/partition.md):分区和队列的设置和收费标准 +7. [SCOW算力平台](usage/scow.md):SCOW平台的使用说明 +8. [Slurm作业调度系统](slurm/index.md):详细介绍Slurm的各项功能和使用方法 +9. [应用软件及脚本](./usage/apps/index.md):如何使用平台上的应用软件和作业脚本示例 +10. [注意事项](./information/notes.md):使用平台时需要注意的事项 +11. [故障排查](./information/troubleshooting.md):用户对可能遇到的故障进行排查的流程 +12. [常见问题](./information/faq.md): 用户经常遇到的问题汇总 希望本目录能帮助您快速找到所需信息,提升使用体验。 diff --git a/docs/introduction/register.md b/docs/introduction/register.md index d0f1900..a134d1a 100644 --- a/docs/introduction/register.md +++ b/docs/introduction/register.md @@ -7,7 +7,7 @@ 嘉庚智算中心支持内部用户以课题组/项目组为单位开立“用户组”账户,一个课题组/项目组的“用户组”账户下可以开立多个“用户”账户。“用户组”账户下的“用户”账户将共享“用户组”账户内的充值金额。 -内部用户申请开立“用户组”账户或在“用户组”账户新增“用户”账户需将以下两项材料的扫描件通过厦门大学的邮箱发送至 [hpc@xmu.edu.cn](mailto:hpc@xmu.edu.cn),并抄送经费负责人: +内部用户申请开立“用户组”账户或在“用户组”账户新增“用户”账户需将以下两项材料的扫描件通过厦门大学的邮箱发送至 [ikkemhpc@xmu.edu.cn](mailto:ikkemhpc@xmu.edu.cn),并抄送经费负责人: 1. **账户申请表**: 请先填写相关信息,而后请用户在“申请人”处签名,经费负责人在“单位/项目组负责人”处签名。 2. **用户承诺书**: 请新开立“用户”账户的用户在“承诺人”处签名。 @@ -34,7 +34,7 @@ sbatch: error: Job submit/allocate failed: Invalid account or account/partition ### 续费 -有续费需求的用户可发送邮箱至 [hpc@xmu.edu.cn](mailto:hpc@xmu.edu.cn) 邮箱或在微信服务群内告知,智算中心会主动联系,配合办理续费业务。 +有续费需求的用户可发送邮箱至 [ikkemhpc@xmu.edu.cn](mailto:ikkemhpc@xmu.edu.cn) 邮箱或在微信服务群内告知,智算中心会主动联系,配合办理续费业务。 ## 初始密码与重置 @@ -47,7 +47,7 @@ sbatch: error: Job submit/allocate failed: Invalid account or account/partition ## 销户 -用户可用申请时的邮箱向 [hpc@xmu.edu.cn](mailto:hpc@xmu.edu.cn) 提出用户账户注销申请。注销申请发出前建议用户做好数据备份,避免因账户注销造成损失。 +用户可用申请时的邮箱向 [ikkemhpc@xmu.edu.cn](mailto:ikkemhpc@xmu.edu.cn) 提出用户账户注销申请。注销申请发出前建议用户做好数据备份,避免因账户注销造成损失。 !!! warning 特别提醒 为提高资源的利用效率,嘉庚智算中心会对一年以内未使用的账户进行销户处理。 diff --git a/docs/usage/app.md b/docs/usage/app.md deleted file mode 100644 index b4d1194..0000000 --- a/docs/usage/app.md +++ /dev/null @@ -1,128 +0,0 @@ -# 应用软件使用及作业提交 - -## module基本使用 - -Module中一个比较重要的文件modulefile文件,每个软件都需要有对应的modulefile文件,里面定义了该软件所需要的所有环境变量、软件说明、依赖的其他软件和库文件等,需要使用该软件时,我们用相关命令载入该modulefile文件,即可载入该软件的所有环境变量、依赖软件和库文件等。下面是module常用的一些命令: - -1. `module available` - 列出所有可使用的软件。可以用`module av`简写来代替,同时`module av`支持模糊搜索,例如`module av m`会列出所有以m开头的软件 - -2. `module load modulefile` - 加载某个软件 - -3. `module unload modulefile` - 卸载某个软件 - -4. `module purge` - 清除所有已经加载的软件 - -5. `module list` - 列出目前已经加载的软件 - -6. `module show modulefile` - 列出某个软件modulefile里的内容 - -7. `module switch|swap [modulefile_old][modulefile_new]` - 在不同的软件版本之间切换 - -## singularity - -容器作为轻量级的虚拟机,可在主机之外提供多种系统环境选择,如某些软件可能只在某个linux发行版本上运行;另外,在容器中一次打包好软件及相关依赖环境之后,即可将复杂的软件环境在各种平台上无缝运行,无需重复多次配置,大大减轻相关工作人员的工作量;因为可以利用容器技术在一台物理机器上部署大量不同的系统(一台物理机支持的容器远多于传统虚拟机),提高了资源利用率,因此在近几年变得非常流行。目前主流的容器为docker,其最初被用于软件产品需要快速迭代的互联网行业,极大地简化了系统部署、提高了硬件资源的利用率,近来也在各种特定领域的应用系统中被使用。 - -singularity 调用 - -singularity有许多命令,常用的命令有,pull、run、exec、shell、build - -1. `pull`: 从给定的URL下载容器镜像,常用的有URL有Docker Hub(docker://user/image:tag) 和 Singularity Hub(shub://user/image:tag),如 - - ```bash - singularity pull tensorflow.sif docker://tensorflow/tensorflow:latest - ``` - -2. `run`: 执行预定义的命令 - -3. `exec`: 在容器中执行某个命令 - - ```bash - singularity exec docker://tensorflow/tensorflow:latest python example.py - ``` - - 或 - - ```bash - singularity exec tensorflow.sif python example.py - ``` - -4. `shell`: 进入容器中的shell - - ```bash - singularity shell docker://tensorflow/tensorflow:latest - ``` - - 或 - - ```bash - singularity shell tensorflow.sif - ``` - - 然后可在容器的shell中运行自己的程序 - -5. `build`: 创建容器镜像 - -## 脚本 - -脚本文件放于/public/slurmscript_demo中,手册中列出部分常见的脚本 - -### abaqus - -![abaqus](../_images/app1.png) -![abaqus](../_images/app2.png) - -### amber - -![amber](../_images/app3.png) - -### lammps - -![lammps](../_images/app4.png) - -### lammps-intel - -![lammps-intel](../_images/app5.png) - -### orca - -![orca](../_images/app6.png) - - -### gromacs-gpu - -![gromacs-gpu](../_images/app9.png) - -### gromacs-cpu - -![gromacs-cpu](../_images/app11.png) - -### matlab - -![matlab](../_images/app10.png) - -### comsol - -![comsol](../_images/app12.png) - -### cp2k-2022 - -![cp2k-2022](../_images/app13.png) - -### vasp - -![vasp](../_images/app15.png) - -### g16 - -![g16](../_images/app14.png) diff --git a/docs/usage/apps/abaqus.md b/docs/usage/apps/abaqus.md new file mode 100644 index 0000000..66620bf --- /dev/null +++ b/docs/usage/apps/abaqus.md @@ -0,0 +1,70 @@ +# Abaqus + +ABAQUS是一种有限元素法软件,用于机械、土木、电子等行业的结构和场分析。 + +!!! info + Abaqus 是商业授权软件,需要申请权限后使用。 + +```bash title="/public/slurmscript_demo/abaqus.slurm" +#!/bin/bash +#SBATCH --nodes=2 #节点数量 +#SBATCH --ntasks-per-node=8 #每个节点使用的核心数量 +#SBATCH --error=%j.err +#SBATCH --output=%j.out +#SBATCH --account=[budget] # Account name +#SBATCH --partition=cpu # Partition name +#SBATCH --qos=[qos] # QOS name + +CURDIR=`pwd` +rm -rf $CURDIR/nodelist.$SLURM_JOB_ID +NODES=`scontrol show hostnames $SLURM_JOB_NODELIST` +for i in $NODES +do +echo "$i:$SLURM_NTASKS_PER_NODE" >> $CURDIR/nodelist.$SLURM_JOB_ID +done +echo $SLURM_NPROCS + +echo "process will start at : " +date +echo "++++++++++++++++++++++++++++++++++++++++" + +##setting environment for abaqus-2019 +export PATH=/public/software/abaqus/abaqus-2019/DassaultSystemes/SIMULIA/Commands/:$PATH + +cd $CURDIR +rm -rf *.lck* +rm -rf $CURDIR/nodefile +np=$SLURM_NPROCS +nu=$SLURM_NNODES +cpuspernode=$SLURM_NTASKS_PER_NODE +echo $cpuspernode +echo $nu +echo $np + +for i in $NODES +do +echo "$i" >> $CURDIR/nodefile +done + +pie="'" +machinelist=$(awk '{if( NR != '$nu' ) printf "['$pie'"$0"'$pie',"'$cpuspernode'"],"} {if(NR=='$nu') printf "['$pie'"$0"'$pie', "'$cpuspernode'"]"}' nodefile) +echo "mp_host_list=[$machinelist]" +echo "mp_rsh_command='ssh -n -l %U %H %C'" > abaqus_v6.env +echo "mp_host_list=[$machinelist]" >> abaqus_v6.env + +export MPI_IB_STRINGS=mlx5_0:1 +export MPIRUN_OPTIONS="-prot" + + +unset SLURM_GTIDS +inputfile=abaqus_suanli.inp +abaqus job=ABAQUS cpus=$SLURM_NPROCS input=$inputfile interactive ask_delete=off > ./log + + +echo "++++++++++++++++++++++++++++++++++++++++" +echo "processs will sleep 30s" +sleep 30 +echo "process end at : " +date +rm -rf $CURDIR/nodelist.$SLURM_JOB_ID +``` \ No newline at end of file diff --git a/docs/usage/apps/amber.md b/docs/usage/apps/amber.md new file mode 100644 index 0000000..8fe3cd2 --- /dev/null +++ b/docs/usage/apps/amber.md @@ -0,0 +1,29 @@ +# amber + +```bash title="/public/slurmscript_demo/amber-intel.slurm" +#!/bin/bash -l +#SBATCH --job-name=mpi_job_test # Job name +#SBATCH --output=testSlurmJob.%j.out # Stdout (%j expands to jobId) +#SBATCH --error=testSlurmJob.%j.err # Stderr (%j expands to jobId) +#SBATCH -N 2 # Maximum number of node +#SBATCH --ntasks-per-node=16 # Maximum number CPUs of each node +#SBATCH --account=[budget] # Account name +#SBATCH --partition=cpu # Partition name +#SBATCH --qos=[qos] # QOS name + +module load intel/oneapi2021.1 +module load amber/20 + +srun hostname >./hostfile +echo $SLURM_NTASKS +echo "Date = $(date)" +echo "Hostname = $(hostname -s)" +echo "Working Directory = $(pwd)" +echo "" +echo "Number of Nodes Allocated = $SLURM_JOB_NUM_NODES" +echo "Number of Tasks Allocated = $SLURM_NTASKS" +echo "Number of Cores/Task Allocated = $SLURM_CPUS_PER_TASK" +echo $SLURM_NPROCS + +mpirun -machinefile hostfile -np $SLURM_NTASKS pmemd.MPI -O -i mdin -o mdout -p prmtop -c inpcrd +``` \ No newline at end of file diff --git a/docs/usage/apps/comsol.md b/docs/usage/apps/comsol.md new file mode 100644 index 0000000..47a249e --- /dev/null +++ b/docs/usage/apps/comsol.md @@ -0,0 +1,33 @@ +# COMSOL + +!!! info + COMSOL 是商业授权软件,需要申请权限后使用。 + +```bash title="/public/slurmscript_demo/comsol.slurm" +#!/bin/bash +#SBATCH --job-name="COMSOL" +#SBATCH --output=testSlurmJob.%j.out # Stdout (%j expands to jobId) +#SBATCH --error=testSlurmJob.%j.err # Stderr (%j expands to jobId) +#SBATCH -N 2 # Maximum number of node +#SBATCH --ntasks-per-node=1 # Maximum number CPUs of each node +#SBATCH --account=[budget] # Account name +#SBATCH --partition=cpu # Partition name +#SBATCH --qos=[qos] # QOS name + +# Set Comsol ENV +module load comsol/5.6 +module load intel/2020.2 + +srun hostname >./hostfile +echo $SLURM_NTASKS +echo "Date = $(date)" +echo "Hostname = $(hostname -s)" +echo "Working Directory = $(pwd)" +echo "" +echo "Number of Nodes Allocated = $SLURM_JOB_NUM_NODES" +echo "Number of Tasks Allocated = $SLURM_NTASKS" +echo "Number of Cores/Task Allocated = $SLURM_CPUS_PER_TASK" +echo $SLURM_NPROCS + +comsol batch -nnhost 1 -np $SLURM_NTASKS -inputfile test.mph -outputfile outtest.mph -batchlog in.log +``` \ No newline at end of file diff --git a/docs/usage/apps/cp2k.md b/docs/usage/apps/cp2k.md new file mode 100644 index 0000000..6ae34da --- /dev/null +++ b/docs/usage/apps/cp2k.md @@ -0,0 +1,34 @@ +# CP2K + +CP2K 是可用于DFT计算和分子动力学模拟的强大软件包。它支持多种计算方法,包括密度泛函理论(DFT)、半经验方法和经典力场。CP2K 以其高效的并行计算能力和灵活的输入文件格式而闻名,适用于从小分子到大规模材料系统的模拟。用户可以利用 CP2K 进行能量计算、几何优化、分子动力学模拟等多种任务。 + +## 嘉庚智算上的CP2K + +!!! failure + 目前由于升级后 OpenMPI 的已知问题,目前集群上的 CP2K 仅 `cp2k/2024.3` 和 `cp2k/2024.3-generic` 版本可用。 + 前者由于 Core Dump 等原因未能通过 Regtest(但无数值issue),后者由于17个测试任务的数值不匹配亦未能通过。 + + 因此请各位用户在使用时注意自己的结果,我们正在积极解决升级后的集群与 CP2K 的兼容性问题。 + 如对可靠性有较高要求,推荐使用 [CP2K 官方 Singularity 容器镜像](https://github.com/cp2k/cp2k-containers#apptainer-singularity)。 + +```bash title="/public/slurmscript_demo/cp2k-2024.3.slurm" +#!/bin/bash +#SBATCH --nodes=1 # 节点数量 +#SBATCH --ntasks-per-node=64 # 每个节点核心数量 +#SBATCH --job-name=hello # 作业名称 +#SBATCH --output=%j.out # 正常日志输出 (%j 参数值为 jobId) +#SBATCH --error=%j.err # 错误日志输出 (%j 参数值为 jobId) +#SBATCH --account=[budget] # Account name +#SBATCH --partition=cpu # Partition name +#SBATCH --qos=[qos] # QOS name +#SBATCH --mem=251G # use full memory of node to avoid OOM + +############################################## +# Software Envrironment # +############################################## +module load cp2k/2024.3 +############################################## +# Run job # +############################################## +mpirun cp2k.psmp cp2k.inp >> output +``` \ No newline at end of file diff --git a/docs/usage/apps/gaussian.md b/docs/usage/apps/gaussian.md new file mode 100644 index 0000000..4ee2be7 --- /dev/null +++ b/docs/usage/apps/gaussian.md @@ -0,0 +1,63 @@ +# Gaussian + +!!! info + Gaussian 是商业授权软件,需要申请权限后使用。 + +```bash title="/public/slurmscript_demo/g16.slurm" +#!/bin/bash +#SBATCH --output=testSlurmJob.%j.out # Stdout (%j expands to jobId) +#SBATCH --error=testSlurmJob.%j.err # Stderr (%j expands to jobId) +#SBATCH -N 2 # Maximum number of node +#SBATCH --ntasks-per-node=1 # Maximum number CPUs of each node +#SBATCH --account=[budget] # Account name +#SBATCH --partition=cpu # Partition name +#SBATCH --qos=[qos] # QOS name +############################################################################# + +# Define variable "InputfileName". + +InputfileName=tBu + +############################################################################# + +#echo ${SLURM_JOB_ID} + +# change to the working directory + +## create a unique scratch directoy for this calculation + +myscratch=/public/home/`whoami`/scratch/$(echo ${SLURM_JOB_ID}); export myscratch + +#echo $myscratch +mkdir -p $myscratch + +############################################################################# + + +######################################G16#################################### + +# Define the location where Gaussian was installed and run + +module load gauss/16 + +# Run the gaussian calculation with my new scratch directory + +export GAUSS_SCRDIR=$myscratch + +# Run a Gaussian command file, redirecting output +echo "Starting G16 run at" `date` + + g16 $InputfileName + +echo "Finished G16 run at" `date` + +##################################end######################################## + +date + +## Remove scratch directory +rm -r -f $myscratch + + +formchk ${InputfileName} +``` \ No newline at end of file diff --git a/docs/usage/apps/gromacs.md b/docs/usage/apps/gromacs.md new file mode 100644 index 0000000..e4429a6 --- /dev/null +++ b/docs/usage/apps/gromacs.md @@ -0,0 +1,56 @@ +# GROMACS + +GROMACS是一套分子动力学模拟程序包,主要用来模拟研究蛋白质、脂质、核酸等生物分子的性质。它起初由荷兰格罗宁根大学生物化学系开发,目前由来自世界各地的大学和研究机构维护。 + +=== "CPU" + + ```bash + #!/bin/bash + #SBATCH --job-name=mpi_job_test + #SBATCH --output=testSlurmJob.%j.out + #SBATCH --error=testSlurmJob.%j.err + #SBATCH -N 1 + #SBATCH --ntasks-per-node=64 + #SBATCH --account=[budget] + #SBATCH --partition=cpu + #SBATCH --qos=[qos] + + module load gromacs/2020.3 + #before compute + gmx_mpi grompp -f pme.mdp + #begin compute + mpirun gmx_mpi mdrun -dlb yes -v -nsteps 10000 -resethway -noconfout -pin on -ntomp 1 -s topol.tpr + ``` + +=== "GPU" + + ```bash + #!/bin/bash + #SBATCH --job-name=lp_job_test + #SBATCH --output=testSlurmJob.%j.out + #SBATCH --error=testSlurmJob.%j.err + #SBATCH --nodes=1 + #SBATCH --ntasks-per-node=8 + #SBATCH --account=[budget] + #SBATCH --partition=gpu + #SBATCH --qos=[qos] + #SBATCH --gres=gpu:1 + + srun hostname >./hostfile + echo $SLURM_NTASKS + echo "Date = $(date)" + echo "Hostname = $(hostname -s)" + echo "Working Directory = $(pwd)" + echo "" + echo "Number of Nodes Allocated = $SLURM_JOB_NUM_NODES" + echo "Number of Tasks Allocated = $SLURM_NTASKS" + echo "Number of Cores/Task Allocated = $SLURM_CPUS_PER_TASK" + echo $SLURM_NPROCS + module load gromacs/2020.3-gpu + #get the md expample + gmx_mpi grompp -f md.mdp -c init.gro -p fws_plus.top -o md.tpr -maxwarn 5 + #run md + gmx_mpi mdrun -deffnm md + #mpirun gmx_mpi mdrun -nsteps 50000 -v -deffnm npt-nopr -pin on -nb gpu -pme cpu -ntomp 8 -gpu_id 0123 + mpirun gmx_mpi mdrun -nsteps 50000 -v -deffnm npt-nopr -pin on -nb gpu -pme cpu -ntomp $SLURM_NPROCS -gpu_id 0 + ``` diff --git a/docs/usage/apps/index.md b/docs/usage/apps/index.md new file mode 100644 index 0000000..4ce5366 --- /dev/null +++ b/docs/usage/apps/index.md @@ -0,0 +1,65 @@ +# 应用软件 + +在快速开始指南的[使用智算上的软件](../quick-start.md#_6)部分中,我们介绍了如何使用 `module` 来加载软件及依赖。 +而在[创建作业提交脚本](../quick-start.md#_7)部分中,我们介绍了如何编写一个 Slurm 作业脚本。 + +## 具体应用说明和作业提交脚本示例 + +以下列出一些软件的示例提交脚本,请使用时注意替换成自己真实的配置。 + +- [Abaqus](abaqus.md) +- [Lammps](lammps.md) +- [GROMACS](gromacs.md) +- [COMSOL](comsol.md) +- [CP2K](cp2k.md) +- [Gaussian](gaussian.md) +- [ORCA](orca.md) +- [Matlab](matlab.md) +- [PyTorch](pytorch.md) +- [VASP](vasp.md) + +除了直接安装的软件,用户还可以通过容器来调用一些有特殊环境需求或不易安装的软件。 + +## Singularity + +容器作为轻量级的虚拟机,可在主机之外提供多种系统环境选择,如某些软件可能只在某个linux发行版本上运行;另外,在容器中一次打包好软件及相关依赖环境之后,即可将复杂的软件环境在各种平台上无缝运行,无需重复多次配置,大大减轻相关工作人员的工作量;因为可以利用容器技术在一台物理机器上部署大量不同的系统(一台物理机支持的容器远多于传统虚拟机),提高了资源利用率,因此在近几年变得非常流行。目前主流的容器为docker,其最初被用于软件产品需要快速迭代的互联网行业,极大地简化了系统部署、提高了硬件资源的利用率,近来也在各种特定领域的应用系统中被使用。 + +### singularity 调用 + +singularity有许多命令,常用的命令有,pull、run、exec、shell、build + +1. `pull`: 从给定的URL下载容器镜像,常用的有URL有Docker Hub(docker://user/image:tag) 和 Singularity Hub(shub://user/image:tag),如 + + ```bash + singularity pull tensorflow.sif docker://tensorflow/tensorflow:latest + ``` + +2. `run`: 执行预定义的命令 + +3. `exec`: 在容器中执行某个命令 + + ```bash + singularity exec docker://tensorflow/tensorflow:latest python example.py + ``` + + 或 + + ```bash + singularity exec tensorflow.sif python example.py + ``` + +4. `shell`: 进入容器中的shell + + ```bash + singularity shell docker://tensorflow/tensorflow:latest + ``` + + 或 + + ```bash + singularity shell tensorflow.sif + ``` + + 然后可在容器的shell中运行自己的程序 + +5. `build`: 创建容器镜像 diff --git a/docs/usage/apps/lammps.md b/docs/usage/apps/lammps.md new file mode 100644 index 0000000..5fa45d1 --- /dev/null +++ b/docs/usage/apps/lammps.md @@ -0,0 +1,50 @@ +# LAMMPS + +LAMMPS(Large-scale Atomic/Molecular Massively Parallel Simulator)是经典分子动力学模拟软件。LAMMPS 提供了固体(如金属、半导体)、软物质(如生物分子、高分子)以及 coarse-grained 体系和介观体系的力场。 + +## 参考链接 +- [LAMMPS 文档](https://www.lammps.org/doc.html) +- [LAMMPS Mailing List](https://www.lammps.org/mail.html) + +## 嘉庚智算上的LAMMPS + +嘉庚智算上提供了基于 Intel OneAPI 构建的 LAMMPS,支持以下软件模块: + +``` +AMOEBA ASPHERE BOCS BODY BPM BROWNIAN CG-DNA CG-SPICA CLASS2 COLLOID COLVARS +CORESHELL DIELECTRIC DIFFRACTION DIPOLE DPD-BASIC DPD-MESO DPD-REACT +DPD-SMOOTH DRUDE EFF ELECTRODE EXTRA-COMMAND EXTRA-COMPUTE EXTRA-DUMP +EXTRA-FIX EXTRA-MOLECULE EXTRA-PAIR FEP GRANULAR INTERLAYER KSPACE MANYBODY MC +MEAM MESONT MISC ML-IAP ML-POD ML-SNAP ML-UF3 MOFFF MOLECULE OPENMP OPT ORIENT +PERI PHONON PLUGIN PLUMED POEMS QEQ REACTION REAXFF REPLICA RIGID SHOCK SPH +SPIN SRD TALLY UEF YAFF +``` + +通过集成 `PLUGIN` 模块,用户可用此版本调用 DeePMD-kit 接口等插件。 + +以下是示例脚本 + +```bash title="/public/slurmscript_demo/lammps.slurm" +#!/bin/bash -l +#SBATCH --parsable +#SBATCH --nodes=2 +#SBATCH --ntasks-per-node=64 +#SBATCH --partition cpu +#SBATCH --qos normal +#SBATCH -J test + +module load lammps/2024.8.29-intel-2023 + +srun hostname >./hostfile +echo $SLURM_NTASKS +echo "Date = $(date)" +echo "Hostname = $(hostname -s)" +echo "Working Directory = $(pwd)" +echo "" +echo "Number of Nodes Allocated = $SLURM_JOB_NUM_NODES" +echo "Number of Tasks Allocated = $SLURM_NTASKS" +echo "Number of Cores/Task Allocated = $SLURM_CPUS_PER_TASK" +echo $SLURM_NPROCS + +mpirun -machinefile hostfile -np $SLURM_NTASKS lmp_mpi -in input.inp >& output_$SLURM_JOB_ID +``` \ No newline at end of file diff --git a/docs/usage/apps/matlab.md b/docs/usage/apps/matlab.md new file mode 100644 index 0000000..c4aa95f --- /dev/null +++ b/docs/usage/apps/matlab.md @@ -0,0 +1,32 @@ +# Matlab + +!!! info + Matlab 是商业授权软件,需要申请权限后使用。 + +```bash title="/public/slurmscript_demo/matlab.slurm" +#!/bin/bash +#SBATCH --job-name=matlab # Job name +#SBATCH --output=testSlurmJob.%j.out # Stdout (%j expands to jobId) +#SBATCH --error=testSlurmJob.%j.err # Stderr (%j expands to jobId) +#SBATCH -N 1 # Maximum number of node +#SBATCH --ntasks-per-node=1 # Maximum number CPUs of each node +#SBATCH --account=[budget] # Account name +#SBATCH --partition=cpu # Partition name +#SBATCH --qos=[qos] # QOS name + +srun hostname >./hostfile +echo $SLURM_NTASKS +echo "Date = $(date)" +echo "Hostname = $(hostname -s)" +echo "Working Directory = $(pwd)" +echo "" +echo "Number of Nodes Allocated = $SLURM_JOB_NUM_NODES" +echo "Number of Tasks Allocated = $SLURM_NTASKS" +echo "Number of Cores/Task Allocated = $SLURM_CPUS_PER_TASK" +echo $SLURM_NPROCS + +module load intel/oneapi2021.1 +module load matlab/r2022b + +matlab -nodisplay -nosplash run.log +``` diff --git a/docs/usage/apps/orca.md b/docs/usage/apps/orca.md new file mode 100644 index 0000000..f6a9684 --- /dev/null +++ b/docs/usage/apps/orca.md @@ -0,0 +1,28 @@ +# ORCA + +```bash title="/public/slurmscript_demo/orca.slurm" +#!/bin/bash +#SBATCH --job-name=orca_11 # Job name +#SBATCH --output=Job.%j.out # Stdout (%j expands to jobId) +#SBATCH --error=Job.%j.err # Stderr (%j expands to jobId) +#SBATCH -N 4 # Maximum number of node +#SBATCH --ntasks-per-node=64 # Maximum number CPUs of each node +#SBATCH --account=[budget] # Account name +#SBATCH --partition=cpu # Partition name +#SBATCH --qos=[qos] # QOS name +srun hostname >./hostfile +echo $SLURM_NTASKS +echo "Date = $(date)" +echo "Hostname = $(hostname -s)" +echo "Working Directory = $(pwd)" +echo "" +echo "Number of Nodes Allocated = $SLURM_JOB_NUM_NODES" +echo "Number of Tasks Allocated = $SLURM_NTASKS" +echo "Number of Cores/Task Allocated = $SLURM_CPUS_PER_TASK" +echo $SLURM_NPROCS +module load mpi/openmpi/4.1.1-gcc +module load orca/5.0.1 +FILENAME=test.inp +orca ${FILENAME} > ${FILENAME//inp/log} +echo "job finished" +``` diff --git a/docs/usage/apps/pytorch.md b/docs/usage/apps/pytorch.md new file mode 100644 index 0000000..b2396dc --- /dev/null +++ b/docs/usage/apps/pytorch.md @@ -0,0 +1,48 @@ +# PyTorch + +对于 PyTorch 等机器学习软件,我们推荐用户安装在用户目录或组共享目录下: + +```bash +module load anaconda/2022.5 +source activate base +conda create -n torch-env python=3.10 +source activate torch-env +conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia +``` + +在使用时利用如下脚本示例: + +```bash title="/public/slurmscript_demo/pytorch.slurm" +#!/bin/bash +#SBATCH --job-name=lp_job_test # Job name +#SBATCH --output=testSlurmJob.%j.out # Stdout (%j expands to jobId) +#SBATCH --error=testSlurmJob.%j.err # Stderr (%j expands to jobId) +#SBATCH --nodes=1 # Maximum number of nodes to be allocated +#SBATCH --ntasks-per-node=1 # Maximum number of tasks on each node +#SBATCH --account=[budget] # Account name +#SBATCH --partition=gpu # Partition name, use `gpu` for GPU +#SBATCH --qos=[qos] # QOS name +#SBATCH --gres=gpu:1 # Apply for 1 GPU card +#SBATCH --parsable + +nvidia-smi +echo "CUDA_VISIBLE_DEVICES = $CUDA_VISIBLE_DEVICES" +source ~/.bashrc +hostname >./hostfile +echo $SLURM_NTASKS +echo "Date = $(date)" +echo "Hostname = $(hostname -s)" +echo "Working Directory = $(pwd)" +echo "" +echo "Number of Nodes Allocated = $SLURM_JOB_NUM_NODES" +echo "Number of Tasks Allocated = $SLURM_NTASKS" +echo "Number of Cores/Task Allocated = $SLURM_CPUS_PER_TASK" +echo $SLURM_NPROCS +echo $SLURM_NPROCS + +source activate torch-env +python -V +echo "CUDA_VISIBLE_DEVICES = $CUDA_VISIBLE_DEVICES" +python testgpu.py +#python run_baselines.py +``` \ No newline at end of file diff --git a/docs/usage/apps/vasp.md b/docs/usage/apps/vasp.md new file mode 100644 index 0000000..5b0b0b2 --- /dev/null +++ b/docs/usage/apps/vasp.md @@ -0,0 +1,31 @@ +# VASP + +!!! info + VASP 是商业授权软件,需要申请权限后使用。 + +```bash +#!/bin/bash +#SBATCH --output=testSlurmJob.%j.out # Stdout (%j expands to jobId) +#SBATCH --error=testSlurmJob.%j.err # Stderr (%j expands to jobId) +#SBATCH -N 2 # Maximum number of node +#SBATCH --ntasks-per-node=64 # Maximum number CPUs of each node +#SBATCH --account=[budget] # Account name +#SBATCH --partition=cpu # Partition name +#SBATCH --qos=[qos] # QOS name + +module load intel/oneapi2021.1 +module load vasp/5.4.4-intel + +srun hostname >./hostfile +echo $SLURM_NTASKS +echo "Date = $(date)" +echo "Hostname = $(hostname -s)" +echo "Working Directory = $(pwd)" +echo "" +echo "Number of Nodes Allocated = $SLURM_JOB_NUM_NODES" +echo "Number of Tasks Allocated = $SLURM_NTASKS" +echo "Number of Cores/Task Allocated = $SLURM_CPUS_PER_TASK" +echo $SLURM_NPROCS + +mpirun -machinefile hostfile -np $SLURM_NTASKS vasp_std +``` diff --git a/docs/usage/quick-start.md b/docs/usage/quick-start.md new file mode 100644 index 0000000..506e24c --- /dev/null +++ b/docs/usage/quick-start.md @@ -0,0 +1,266 @@ +# 快速上手 + +本指南旨在快速帮助新用户在嘉庚智算上启动并运行应用。它涵盖了开户、登录和运行第一个作业的过程。 + +## 智算用户开户 + +请参考[开户流程](../introduction/register.md)或联系智算运营和管理人员协助完成开户流程。 + +在用户的开户请求被批准后,会收到一封来自 ikkemhpc@xmu.edu.cn 的邮件,包含了用户登录的用户名、初始随机密码。 +若用户申请了校外访问,还包括 ATrust 零信任终端的安装包、用户名、密码和使用说明。 + +## 登录到嘉庚智算 + +要登录到嘉庚智算,您应该使用以下地址: + +```sh +ssh [userID]@10.26.14.64 +``` + +登录流程请参考[用户登录与文件传输](login.md)。 + +### 配置免密登录 + +要配置免密登录,您需要在本地生成一个 SSH 密钥对,并将公钥复制到远程服务器。以下是详细步骤: + +1. **在本地生成 SSH 密钥对** + + 打开终端并运行以下命令: + + ```sh + ssh-keygen -t ed25519 -C "your_email@example.com" + ``` + + 按提示操作,您可以选择密钥默认的存放路径(通常是 `~/.ssh/id_ed25519`),并可为此密钥设置一个密语口令(可选)。 + +2. **将公钥复制到远程服务器** + + 使用 `ssh-copy-id` 命令将公钥复制到远程服务器: + + ```sh + ssh-copy-id [userID]@10.26.14.64 + ``` + + 输入您的远程服务器密码以完成公钥复制。 + +3. **测试免密登录** + + 现在,您可以尝试使用 SSH 登录到远程服务器而无需输入密码: + + ```sh + ssh [userID]@10.26.14.64 + ``` + + 如果一切配置正确,您应该能够直接登录到远程服务器。 + +!!! info 提示 + 如果您在生成密钥对时选择了非默认路径,请确保在登录时使用 `-i` 选项指定私钥路径。例如: + + ```sh + ssh -i /path/to/your/private_key [userID]@10.26.14.64 + ``` + +## 文件系统和数据操作 + +所有用户在 `/public` 文件系统上都有一个目录。目录位置如下: + +- `/public/home/[user ID]`(这也是您的 home 目录) + +用户可以在此目录下设立文件夹存放、归档自己的项目,并执行计算。 +每个用户拥有 **10TB** 的存储使用限制,可通过如下命令检查当前的存储使用情况以及文件数量: + +```sh +lfs quota -uh `whoami` /public/home/`whoami` +``` + +输出如下: + +```plaintext +Disk quotas for usr auser (uid 35005): + Filesystem used quota limit grace files quota limit grace +/public/home/auser + 683.7G 0k 0k - 174418 0 0 - +uid 35005 is using default block quota setting +uid 35005 is using default file quota setting +``` + +!!! info 嘉庚智算上管理数据的提示: + - 不要在单个目录中生成大量文件(>1000)。 + - 文件传输性能差通常是由于涉及的文件数量过多——通过使用归档工具来减少需要传输的文件数量以提高性能。 + - 在文件系统之间移动目录或大量文件之前,先将它们归档(例如使用 `tar` 或 `zip` 命令)。 + - 在智算上使用 `tar` 或 `rsync` 在文件系统之间传输时,避免使用压缩选项,因为这些选项可能会降低性能(通过传输较小的压缩文件节省的时间通常少于通过 即时压缩文件增加的开销)。 + +## 使用智算上的软件 + +在嘉庚智算上,软件主要通过 *module* 访问。这些模块通过 `module` 命令及其子命令加载和卸载所需的应用程序、编译器、工具和库。某些模块在登录时会默认加载,提供一个默认的工作环境;更多的模块可供使用但最初未加载,允许您根据需要设置环境。 + +您可以随时通过运行以下命令检查已加载的模块: + +```sh +module list +``` + +运行以下命令将显示嘉庚智算上所有可用的环境模块,无论是否已加载: + +```sh +module avail +``` + +可用`module av`简写替代,同时该命令支持模糊搜索,`module av m`会列出所有以 `m` 开头的软件可以通过提供模块名称的前几个字符来缩小此命令的搜索范围。 +例如,运行以下命令可以找到所有可用版本和变体的 VASP: + +```sh +module av vasp +``` + +您会看到许多模块有不同的版本。例如,`vasp/5.4.4-intel` 和 `vasp/6.2.0-intel` 是 VASP 的两个可用版本。此外,可指定默认版本,如果用户未指定版本,则使用此版本。 + +!!! important 重要 + VASP 是商业授权软件,您必须拥有有效的许可证或权限证明才能在嘉庚智算上使用这类软件。 + 通常您需要向管理员提供相关软件使用的权限证明并申请开通其使用权限。 + +`module load` 命令加载一个模块以供使用。按照上述示例, + +```sh +module load vasp +``` + +将加载 VASP 的默认版本,而 + +```sh +module load vasp/6.2.0-intel +``` + +将特定加载版本 `6.2.0`。可以通过相同的 `module unload` 命令卸载已加载的模块,例如: + +```sh +module unload vasp +``` + +上述命令将卸载当前环境中已加载的 VASP 版本。您也可以按如下方式切换软件的版本: + +```sh +module switch vasp/5.4.4-intel +``` + +其他常用的命令包括: + + - `module help ` 提供模块的简短描述 + - `module show ` 显示模块文件的内容 + - `module list` 显示当前已经加载的全部模块 + - `module purge` 卸载当前已经加载的全部模块 + - `module switch|swap [modulefile_old] [modulefile_new]` 在不同的模块版本之间切换 + +!!! warning 注意 + - 某些模块会与其他模块冲突。一个简单的例子是尝试加载已加载模块的不同版本时产生的冲突。当发生冲突时,加载过程将失败并显示错误消息。检查消息和模块输出(通过 `module show`)应能揭示冲突的原因以及如何解决。 + - 请注意模块加载的顺序。两个不同的模块将同一变量设置为不同的值,最终值将是最后加载的模块设置的值。如果您怀疑两个模块存在相互干扰的可能性,可以使用 `module show` 检查它们的内容。 + +## 创建作业提交脚本 + +要在计算节点上运行程序,您需要编写一个作业提交脚本,告诉系统您想要保留多少计算节点以及多长时间。您还需要使用 `srun` 命令来启动并行可执行文件。 + +使用您熟悉的文本编辑器创建一个名为 `submit.slurm` 的作业提交脚本。例如,使用 `vim`: + +```bash +[auser@mu012 ~]$ cd path/to/project +[auser@mu012 project]$ vim submit.slurm +``` + +!!! tip 提示 + 请将上面的 `path/to/project` 替换为您计算任务所在的路径。 + +将以下文本粘贴到您的作业提交脚本中,并将 `[budget]` 替换为您的账户,例如 `ai4ecccg`,将 `[partition]` 替换为您希望运行的分区(例如 `cpu`),将 `[qos]` 替换为您想要的QOS(例如 `normal`)。 + +!!! tip 提示 + - 关于分区、QOS和对应的收费标准,请参考[说明文档](partition.md) + - 关于不同应用对应的提交脚本示例,请参考[应用使用说明](apps/index.md) + +=== "VASP 5.4.4 提交脚本示例" + ```bash + #!/bin/bash -l + + #SBATCH --job-name=test_job + #SBATCH --nodes=1 + #SBATCH --ntasks-per-node=64 + #SBATCH --cpus-per-task=1 + #SBATCH --time=00:30:00 + + # Replace [budget] below with your account code (e.g. ai4ecccg) + # Replace [partition] below with your partition (e.g. cpu) + # Replace [qos] below with your QOS (e.g. normal) + #SBATCH --account=[budget] + #SBATCH --partition=[partition] + #SBATCH --qos=[qos] + + # Load the vasp module to get access to the vasp program + module load intel/oneapi2021.1 + module load vasp/5.4.4-intel + + # Recommended environment settings + # Stop unintentional multi-threading within software libraries + export OMP_NUM_THREADS=1 + + # srun launches the parallel program based on the SBATCH options + mpirun vasp_std + ``` + +### 作业的内存限制 + +集群目前设置了默认内存限制 + +- CPU节点每个节点 64 核,默认每个核申请 1G 内存,最大可提交内存为 251G +- GPU节点每个节点 64 核,默认每个核申请 16G 内存,最大可提交内存为 1510G + +当提交的作业出现内存不足的问题(Out Of Memory)时,需要手动在脚本中设定 `--mem-per-cpu` 或者 `--mem` 参数,以增大内存的使用量。 + +如若要为每个 CPU 核心分配 2G 内存,提交作业时加上 `--mem-per-cpu=2G` 的选项;若要为每个任务节点分配 16G 内存,提交作业时加上 `--mem=16G` 的选项。 + +根据您的作业实际需求,灵活地调整这些参数的值,以达到最佳的性能。 + +## 提交作业到队列 + +您可以使用 `sbatch` 命令将作业提交到队列: + + [auser@mu012 project]$ sbatch submit.slurm + Submitted batch job 23996 + +返回的数字是您的作业 ID。 + +## 监控您的作业 + +您可以使用 `squeue` 命令查看队列中的作业。要列出队列中自己的所有作业,请使用: + +```sh +[auser@mu012 project]$ squeue +``` + +智算上已经做了配置,`squeue` 仅可以查看自己的作业。 + +## 检查作业输出 + +上述作业提交脚本将输出写入名为 `slurm-.out` 的文件中(即如果作业 ID 是 23996,文件将是 `slurm-23996.out`),您可以使用 `cat` 命令检查此文件的内容。如果作业成功,您应该会看到类似以下的输出: + +[auser@mu012 project]$ cat slurm-23996.out + running on 64 total cores + distrk: each k-point on 64 cores, 1 groups + distr: one band on 1 cores, 64 groups + using from now: INCAR + vasp.5.4.4.18Apr17-6-g9f103f2a35 (build Oct 17 2022 16:14:22) complex + + POSCAR found : 2 types and 320 ions + scaLAPACK will be used + ... output trimmed ... + +如果出现问题,您可在文件中找到错误消息。请结合您的专业知识,遵循[异常排查和反馈](../information/troubleshooting.md)的流程进行故障排除或反馈。 + +## 致谢嘉庚智算 + +致谢模版如下。欢迎大家将已接收的高质量成果邮件分享给我们。 + +=== "中文" + + 本论文的计算结果得到了嘉庚创新实验室智算中心的支持和帮助 + +=== "英文" + + The calculation results of this paper have been supported and helped by ikkem Intelligent Computing Center diff --git a/mkdocs.yml b/mkdocs.yml index 2a66c9e..ae1d780 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -60,13 +60,26 @@ markdown_extensions: nav: - 首页: index.md - - 简介: - - 平台资源: introduction/index.md - - 重大更新公告: introduction/updates.md + - 平台概况: + - introduction/index.md - 开户流程: introduction/register.md + - 重大更新公告: introduction/updates.md - 使用指南: + - 快速上手: usage/quick-start.md - 用户登录与文件传输: usage/login.md - - 应用软件使用及作业提交: usage/app.md + - 应用软件: + - usage/apps/index.md + - usage/apps/abaqus.md + - usage/apps/amber.md + - usage/apps/comsol.md + - usage/apps/cp2k.md + - usage/apps/gromacs.md + - usage/apps/gaussian.md + - usage/apps/lammps.md + - usage/apps/matlab.md + - usage/apps/orca.md + - usage/apps/pytorch.md + - usage/apps/vasp.md - 分区规则和收费标准: usage/partition.md - SCOW 算力平台: usage/scow.md - 应用程序的编译与安装: usage/compile-install.md