跳转至

12.14 PWFA

12.14.1 概况

  • PWFA 实验租用 Slurm 集群的公共计算平台资源来完成相关计算任务,具体资源如下:
资源类型 具体资源 说明
登录节点 pvm057 PWFA 专用登录节点
Slurm spub partition的计算节点 spub[001-016]和gpu036,具备最高使用优先级
home目录 /ihepfs/pwfa/user/{username} 配套存储
工作目录 /ihepfs/pwfa/data/ 配套存储

12.14.2 Slurm 集群使用简介

申请集群帐号

登录集群

  • 使用 ssh 命令登录集群,其中 <user_name> 为集群帐号
# 通用登录节点 lxlogin
ssh <user_name>@lxlogin.ihep.ac.cn

# 专用登录节点 pvm057
ssh <user_name>@pvm057.ihep.ac.cn

使用集群

  • 两种方式使用集群:
  • 交互式:使用专用登录节点 pvm057,可用于程序调试
  • 提交作业:使用 Slurm 集群作业提交命令 sbatch,在后台运行已调试好的程序
    • 作业可提交到专用分区 pwfadebug,也可以提交到共享分区 spub
  • 更详细的集群使用方法请参考 9.1.2 Slurm 作业

12.14.3 可使用的计算资源

  • PWFA 实验租用公共计算平台服务,目前可使用的计算资源均在 Slurm 集群中,可分为三类
Partition 节点 功能 说明
login pvm057 专用登录节点 可使用ssh命令登录,用于前台命令行交互
pwfadebug pvm058 专用计算节点 sbatch 作业提交方式、后台计算
spub spub[001-016],gpu036 共享计算节点 sbatch 作业提交方式、后台计算

12.14.4 可使用的存储目录

  • PWFA 实验使用公共计算平台配套的存储目录 /ihepfs,可作为数据及 home 目录使用,具体路径如下表所示,其中 <user_name> 代表集群帐号
目录 功能 quota 限制
/ihepfs/pwfa/user/<user_name> home目录 100GB,20万文件
/ihepfs/pwfa/data/<user_name> 数据目录 1TB,20万文件

12.14.5 已安装的软件

软件名称 集群安装路径 软件官网
fbpic /cvmfs/slurm.ihep.ac.cn/centos7.9/anaconda3/envs/fbpic github fbpic
QuickPIC /cvmfs/pwfa.ihep.ac.cn/software/QuickPIC-OpenSource-dev/source/qpic.e github QuickPIC

12.14.6 Slurm 作业脚本样例

  • PWFA 用户向 partition pwfadebug 及 spub 提交作业时,需在作业脚本中指定 partition、account 以及 qos 参数,参数具体值为:
partition account qos
pwfadebug pwfa spubpwfa
spub pwfa spubpwfa

QuickPIC

  • 以向partition spub提交作业、运行QuickPIC为例,可提交的作业脚本样例qpic_sample_job.sh如下所示:
#! /bin/bash

#SBATCH --partition=spub
#SBATCH --account=pwfa
#SBATCH --qos=spubpwfa
#SBATCH --ntasks=32
#SBATCH --mem-per-cpu=4GB
#SBATCH --job-name=quickPIC

module use /cvmfs/slurm.ihep.ac.cn/alma9/modulefiles
module load quickpic/develop
export UCX_NET_DEVICES=mlx5_0:1
export OMP_NUM_THREADS=1
echo $SLURM_NTASKS
mpirun -np $SLURM_NTASKS /cvmfs/slurm.ihep.ac.cn/alma9/software-gcc11/QuickPIC-OpenSource-dev/source/qpic.e

脚本说明

  • module use /cvmfs/slurm.ihep.ac.cn/alma9/modulefiles 和 module load quickpic/develop 用于加载运行 QuickPIC 所需的软件环境
  • UCX_NET_DEVICES、OMP_NUM_THREADS 用于设置运行 QuickPIC 所需的网络及线程环境变量
  • qpic.e 是 QuickPIC 的可执行文件,默认的输入文件为 qpinput.json,需要存放在作业提交的当前目录下,具体格式和内容可参考 Input File for QuickPIC
  • 作业提交命令为
sbatch qpic_sample_job.sh

fbpic

  • 以向partition spub提交作业、运行fbpic为例,可提交的作业脚本样例fbpic_cpu.sh如下所示:
#! /bin/bash

#=====================================================
# FBPIC CPU job on one spub CPU node
#
# Usage:
#   sbatch fbpic_cpu.sh
#   sbatch fbpic_cpu.sh fbpic_script.py
#
# Tune --cpus-per-task and THREADS together if you do
# not want to use all 56 CPU cores on the node.
#=====================================================

#SBATCH --partition=spub
#SBATCH --account=pwfa
#SBATCH --qos=spubpwfa
#SBATCH --job-name=fbpic_cpu
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=56
#SBATCH --mem=240G
#SBATCH --output=fbpic_cpu_%j.out
#SBATCH --error=fbpic_cpu_%j.err

set -euo pipefail

source /ihepfs/pwfa/data/public/env_FBPIC.sh

export NUMBA_CACHE_DIR=/ihepfs/pwfa/data/${USER}/cache
mkdir -p "${NUMBA_CACHE_DIR}"

# FBPIC CPU multi-threading. Keep these equal to --cpus-per-task.
THREADS="${SLURM_CPUS_PER_TASK:-56}"
export MKL_NUM_THREADS="${THREADS}"
export NUMBA_NUM_THREADS="${THREADS}"
export OMP_NUM_THREADS="${THREADS}"
export OPENBLAS_NUM_THREADS="${THREADS}"
export NUMEXPR_NUM_THREADS="${THREADS}"

# Keep all worker threads on the CPU cores allocated by Slurm.
export OMP_PROC_BIND=close
export OMP_PLACES=cores

FBPIC_SCRIPT="${1:-fb-in.py}"

echo "Job ID: ${SLURM_JOB_ID}"
echo "Node list: ${SLURM_JOB_NODELIST}"
echo "FBPIC script: ${FBPIC_SCRIPT}"
echo "CPU threads: ${THREADS}"
echo "Memory requested: ${SLURM_MEM_PER_NODE:-240G}"

srun --cpu-bind=cores python "${FBPIC_SCRIPT}"

脚本说明

  • 该脚本用于在一个 spub CPU 节点上运行 fbpic 的 CPU 作业,可通过 sbatch fbpic_cpu.sh [fbpic_script.py] 提交,若不指定 fbpic_script.py 则默认运行 fb-in.py
  • 如果不想使用节点上全部 56 个 CPU 核,请同时调整 --cpus-per-task 和脚本中的线程数 THREADS
  • source /ihepfs/pwfa/data/public/env_FBPIC.sh 用于加载运行 fbpic 所需的环境
  • NUMBA_CACHE_DIR 用于指定 numba 的缓存目录,避免多用户共享安装目录时产生缓存冲突
  • MKL_NUM_THREADS、NUMBA_NUM_THREADS、OMP_NUM_THREADS、OPENBLAS_NUM_THREADS、NUMEXPR_NUM_THREADS 用于设置 fbpic 各计算库使用的线程数,需与 --cpus-per-task 保持一致
  • OMP_PROC_BIND、OMP_PLACES 用于将计算线程绑定在 Slurm 分配的 CPU 核心上,避免线程迁移影响性能
  • 作业提交命令为
sbatch fbpic_cpu.sh

常见问题(FAQ)

见常见问题。

🤖 AI 助手
💬 快速提问 ×

有问题?输入后跳转到对话页继续交流