跳转至

12.9 HEPS

12.9.1 概况

资源类型 资源量 说明
登录节点
HTCondor
Slurm
home目录
工作目录

12.9.2 新用户

  • 申请计算集群账号

    请参考 4.1 账号申请,得到 HEPS 实验负责人同意后,用户可获得 AFS 账号。

  • 计算环境初始化

    初次登录后在终端输入如下命令完成初始化:

    ln -s /sharefs/heps/data/opt/config/bash_profile  ~/.bash_profile
    source ~/.bash_profile
    

12.9.3 计算资源

HEPS 实验的计算资源列表如下:

节点IP 每个节点逻辑CPU核数 节点类型 任务调度系统 其他说明
accap002.ihep.ac.cn 28 登录节点 — 无
accap001.ihep.ac.cn ~ accap009.ihep.ac.cn 56 计算节点 SLURM accap002 除外
accap010.ihep.ac.cn ~ accap015.ihep.ac.cn 72 计算节点 SLURM
accap016.ihep.ac.cn ~ accap017.ihep.ac.cn 88 计算节点 SLURM
accap019.ihep.ac.cn ~ accap053.ihep.ac.cn 36 计算节点 SLURM 不能通过 ssh 登录

注意

经过 2025 年暑期的系统升级,所有计算服务器均已升级到 ALMA-9 系统。目前需要进行的额外设置包括:

  • 重新设置登录设置文件

    rm ~/.bash_profile
    ln -s /sharefs/heps/data/opt/config/bash_profile  ~/.bash_profile
    

    然后退出登录,再次登录服务器完成设置。

  • 通过 VNC 访问 accap002,需要在登录后关闭屏保,即在 Applications → System Tools → Settings → Power 中勾选 Blank Screen Never。

12.9.4 存储目录

HEPS 实验用户可以使用的存储目录列表如下:

磁盘名称 空间限额/文件数限额 查看使用份额的命令
/afs/ihep.ac.cn/users/a-z/username 500MB/none fs listquota /afs/ihep.ac.cn/users/a-z/username
/workfs2/heps/username 1 5GB/5万 lfs quota -u username /workfs2
/scratchfs/heps/username 2 500GB/none(数据只保存2周) lfs quota -u username /scratchfs
/sharefs/heps/user/username 3TB/none lfs quota -u username /sharefs

关于不同存储目录的使用有如下建议:

  • /afs 目录下仅保留部分重要的个人设置文件,若在服务器上无法执行写操作,先排查是否由于 /afs 个人目录超过空间或文件数限额;
  • /workfs2 目录可供在登录节点上读写文件,但在计算节点上提交的 SLURM 计算任务无法在 /workfs2 下新建和修改文件;
  • /sharefs 目录下可保存重要计算结果和数据,登录节点和计算节点均可读写;
  • /scratchfs 目录下可供暂存大文件和中间计算结果;
  • 请将重要计算结果和数据及时备份到本地个人电脑。

12.9.5 计算程序及示例

HEPS 实验的各计算程序按不同类别分别安装在 /sharefs/heps/data/APcodes 和 /sharefs/heps/data/opt/ 目录下,各计算程序的详细列表在 /sharefs/heps/data/APcodes/README.md。

通过 SLURM 任务调度器运行并行程序

关于 SLURM 任务调度器的详细使用说明参见 9.1.2 Slurm 作业。需要通过 ssh 登录节点 lxlogin.ihep.ac.cn 或 accap002.ihep.ac.cn,然后才可以提交作业脚本及监测服务器和脚本运行状况。注意,提交作业的并行核数最好是 36 的整数倍。

  • 作业脚本的示例如下(sbatch.sh):
#! /bin/bash                                                                                                  

# Specify the partition name from which resources will be allocated  
#SBATCH --partition=heps

# Specify which expriment group you belong to.
#SBATCH --account=heps


# Specify your job name, e.g.: "DA" is my job name
#SBATCH --job-name=DA

# Specify the queue to submit the job, two options are available, regular and advanced. "advanced" has a higher priority and is dedicated to urgent jobs. 
#SBATCH --qos=regular

# Specify the output file path of your job  
#SBATCH --output=slurm-%j.txt

# Specify how many cores you will need, e.g.: 36 is advisable for jobs submitted to accap019~accap052
#SBATCH --ntasks=36

### Below you can add any bash scripts

mpiexec -np 36 Pelegant parTrack2.ele
  • 在登录节点上按如下方式提交任务:
sbatch sbatch.sh
  • 在 hepsdebug 队列中进行程序调试:

    为了满足在 Slurm 集群饱和时进行程序调试和运行时间较短的计算任务执行,将 accap053 单独划为 hepsdebug 队列,可以提交最多 ntasks 不超过 36、运行时间不超过 30 分钟的计算任务,超出 30 分钟则系统会自动清除该计算任务。通过 Slurm 调度器提交到 hepsdebug 队列时,只需在上述脚本中设置:

    #SBATCH --qos=hepsdebug
    

    其他设置及提交任务的方式同前面介绍的方法相同。

  • 查看全部 HEPS 服务器运行状态

    sinfo -p heps
    
  • 查看 HEPS 队列情况,输出结果的第一列为 jobid

    squeue
    
  • 取消某个计算任务

    scancel jobid
    

运行正版 Matlab 程序

HEPS 实验购买的 Matlab 主程序安装在 /afs/ihep.ac.cn/soft/hepsap/matlab 目录下,运行 Matlab 程序需以 ssh 或 VNC 方式登录 accap002.ihep.ac.cn,并执行:

matlab 

所安装的 Matlab 支持并行计算,最多调用 512 个并行核数。Matlab 并行任务不需要通过 SLURM 调度系统,而是直接在 Matlab 中申请并行核数并执行并行任务:

