东莞数据中心

1 Slurm集群使用方法

集群简介

  • Slurm集群目前支持的应用如下表所示:
组别(group) 应用 计算负责人
LQCD 格点QCD 孙玮
  • Slurm集群的资源情况如下表所示:
资源分区(partition) 节点数量 单节点计算资源数量 单节点内存 角色
dgpublic 245 48 CPU cores 250GB x86计算节点
dggpu 20 48 CPU cores, 4 NVIDIA V100 PCI-e GPU cards 488GB GPU计算节点
dgarm 98 96 CPU cores 250GB arm计算节点
dgvfarm 210 52 CPU cores 224GB 静态虚拟机计算节点
dgloginX86 2 - - 登录节点
dgloginArm 2 - - 登录节点
  • 各应用可使用的的资源分区(partition), 账户(account),组别(group),队列(qos)如下表所示:
partition account QOS
dgpublic lqcd normal
dggpu lqcd normal
dgarm lqcd normal
dgvfarm lqcd normal

Step1 :申请集群账号及授权

  • 申请集群账号
    • 申请页面: https://login.csns.ihep.ac.cn
    • 高能所用户可使用IHEP SSO(所邮箱和密码)登录
    • 非高能所用户先注册账号,注册完成后,方可登录
  • 申请加入所属应用对应的组别
    • Profile -> Group Information -> Apply for Group
  • 申请使用slurm集群的授权并建立专用数据目录
    • 邮件联系所属应用的计算负责人和集群管理员获取集群使用授权
    • 专用数据目录在 /dg_hpc下,具体目录结构为/dg_hpc/<group_name>/<user_name>
      • 例如:用户名为zhangsan,所属组为LQCD,则该用户的专用数据目录为:/dg_hpc/LQCD/zhangsan
    • 特别提示
      • 若未获得slurm集群使用授权,提交作业时会报错Invalid account or account/partition combination specified
      • 请尽量将作业运行环境(作业脚本,输入文件,输出文件)置于专用数据目录/dg_hpc下
      • home目录可用于备份作业脚本和运行程序

Step2 : 登录集群

  • 集群登录节点为acn[099-100].csns.ihep.ac.cn,cn[249-250].csns.ihep.ac.cn

    • 高能所集群用户可先ssh登录lxslc7.ihep.ac.cn后,再ssh登录acn[099-100],cn[249-250]

      $ ssh <user_name>@lxslc7.ihep.ac.cn
      
      # on lxslc7, ssh to one of the following login nodes
      $ ssh <user_name>@acn099.csns.ihep.ac.cn
      $ ssh <user_name>@acn100.csns.ihep.ac.cn
      $ ssh <user_name>@cn249.csns.ihep.ac.cn
      $ ssh <user_name>@cn250.csns.ihep.ac.cn
      
    • 非高能所集群用户可在login.csns.ihep.ac.cn申请VPN后,以VPN方式登录集群

      • profile -> Group information -> apply for VPN group
      • 申请VPN请联系所属应用的计算负责人

Step3 :准备作业脚本

  • 仅使用CPU的作业脚本样例
$ cat cpu_job_sample.sh
#! /bin/bash

#======= Part 1 : Job parameter ======
#SBATCH --partition=dgpublic
#SBATCH --account=lqcd
#SBATCH --qos=normal
#SBATCH --ntasks-per-node=32
#SBATCH --nodes=1
#SBATCH --mem-per-cpu=4G
#SBATCH --job-name=lqcdcpu
#SBATCH --output=/dg_hpc/CNG/zhangsan/job_output/lqcd/lqcd_cpu_job_%j.out

#======= Part 2 : Job workload ======
echo "Lqcd job ${SLURM_JOB_ID} on cpu worker node ${SLURM_JOB_NODELIST} job starting..."
date

set -e

# sofeware workload comes here

echo "Lqcd job ${SLURM_JOB_ID} ended."
date
  • 使用CPU和GPU的作业脚本样例
$ cat gpu_job_sample.sh
#! /bin/bash

#======= Part 1 : Job parameter ======
#SBATCH --partition=dggpu
#SBATCH --account=lqcd
#SBATCH --qos=normal
#SBATCH --gpus=v100:4
#SBATCH --ntasks=4
#SBATCH --mem-per-cpu=40G
#SBATCH --job-name=lqcdgpu
#SBATCH --output=/dg_hpc/CNG/zhangsan/job_output/lqcd/lqcd_gpu_job_%j.out

#======= Part 2 : Job workload ======
echo "Lqcd job ${SLURM_JOB_ID} on gpu worker node ${SLURM_JOB_NODELIST} job starting..."
date

set -e

# sofeware workload comes here

echo "Lqcd job ${SLURM_JOB_ID} ended."
date
  • 若作业中运行LQCD软件,请参考 9.7.2 LQCD软件使用说明

Step4 :提交作业

# sbatch will return back a job id
# replace <job_script.sh> with the filename of your job script
$ sbatch <job_script.sh>

Step5 :查看作业

# 1. jobs running or pending
# replace <user_name> with your user name
$ squeue -u <user_name>
# replace <job_id> with your job id
$ squeue -j <job_id>

# 2. jobs completed or failed

# replace <user_name> with your user name
# jobs started during past 24 hours
$ sacct -u <user_name>
# jobs started since YYYY-MM-DD, e.g.: 2021-05-03
$ sacct -u <user_name> --starttime=YYYY-MM-DD

