9.2.3 中国科学技术大学计算环境¶
中国科学技术大学计算平台运行着 HTCondor 集群,包含计算资源约 2000 CPU 核、30 多块 GPU 卡。Lustre 文件系统为实验组和个人用户提供了多个文件存储服务,存储资源总计约 3.9PB。
各实验计算资源使用及限额如下:
| 组 | 组 quota | default quota |
|---|---|---|
| ATLAS | 100 | 70 |
| BESIII | 400 | 300 |
| BELLE | 50 | 35 |
| CMS | 100 | 70 |
| HIC | 100 | 70 |
| JLAB | 50 | 35 |
| NAPE | 50 | 35 |
| STCF | 460 | 360 |
9.2.3.1 登录节点¶
登录节点是用户使用计算平台的唯一接口。用户在登录节点编辑文件、调试程序、提交作业。用户使用账号和密码连接登录节点成功后,即可使用相应的计算资源。
| 序号 | 登录节点操作系统 | 数量 | IP |
|---|---|---|---|
| 1 | AlmaLinux 9.4 (64 bit) | 1 | 202.141.163.220 |
| 2 | AlmaLinux 9.4 (64 bit) | 1 | 202.141.163.221 |
| 3 | AlmaLinux 9.4 (64 bit) | 1 | 202.141.163.222 |
9.2.3.2 SSH 登录集群¶
本节分别介绍 Linux、Windows 和 macOS 环境下如何通过 SSH 登录集群。
Linux 下登录集群¶
Linux 下最方便的是通过终端直接 ssh 登录到集群。
macOS 下登录集群¶
macOS 下登录集群的方式参考 Linux 下的登录方式。
Windows 下登录集群¶
Windows 下没有原生的 SSH 客户端,需要安装第三方软件。Windows 10 中带有原生 SSH 客户端,可通过"添加功能"启用 OpenSSH。
SSH 客户端¶
Windows 下有很多 SSH 客户端软件,下面是一些比较常用的:
- Putty - 老牌的 SSH 客户端,十分小巧。
- MobaXterm - 带有 Xserver 和 SSH,支持标签页。
- Solar Putty - 支持标签页的 Putty。
- WinSCP - 非常好用的 SSH 客户端。
- Bitvise SSH - SSH Client 免费。
- Xshell - 商业软件,有免费的个人和教育版。
- SSH Shell Client
- WSL for Windows - Windows 10 的优选之一,可以完整使用 Linux 终端环境。
登录示例¶
下面以 Putty 为例,说明如何登录集群。
-
从官网下载安装包安装。
-
打开 Putty,在 Host Name 那里填上
user@hostname,端口 Port 一般为 22。填写好后可以点击下面的 Save 保存会话。如有保存会话,可以选中会话,点击 Load。如图所示。
-
若想使用密钥登录,在 Connection → SSH → Auth 里,填写自己的密钥路径,如图红框内所示。

-
登录集群。点击下方的 Open。首次连接会提示服务器指纹,选择是或否:"是"将保存指纹,"否"则不保存。保存后登录同一台服务器将不再提示(如果提示,则表示服务器指纹发生了变化,可能是重装系统所致)。

图 9.2.3-1 忽略连接中可能的警告提示
若没有选择密钥登录,则会要求输入密码。