>> parpool(512)

运行正版 Mathematica 程序

HEPS 实验购买的 Mathematica 主程序安装在 /sharefs/heps/data/opt/Mathematica/12.0 目录下,运行 Mathematica 程序可以以 ssh 或 VNC 方式登录 accap002.ihep.ac.cn,并执行:

/sharefs/heps/data/opt/Mathematica/12.0/bin/mathematica

所购买的 license 支持最多 17 个 Mathematica 主程序同时使用,支持最多 136 核的并行计算。下面介绍不同的并行计算调用方法,在 /sharefs/heps/data/opt/examples/MathematicaExamples/ 路径下可以找到相关的例子。

在 accap002 上执行单节点内并行计算任务

以 ssh 或 VNC 方式登录上述节点,在计算程序的并行部分开始之前,加上:

LaunchKernels[20]

来启动并行进程。括号中的数字为并行进程数,需不大于该节点当前可以使用的核数。

利用 SLURM 任务调度系统执行跨节点并行计算任务

需登录 accap002.ihep.ac.cn,通过 SLURM 任务调度系统来向计算节点提交计算任务。 利用 SLURM 任务调度系统执行 Mathematica 计算任务有两种方法。如 Mathematica 程序不需要交互,则可以将其保存为 Wolfram Language Script 格式,可以通过命令行方式执行。对于这种情况,可以参考前面介绍的方法编辑 sbatch.sh,在完成 SBATCH 相关设置之后,加一行执行 Mathematica 脚本的语句 math -script test.wls。然后可以通过 sbatch sbatch.sh 来向 SLURM 调度器提交作业。如果 Mathematica 程序需要交互,则可以在终端执行下面的命令,来获取并行计算资源,之后再从 accap002.ihep.ac.cn 上打开 Mathematica 并执行并行计算任务。

salloc -p heps  --qos=regular  --ntasks=72  -t 01:00:00  

上述命令中 ntasks 为并行计算所需的核数,-t 之后为预计完成计算所需的时间。

在 Mathematica 程序中第一个并行计算命令(如 Parallelize)之前加入下面的代码:

(* First obtain from SLURM the computing nodes and the number of cores on each nodes for this parallel computation*)
(* List of computing nodes allocated for this parallel computation *)
nodes = ReadList["!scontrol show hostname $SLURM_NODELIST", String];
(* List of number of cores on each computing node allocated for this parallel computation *)
tpn = Environment["SLURM_TASKS_PER_NODE"];
tpnlist = If[ StringMatchQ[#, RegularExpression[".*\\(x.*\\)"]], 
            Table[ StringTrim[#, RegularExpression["\\(.*"]], 
                {i, ToExpression[ StringTrim[StringTrim[#, RegularExpression[".*\\(x"]], ")"]]}
                 ], 
            #]& /@ StringSplit[tpn, ","] // Flatten // ToExpression;
hosts = AssociationThread[nodes -> tpnlist];
Print["The association of nodes and counts are ", hosts, "\n"];
(* Set up the remote kernels for the parallel computation *)
(* Password-less SSH using public-private key pairs must be set up as an prerequisite *)    
Needs["SubKernels`RemoteKernels`"];
$RemoteCommand = 
  "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -x \
-f -l `3` `1` /sharefs/heps/data/opt/Mathematica/12.0/bin/wolfram \
-wstp -linkmode Connect `4` -linkname '`2`' -subkernel -noinit \
-nopaclet ";
Map[If[hosts[#] > 0, LaunchKernels[RemoteMachine[#, hosts[#]]]] &, 
  Keys[hosts]];
(* Test if the Remote Kernels are successfully launched*)
KernelIDList = ParallelEvaluate[$KernelID];
MachineNameList = ParallelEvaluate[$MachineName];
Print["The kernelIDs are ", KernelIDList];
Print["The computing nodes include ", DeleteDuplicates[MachineNameList],
  ", the number of parallel processes allocated is", Length[MachineNameList], "\n"];

12.9.6 常见问题

/afs 个人目录无法写文件

  • 用户需要每隔 10 个小时重新获取 token,来获得在 /afs 个人目录下的写权限,可以执行如下命令:

    kinit username   # 按提示输入密码
    aklog -d
    

    一种简单的处理办法是登录到服务器之后,利用 crontab 将上述命令设置为定时执行任务:

    sh /sharefs/heps/data/opt/config/generate_crontab_klog.sh username
    

    注意

    请不要在脚本、crontab 或命令行中写入明文密码。如需无人值守的定时认证,请联系计算中心确认安全的凭据方式。

  • /afs 个人目录已满,可以执行如下命令来查看使用份额:

    fs listquota /afs/ihep.ac.cn/users/a-z/username
    du -h /afs/ihep.ac.cn/users/a-z/username
    

    第二条命令可以查看个人目录下哪些文件占用了大量空间。需要特别注意的是,如果经常使用 MATLAB 程序,需要经常执行如下命令来清除缓存:

    rm ~/.felix
    

从 Linux 主机无法通过 ssh 登录服务器

  • Host key verification failed

    比如通过 ssh 登录 accap002 为例,需要在 ~/.ssh/known_hosts 中找到并删除包含 accap002 的各行。

accap002 服务器上 MATLAB 中画图不能正确显示

可以在终端用 matlab -softwareopengl 命令打开 Matlab,画图能够正常显示。

常见问题(FAQ)

见常见问题。


  1. 部分用户的 workfs 个人目录为 /workfs2/csns/username 或 /workfs2/others/username。 ↩

  2. 部分用户的 scratchfs 个人目录为 /scratchfs/csns/username 或 /scratchfs/others/username。 ↩

🤖 AI 助手
💬 快速提问 ×

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