# query a specific job with its job id
# replace <job_id> with a job id
$ sacct -j <job_id>

Step6 :获取作业运行结果

两类作业输出文件:

  • 作业脚本本身的输出文件:由#SBATCH --output定义的文件
  • 作业负载软件(workload software)的输出文件:用户自己定义

Step7 :取消作业

# cancel a job with job id
$ scancel -j <job_id>
# cancel jobs submitted by a user
$ scancel -u <user_name>

Q&A


Q1 为什么提交作业会报错:Invalid account or account/partition combination specified ?

A1 三个可能的原因:

  1. 账号没有加入所属组别(group),请加入所属应用的组别。
  2. 账号没有授权使用slurm集群,请申请slurm集群授权。
  3. 作业脚本中的#SBATCH --partition, #SBATCH --qos, #SBATCH --account 没有设置正确的值,请参考 集群简介中各组可使用的partition、qos、account对照表

Q2 为什么我的home目录下文件的有目录或文件的属主突然变成了root?

A2 Home目录采用的是GlusterFS文件系统,出现这种情况是底层文件系统的问题,请联系集群管理员处理


Q3 为什么我的作业提交了却马上就失败了?

A3 两个可能的原因:

  1. #SBATCH --output 的值是一个文件,而不是目录,并且用户必须对该文件有写权限,请检查该文件路径是否正确。
  2. 作业负载软件(workload software)运行失败,请检查软件运行命令是否正确

Q4 为什么我的作业提示oom错误?

A4 oom意思是out of memory, 即内存超出使用。请增加作业脚本中的内存值,如增大#SBATCH --mem-per-cpu 的值。


2 LQCD软件使用说明

运行环境设置

  • 首次登录东莞集群时按如下配置 module 环境
    mkdir -p ~/privatemodules
    ln -sf /dg_hpc/LQCD/modulefiles/lqcd ~/privatemodules/lqcd
    echo "module load use.own" >> ~/.bashrc
    source ~/.bashrc
    
  • 目前在 x86, arm, gpu计算节点下的软件可以通过 module av 查看

Chroma软件使用

  • 高能所产生规范从组态目录:/dg_hpc/LQCD/gongming/productions
  • Chroma 使用参考示例代码:/dg_hpc/LQCD/sunwei/examples
  • Chroma 软件包依赖
    • x86: chroma + qphix + qdp++ + qmp
    • arm: chroma + qopqdp + qdp++ + qmp
    • gpu: chroma + quda + qdp-jit + qmp

NOTE: 东莞集群使用 RoCE(RDMA over Converged Ethernet) 网络,在运行 MPI 程序时需要指定网卡, 使用 openMPI (arm, gpu),intelMPI (x86) 可参考如下运行脚本


  • x86
#!/bin/bash
#SBATCH --partition=dgpublic
#SBATCH --account=lqcd
#SBATCH --qos=normal
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=48
#SBATCH --mem-per-cpu=2G
#SBATCH --job-name=lqcd-job
set -e


module load lqcd/x86/chroma/double-qphix-qdpxx-intel


MPFLAGS="-env FI_PROVIDER=verbs " # specify RoCE with intel MPI

ncore=48
export OMP_NUM_THREADS=$ncore
QPHIX_PARAM="-by 4 -bz 4 -pxy 1 -pxyz 0 -c ${ncore} -sy 1 -sz 1 -minct 2"

mpirun ${MPFLAGS} -np 1 chroma ${QPHIX_PARAM} -geom 1 1 1 1 -i input.xml -o output.xml &> log

  • arm
#!/bin/bash
#SBATCH --partition=dgarm
#SBATCH --account=lqcd
#SBATCH --qos=normal
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=96
#SBATCH --mem-per-cpu=2G
#SBATCH --job-name=lqcd-job
set -e

module load lqcd/arm/chroma/double-qopqdp-qdpxx

MPFLAGS="--mca pml ucx -x UCX_NET_DEVICES=mlx5_bond_1:1 "

mpirun ${MPFLAGS} -np 96 chroma -geom 1 1 1 96 -i input.xml -o output.xml &> log # setup -geom according to the lattice size

  • gpu
#!/bin/bash
#SBATCH --partition=dggpu
#SBATCH --account=lqcd
#SBATCH --qos=normal
#SBATCH --job-name=lqcd-job
#SBATCH --ntasks-per-node=1
#SBATCH --nodes=1
#SBATCH --mem-per-cpu=50G
#SBATCH --gres=gpu:v100:1
set -e

module load lqcd/gpu/chroma/double-cuda11-qdpjit 

export OMP_NUM_THREADS=1
export QUDA_RESOURCE_PATH=${PWD}

MPFLAGS="--mca pml ucx -x UCX_NET_DEVICES=mlx5_bond_1:1 "

mpirun ${MPFLAGS} -np 1 chroma -geom 1 1 1 1 -ptxdb ./ptxdb -i input.xml -o output.xml &> log

如需使用不带MPI的chroma版本,可以module load lqcd/gpu/chroma/double-cuda11-qdpjit-nompimodule load lqcd/gpu/chroma/single-cuda11-qdpjit-nompi,分别为双精度与单精度。

results matching ""

    No results matching ""