服务器、超算使用教程
服务器、超算使用教程
服务器、超算介绍
Master
- Linux 系统:Ubuntu 22.04,内核:5.19.0-43-generic
- root 权限:无;无法使用 apt、apt-get、dpkg、snap 命令安装程序
- 任务调度系统:Slurm
- CPU:Intel Xeon Platinum 8369B,共 64 核
- GPU:2 $\times$ 24G RTX 3090;调用 GPU 时只能一整块调用,显存自动分配
- Intel 套件:Intel-oneAPI 2022.1.0
- 内存:共 512G
- 数据存储:较大体积的数据(Master 本地或超算上的)可以放到
${HOME}/storage
/home/share
目录,不同用户可将临时共享文件放此,所有用户可删除文件,但文件夹需其所有者才能删除,因此建议将文件夹进行打包压缩再放到 share 目录中
1 | cat /proc/cpuinfo # CPU 信息查看 |
- Master 上已安装的程序/软件:
cat /opt/bin/README
查看
1 | # Code Function |
GPU 相关
- 查看 cuda 是否安装
1 | nvidia-smi # NVIDIA 驱动 |
- GPU 信息及使用情况查看:
nvidia-smi
、gpustat - Python
1 | watch -d2 nvidia-smi # 持续查看 GPU 使用情况 |
输出信息解读:两个 GPU 都在高负载运行(GPU 利用率 100%,温度分别为 77 摄氏度和 72 摄氏度),并且接近其功率上限。GPU 上的内存几乎被完全利用,表明运行的进程(主要是 python)正在积极使用 GPU 资源。
1 | # GPU 列表 |
- 指定使用哪块 GPU(适用于 TensorFlow 和 PyTorch 等任何使用 CUDA 的程序)
1 | # 指定使用第一块 GPU |
1 | import torch |
Manager
- Linux 系统:Ubuntu 16.04;内核:4.15.0-120-generic
- root 权限:无;无法使用 apt、apt-get、dpkg、snap 命令安装程序
- 任务调度系统:PBS
- CPU:Intel Xeon E5520、Intel Xeon E5630(node 9)、Intel Xeon E5-2620(node 11);共 100 核,共 12 个节点(node1~11 + manager;其中 node2,6,7,8 经常 down)
- GPU:Matrox Electronics Systems Ltd. MGA G200eW WPCM450、XGI Technology Inc. XG20 core(前两者主要用于服务器的视频输出和基本图形处理任务)、2 $\times$ 4.6G NVIDIA Tesla K20m(node 11)
- 内存:登录、Manager 节点约 4G;node 11 约 16G;node 1, 3-5 约 24G;node 9-10 约 16G
- Intel 套件:Composer XE 2015
- glibc 版本过低(编译安装新版本较为复杂)
超算
- Linux 系统:Rocky Linux(基于 Centos)
- root 权限:无;无法使用 yum 命令安装软件程序
- 任务调度系统:Slurm;Pi、ARM、思源一号提交的任务在任一平台都可以看到
- CPU、内存:超算中的 CPU 核有内存配比限制
- GPU:超算的 GPU 队列很难排到
- 程序/软件:Pi 的一些基础程序的版本比思源一号旧许多;查看:
module av
- Pi 和 ARM 用户目录相同
- sylogin1 登录节点占用率较高,比其他(2-5)卡,是超算断开连接,vim 使用卡顿的可能原因之一;超算的登录节点为随机分配,应尽量避免登录到 sylogin1
服务器、超算登录
SSH 登录
- 通过 SSH 登录集群 - 上海交大超算平台用户手册 Documentation
- 超算平台的 SSH 端口均为默认值 22,
-p 22
可省略
1 | # manager |
终端 SSH 免密登录
上海交通大学超算管理系统:HAM
交大超算登录现需要与 jAccount 绑定:账号安全信息管理 - 上海交大超算平台用户手册 Documentation
无需输入用户名和密码即可登录,还可以作为服务器的别名来简化使用。免密登录需建立从远程主机(集群的登录节点)到本地主机的 SSH 信任关系。建立信任关系后,双方将通过 SSH 密钥对进行身份验证。
在本地主机上生成的 SSH 密钥对,输入以下命令,持续 Enter 即可;将在
~/.ssh
(或C:\User\username\.ssh
) 路径下生成密钥对文件id_rsa
和id_rsa.pub
;将id_rsa.pub
的内容(注意字符之间只有一个空格,复制后需注意)添加到远程主机的~/.ssh/authorized_keys
文件中。
1 | ssh-keygen -t rsa |
密钥对生成方式有 ssh-keygen 和 putty(ppk 格式,WinSCP 软件密钥验证需该格式),其中后者可通过 Mobaxterm 软件中 tool 工具中的 MobaKeyGen 来生成(在空白处乱按加快生成速度;将生成的公钥保存成 file.pub,私钥保存成 file.ppk)。
设置服务器别名:编辑或创建
~/.ssh/config
(或C:\User\XXX\.ssh\config
)
1 | Host alias |
- 具体示例:
1 | Host Manager |
- 设置完成后,只需输入以下内容即可实现服务器、超算 SSH 登录:
1 | ssh Master |
- 可能会出现的问题
- SSH 私钥的权限过于开放:SSH 私钥文件应该只能被文件的拥有者读取和写入,而不能被其他用户访问
- 解决方法:
chmod 600 id_rsa
1 | Permissions 0444 for 'id_rsa' are too open. |
客户端免密登录
常用软件:MobaXterm、Tabby(有 交我算定制版客户端) 等。
免密登录操作:将
id_rsa
私钥文件所在路径添加到 Use private key 选项中(Bookmark settings 选项可以将默认的 Session name 改成自己想要的别名)。
VSCode 免密登录
安装 Remote Development 扩展,如上面的
~/.ssh/config
内容已设置好,会自动识别设置好的主机名(config 文件所在路径可自定义)VSCode 远程连接 Manager(机子较老,10 余年历史),有时会导致其负载过高而崩溃,不建议长时间连接;VSCode 远程连接 Master(2023 年 5 月配置)暂无相关问题
在超算上使用 Python 插件中的 Pylance 语言服务器(LSP)以及 Jupyter 插件,常会出现 Pylance 崩溃的问题(Pi 稍微稳定些),因为超算的登录节点资源有限,建议将 Pylance 换成 Jedi(功能不及 Pylance),会稍微稳定些;建议不在超算平台上使用 Jupyter Notebook;Master 暂无相关问题
任务准备、提交、检查
Slurm 任务调度系统
通过 Jobid 来进入计算目录:A12 通过job-ID快速进入计算目录 - Learn VASP The Hard Way
1 | # 常用命令 |
PBS 任务调度系统
Manager 为此作业调度系统
submit
命令是孔老师写的一个 PBS 任务提交脚本-nc
参数含义:不将文件复制到计算节点中;推荐用带-nc
参数的命令提交任务命令会自动生成对应的
PBS.batch
脚本;当提交的任务出错时,修改PBS.batch
脚本内容,之后可使用qsub PBS.batch
命令提交任务
1 | # 常用命令 |
- Manager 中与 PBS 相关的一些 alias 设置
1 | # 查看 q 相关命令 alias |
超算队列介绍
超算队列内存情况
1 | arm128c256g 每核2G内存 arm |
- 队列资源选择
1 | 资源如何选择? |
- 192c6t 和 huge 大内存队列,核数有一定要求,且排队时间较长
1 | # 192c6t 队列 |
- 超算收费情况(2023.05.30)
1 | 交我算平台集群总费用为CPU,GPU和存储费用之和。费率标准如下: |
1 | module avail/av # 查看超算预部署软件模块 |
- 超算代理相关设置:常见问题 - 上海交大超算平台用户手册 Documentation
思源一号克隆 GitHub repo(或 wget 下载网络文件) 速度慢或无法进行;Pi 则正常。
解决方案:在计算节点上运行(有时也还是不稳定)或使用 Github 增强 - 高速下载 油猴插件,选择合适的 URL 进行克隆。
计算节点是通过 proxy 节点代理进行网络访问的,因此一些软件需要特定的代理设置。需要找到软件的配置文件,修改软件的代理设置。
1 | echo $http_proxy $https_proxy $no_proxy # 查看代理 |
git、wget、curl 等软件支持通用变量,代理参数设置为:
1 | # 思源一号计算节点通用代理设置 |
Python、MATLAB、Rstudio、fasterq-dump 等软件需要查询软件官网确定配置参数:
1 | ### fasterq-dump 文件,配置文件路径 ~/.ncbi/user-settings.mkfg |
注意:
- 队列一般不设置独占节点(不能加
#SBATCH --exclusive
) - 超算平台无法安装 OVITO,可视化平台有 OVITO,按小时收费
- 登录密码输错 5 词,需等待一段时候才能再次登录
任务提交示例
以下任务提交脚本代码使用的思源一号中的 64c512g 队列;超算中有许多不同版本的程序,可根据自身需求
module load
相应版本的程序SBATCH 相关参数
1 | #SBATCH --job-name=vasp_job |
VASP
- 思源一号 VASP
1 |
|
- 本地编译的 VASP
1 |
|
注:相关命令含义
1 | ulimit -s unlimited |
ulimit -s unlimited
- 设置进程的堆栈大小限制。通过指定unlimited
,表示将堆栈大小限制设置为无限制。堆栈是用于存储函数调用和局部变量的内存区域,增加堆栈大小限制可以允许进程使用更多的堆栈空间。这对于需要递归调用或者使用大量局部变量的程序可能是必需的。export OMP_NUM_THREADS=1
- 设置OMP_NUM_THREADS
环境变量,并将其值设为 1。OMP_NUM_THREADS
是 OpenMP 库使用的一个环境变量,用于指定并行计算时使用的线程数。在这里,将线程数设置为 1 表示只使用一个线程进行并行计算。这可以用于限制并行化的程度,特别是当希望使用单线程执行时。export I_MPI_ADJUST_REDUCE=3
- 设置I_MPI_ADJUST_REDUCE
环境变量,并将其值设为 3。I_MPI_ADJUST_REDUCE
是 Intel MPI 库使用的一个环境变量,用于调整 MPI 库中用于并行归约操作(reduce operation)的算法。将该变量设置为 3 表示使用性能优化的归约算法。这可以提高 MPI 程序中归约操作的效率。
LAMMPS
- 思源一号 LAMMPS
1 |
|
- 超算 Pi 新 CPU 队列 LAMMPS
1 |
|
Python
1 |
|
Shell
1 |
|
任务状态检查
- 任务提交后,会生成
jobid.err
和jobid.out
文件err
文件为空(大部分情况下),表示提交的任务未出错err
文件不为空,表示提交的任务出错;需查看err
文件中的出错提示,进行修改- 若
err
、out
文件出现以下内容,大概率为超算平台出现故障,请与相关负责人联系
1 | # err 文件内容 |
相关问题
mpirun
和srun
的区别:srun和mpirun的区别;srun 是 Slurm 作业调度系统中的命令,用于启动和管理分布式并行作业;mpirun 是 MPI 环境中 (实现形式有 openmpi,mpich,intel mpi 等)的一个命令,与作业调度系统无关
数据传输
参考:
- 数据共享与传输 - 上海交大超算平台用户手册 Documentation
- 提高数据传输速度(利用外部指令并发多个 scp/rsync 进程):数据传输技巧 - 上海交大超算平台用户手册 Documentation
超算进行数据传输一般在 data 节点上进行。超算传输节点
1 | data.hpc.sjtu.edu.cn # Pi |
命令行
scp:Secure Copy,基于 SSH 协议进行文件传输,不支持增量传输
rsync:支持 SSH 协议或 rsync 协议、增量传输、支持本地和远程同步、支持断点续传
因安全策略升级,在集群的终端上不支持 scp/rsync 的远程传输功能,所以需要从用户本地终端使用 scp/rsync 命令:数据传输方案和传输节点 - 上海交大超算平台用户手册 Documentation
rsync 显示整体进度(不太好用):Overall Progress with rsync - Dave Dribin’s Blog
1 | # scp 语法 |
客户端
软件主要使用 WinSCP;免密登录操作见下图:
Manager 与超算间的数据传输
- 上传与下载:孔老师写的 upload 与 download 脚本
- Manager 与 Pi:
upload -s P
或将P
改成H
或h
- Manager 与思源一号:将
P
改成s
- Manager 与 Pi:
1 | # 上传 |
程序编译/安装
- 在超算上编译程序,由于登录节点资源有限,需在计算节点上进行,需申请临时计算节点(一个核即可)
1 | # Pi |
源码编译
编译前,需理解 Makefile 文件中的命令含义!
1 | ./configure # 配置、生成 Makefile 文件 |
posconv、NumNei
- 具体安装步骤见:
latgen
- 具体安装步骤见:
dumpana
- 具体安装步骤见:
atomsk
- 具体安装步骤见:
VASP.5.4.4
- 具体安装步骤见:
HDF5
- 具体安装步骤见:
VASP.6.3.0 + HDF5
- 具体安装步骤见:
VASP + VTST
- 具体安装步骤见:
LAMMPS
使用 cmake 编译
1 | wget https://download.lammps.org/tars/lammps-2Aug2023.tar.gz |
vaspkit
- VASP 预、后处理工具;Overview — VASPKIT 1.5 documentation
- 预处理:不同计算任务的输入文件生成与检验;结构对称性分析等
- 后处理:力学性质;能带;态密度;费米面分析等
- 安装:在 vaspkit - Binaries 中下载 vaspkit 最新版本,解压,拷贝配置文件,对可执行文件设置软链接
1 | cp how_to_set_environment_variables ~/.vaspkit |
- 赝势:可拷贝 Master 或 Manager 上的赝势上传到超算目录;赝势格式如下:
1 | pseudopotentials |
1 | vaspkit -help # 查看帮助 |
phonopy
- phonopy:计算声子谱
安装
1 | conda install -c conda-forge phonopy |
sqsgen
- 安装:How to install sqsgen? — sqsgenerator 0.2 documentation
- 命令行使用:CLI reference — sqsgenerator 0.2 documentation
- 多亚点阵 sqsgen 生成示例:Advanced topics — sqsgenerator 0.2 documentation
sqs 生成程序
- 目标函数为 WC 参数;
- 生成速度相比 ATAT 及 ICET 相关模块要快,功能也更多;
- 10000 个原子构型的 sqs 生成速度在 2min 以内;
- 可事先估计生成 sqs 结构所耗费时间;可计算 WC 参数等;
- 浓度用具体的原子数目表示,比百分比形式更方便;
- 有 OpenMP 和 OpenMP+MPI 两种版本。
conda 版本(OpenMP 版本)
1 | conda create --name sqsgen python=3 |
编译版本(OpenMP+MPI)
1 | conda create --name sqsgen -c conda-forge boost boost-cpp cmake gxx_linux-64 libgomp numpy pip python=3 |
- OpenMP 版本
1 | conda activate sqsgen |
- OpenMP+MPI 版本
1 | conda activate sqsgen |
Tex Live
Tex Live 版本:思源一号 2018;Pi 2013;Manager 2015;Master 未安装
具体安装步骤见:
ATAT
WIP…
其他
- 超算高版本 glibc 编译:glibc - 上海交大超算平台用户手册 Documentation
- 超算上没有 mpi4py(得自己安装):Mpi4py - 上海交大超算平台用户手册 Documentation
交我算常见问题总结
以下是使用 “交我算” 过程中可能遇到的常见问题总结:
充值/费率
- 计费系统 (HPC 账号和密码登陆):https://account.hpc.sjtu.edu.cn
- 充值方法:https://net.sjtu.edu.cn/info/1244/2392.htm
- 费率问题:请用交大邮箱发送至 hpc@stju.edu.cn 咨询
致谢模版
- “交我算” 用户在发布科研成果或论文时,应标注 “本论文的计算结果得到了上海交通大学交我算平台的支持和帮助”(The computations in this paper were run on the π 2.0 (or Siyuan Mark-I) cluster supported by the Center for High Performance Computing at Shanghai Jiao Tong University). 论文发表后,欢迎将见刊论文通过邮件发送到 hpc@sjtu.edu.cn。
登录问题
- 连不上集群: https://docs.hpc.sjtu.edu.cn/faq/index.html#id6
- 登录常掉线:https://docs.hpc.sjtu.edu.cn/login/index.html#id10
- HPC studio 登录问题:https://docs.hpc.sjtu.edu.cn/studio/faq.html#hpc-studio-proxy-error
- Jupyter、Rstudio 连接提示需要输入密码:https://docs.hpc.sjtu.edu.cn/studio/faq.html#jupyterrstudio
排队问题
- status 监控系统:https://status.hpc.sjtu.edu.cn,该系统包含各队列上线节点数、排队数、作业数等信息
- π集群排队问题:思源一号可用 CPU/GPU 资源更多,欢迎使用思源一号。
- 通过 squeue 查看作业,NODELIST(REASON) 为 resources/priority 表示正常排队,AssocGrpNodeLimit 表示欠费。
作业问题
- 报错作业咨询,请将用户名、作业 ID、路径、作业脚本名邮件发至 [email protected]。
- NodeFail:计算节点故障导致作业运行失败,重新提交作业即可,失败作业的机时系统会自动返还。
- 运行程序时提示缺少 xxx.so 文件或者显示任务被 kill:如果是在登录节点出现该报错,请申请计算节点再做尝试。
软件安装问题
- 如何在集群上安装软件:https://docs.hpc.sjtu.edu.cn/faq/index.html#id16
- 商业软件问题:https://docs.hpc.sjtu.edu.cn/faq/index.html#id17
数据传输问题
- $\pi$ 集群传输至思源一号:https://docs.hpc.sjtu.edu.cn/transport/index.html#id4
常用链接
- HPC 网站:https://hpc.sjtu.edu.cn
- 用户文档:https://docs.hpc.sjtu.edu.cn
- 超算用户简明手册:https://docs.hpc.sjtu.edu.cn/_static/hpcbriefmanual.pdf
- 集群实时利用率:https://account.hpc.sjtu.edu.cn/top
- 公众号/视频号:交我算