密码修改¶
密码口令安全防范要求:
(1)不要使用弱口令。应使用 4 种类型字符(大小写字母、数字、特殊字符)、至少 10 位的口令。且不要包含用户名、个人信息、常见单词、简单字母序列、数字序列或键盘按键序列。
(2)不要在所外公共信息系统(比如微信、QQ、各类网站或 APP 等)使用和站点账户一样的口令。
(3)定期修改口令,建议一年修改一次。
(4)不得将账号口令借给他人使用。
在登录节点上登录后执行 kpasswd 命令以修改密码。
9.2.3.3 作业提交与管理¶
集群使用 HTCondor 作为作业调度系统,HTCondor 支持高通量计算(High Throughput Computing),具有快速吞吐计算任务的特点,适合当前计算环境。 目前集群资源如下:
| 资源类型 | 资源数量 | 备注 |
|---|---|---|
| CPU | 约 2000 核 | |
| GPU | 32 块 GPU 卡 | 4 台节点,单节点 8 块卡 |
队列及时长信息如下:
| 组 | 组 quota | default quota | default 时长(小时) | mid quota | mid 时长(小时) | long quota | long 时长(小时) |
|---|---|---|---|---|---|---|---|
| ATLAS | 100 | 70 | 40 | 20 | 40 | 10 | 336 |
| BESIII | 400 | 300 | 40 | 50 | 40 | 50 | 336 |
| BELLE | 50 | 35 | 40 | 10 | 40 | 5 | 336 |
| CMS | 100 | 70 | 40 | 20 | 40 | 10 | 336 |
| HIC | 100 | 70 | 40 | 20 | 40 | 10 | 336 |
| JLAB | 50 | 35 | 40 | 10 | 40 | 5 | 336 |
| NAPE | 50 | 35 | 40 | 10 | 40 | 5 | 336 |
| STCF | 460 | 360 | 40 | 50 | 40 | 50 | 336 |
其余组的 quota 和作业时长参考 JLAB;此外 GPU 节点的作业时长为 30 天。
作业提交¶
提交作业前,准备一个 jdl 作业描述文件,jdl 文件里需要指明作业脚本路径、标准输出和标准错误文件,提交该 jdl 文件即可。例如:
- 已知作业脚本
test_job.sh(脚本内容为示例,以实际作业为准):
#!/bin/bash
echo "This job is running on $(hostname)."
echo "We're doing a simple operation:"
result=$(expr 1 + 1)
echo " 1+1=$result"
echo "Job Done!"
- 编写作业描述文件
test_job.jdl:
# do not change
universe = vanilla
# set the job script
executable = test_job.sh
# set output and error file name
output = test_job.sh.out.$(Cluster).$(Process)
error = test_job.sh.err.$(Cluster).$(Process)
# set the resource needs
# set the number of cpu core
#request_cpus = 2
# set the number of gpu card
#request_gpus = 2
# set the size of memory, unit is MB
#request_memory = 4000
# set experiment, group, walltime
+HepJob_Experiment = "ATLAS"
+HepJob_RealGroup = "ATLAS"
# if not use test or short walltime,
# keep it same with HepJob_RealGroup
+HepJob_VirtualGroup = "ATLAS"
# walltime need to select from 'default' or 'long'
+HepJob_Walltime = "default"
# combine the attributes above
accounting_group = ATLAS.ATLAS.default
#accounting_group = ATLAS.ATLAS.long
# select from AlmaLinux9 or CentOS7
+HepJob_RequestOS = "AlmaLinux9"
# do not change
+HepJob_SiteName = "ustc"
# 'True' means allow to propagate environments
getenv = True
# do not change
queue
其中,universe 属性没有特别需要,不必修改;executable 属性为作业脚本路径;output 属性为标准输出文件,error 属性为标准错误文件;最后一行以 queue 结尾,无特别需要,不必修改。
注意
集群支持 2 种时长的作业:short 作业时长限制为 40 小时,long 作业时长限制为 30 天(long 作业支持的资源数量有限)。在提交作业时必须要指定属性 accounting_group,以指定所需的队列。
涉及到队列或排队时长的内容,需根据实际情况调整:
+HepJob_RealGroup = "ATLAS"
+HepJob_VirtualGroup = "ATLAS"
+HepJob_Walltime = "default"
accounting_group = ATLAS.ATLAS.default
- 运行命令
condor_submit提交作业:
- 多核作业
在 jdl 文件中增加 request_cpus 属性,如申请 32 核资源,jdl 文件内容如下:
universe = vanilla
executable = test_job.sh
output = test_job.sh.out.$(Cluster).$(Process)
error = test_job.sh.error.$(Cluster).$(Process)
request_cpus = 32
queue
- GPU 作业
在 jdl 文件中增加 request_gpus 属性,如申请 2 块 GPU 卡,jdl 文件内容如下:
universe = vanilla
executable = test_job.sh
output = test_job.sh.out.$(Cluster).$(Process)
error = test_job.sh.error.$(Cluster).$(Process)
request_gpus = 2
queue
作业状态查询¶
- 查询指定用户作业,例如,查询用户 xiaoming 的作业:
- 查询指定 ID 作业,例如,查询 ID 为 1001 的作业:
- 如果作业状态为
'H',表明作业被挂起,可使用如下命令查看挂起原因:
作业删除¶
- 删除指定用户作业,例如,删除用户 xiaoming 的作业:
- 删除指定 ID 作业,例如,删除 ID 为 1001 的作业:
HepJob 作业工具¶
使用 HepJob 工具提交作业,无需准备 job description 文件。
- 提交作业,需使用
-g参数指定组:hep_sub job.sh -g ATLAS - 如需指定作业时长,需添加
-wt long(long 时长表示 30 天,不指定-wt默认是 40 小时):hep_sub job.sh -g ATLAS -wt long - 详细 hepjob 命令参考 9.1.1 HTCondor 作业。
其它¶
详细 HTCondor 使用说明,参考:HTCondor Users Manual。
9.2.3.4 容器使用¶
Apptainer 是目前在高性能计算平台上被大量应用的轻量虚拟化容器技术,能够提供操作系统级的虚拟化。Hep_container 是基于 Apptainer 容器管理命令开发的适用于高能所计算集群的容器客户端工具,满足用户使用多种操作系统版本及环境的需求。
命令说明¶
Hep_container 的容器命令主要有三种操作:images、shell、exec。可以在命令行中通过 help 参数查看各个命令的使用说明和样例:
./hep_container help
Usage : ./hep_container <command> [command options...]
CONTAINER USAGE COMMANDS:
shell Run a Bourne shell within container image
exec Execute a command within container image
images List Support container images
groups List Support groups
-g groupname With a specific group name
EXAMPLES:
./hep_container images
./hep_container groups
./hep_container shell SL5
./hep_container shell SL5 -g physics
./hep_container exec SL5 cat /etc/redhat-release
./hep_container exec SL5 python ./yourprograme.py
./hep_container exec SL5 -g physics cat /etc/redhat-release
查看支持镜像¶
命令格式:hep_container images,该指令可以查看当前提供的操作系统容器镜像。
输出示例:
查看支持用户组/实验组¶
命令格式:hep_container groups,该指令可以查看容器命令当前支持提供的用户组或者实验组。通过 -g 参数指定用户组或实验组,容器内会挂载对应用户目录和实验目录。不指定 -g 参数默认采用主组作为用户组或实验组。
输出示例:
容器环境使用¶
命令格式:hep_container shell [container image],该指令可以在容器内启动一个 shell,因此可以在容器外部与容器内部进行交互操作。运行 exit 则可以退出该 shell。下例为启动一个 SL6 操作系统镜像后,用户当前为 SL6 的系统环境:
交互过程示例:
Singularity: Invoking an interactive shell within container...
Singularity> cat /etc/redhat-release
Scientific Linux SL release 6.9 (Carbon)
Singularity> exit
exit
容器内执行命令¶
命令格式:hep_container exec [container image] [command],该指令可以在外部主机上将指定的命令运行在指定的容器内。下例为在 SL6 的环境容器运行命令,并得到结果:
输出示例:
9.2.3.5 文件存储服务¶
用户文件存储¶
计算中心部署了多套存储系统,为用户和实验组提供存储空间,用于保存软件、脚本和一些实验数据,用户可以在自己有权限的目录下提交作业,具体信息如下表所示。
| 目录 | 用途 | 访问入口(客户端) | 空间大小 |
|---|---|---|---|
| /home | 用户根目录 | 所有节点 | 28TB |
| /ustcfs | 实验数据 | 所有节点 | 1.2PB |
| /ustcfs2 | 实验数据 | 所有节点 | 639TB |
| /ustcfs3 | 实验数据 | 所有节点 | 2.0PB |
CVMFS 软件文件存储¶
CernVM-FS 文件系统提供可伸缩、可靠和低维护的软件分发服务,帮助高能物理在用于运行数据处理应用程序的全球分布式计算基础设施上部署软件。CernVM-FS 实现为用户空间中的 POSIX 只读文件系统(FUSE 模块)。文件和目录驻留在标准 web 服务器上,并挂载在通用名称空间 /cvmfs 中,供用户作业读取软件,保证集群作业的正常运行。
CVMFS 系统当前包含 IHEP 和 CERN 建立的多个软件卷,为不同实验作业提供软件环境,主要一些 IHEP 建立的实验卷信息如表 9.2.3-1 所示:
| 路径 | 用途 |
|---|---|
| /cvmfs/bes3.ihep.ac.cn | 提供bes3所需的软件库 |
| /cvmfs/bes.ihep.ac.cn | 提供bes所需的软件库 |
| /cvmfs/cepc.ihep.ac.cn | 提供cepc实验所需的数据分析软件 |
| /cvmfs/dcomputing.ihep.ac.cn | 提供分布式计算实验所需的数据分析软件 |
| /cvmfs/gluex.ihep.ac.cn | 提供gluex实验所需的数据数据分析软件 |
| /cvmfs/heps_ap.ihep.ac.cn | 提供HEPS实验所需的数据数据分析软件 |
| /cvmfs/juno.ihep.ac.cn | 提供juno实验所需的数据分析软件 |
| /cvmfs/lhaaso.ihep.ac.cn | 提供lhaaso实验所需的数据分析软件 |
| /cvmfs/mlgpu.ihep.ac.cn | 提供gpu机器学习相关软件 |
常见问题(FAQ)¶
见常见问题。
有问题?输入后跳转到对话页继续交流