# 校内用户超算集群申请与基本使用简明指南（2024年以前，已过时）

本文将简述集群使用的基本过程，但是详细的操作和使用仍然需要仔细阅读[超级计算](https://doc.nju.edu.cn/books/efe93)使用说明。

**关于scc.nju.edu.cn和access.nju.edu.cn的信息已经过时，请阅读最新版：[校内用户超算集群申请与基本使用简明指南（2024年后新版）](https://doc.nju.edu.cn/books/efe93/page/2024-87J)**

## 一、账号获取

1. 新用户在`scc.nju.edu.cn`首页点击[注册账户](https://scc.nju.edu.cn/user/register)。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978089724.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978089724.png)

2. 校内用户绑定统一身份认证：① **“统一认证平台用户”**选择**“是”**；②点击**验证信息**；③获取验证码，验证码通过邮箱发送。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978150813.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978150813.png)


3. 填写表单，用户组输入导师账号名（不知道就去问课题组里），提交申请；
4. 组长（即课题组里负责审批的人，如果不清楚也问组里）登录`scc.nju.edu.cn`自助审批新用户，通过后账号立刻生效，即可使用。
5. 新用户再次登入`scc.nju.edu.cn`，即可进行一些账号信息的维护，包括重置密码、动态口令等。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978279077.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978279077.png)

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978297129.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978297129.png)

> 如果组里之前没注册过相关账号，请联系姚老师：

## 二、登入资产
注册成功后，用注册成功的账号（不是统一身份认证）访问`access.nju.edu.cn`：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978310066.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978310066.png)

### 2.1、首次登入
首次登入会要求设置两步认证：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978320157.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978320157.png)

两步认证请另行参阅：[eScience服务双重认证简明指南](https://doc.nju.edu.cn/books/a5771/page/escience)

按照需求使用一个验证器即可。但注意，如果没有备份和导出功能，手机一旦更换，这个设置也会失效（当然，你可以直接去`scc.nju.edu.cn`重置，如上文所说）。
下面以Microsoft Authenticator（绑定微软账号云端备份，推荐，但可能安卓/鸿蒙手机需要谷歌框架，不同机型如何打开或安装谷歌框架请直接百度）为例：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978427156.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978427156.png)

扫描二维码即可添加成功。

### 2.2、绑定成功后登入
打开前面的两步认证软件，点开对应`access.nju.edu.cn`的账号：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978545960.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978545960.png)

获取其中的一次性密码代码，登入

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978565063.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978565063.png)

进入后，可以看见你的账户下分配的资产：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978574097.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978574097.png)

按照本页顶端的提示，安装ShtermClient之后，点击资产，会显示四个按钮：

- **ssh**：命令行登入，这个一般就足够了
- **sftp**：大量（数量多、体积大）文件传输
- **Xfce4**：远程图形界面，可以简单进行一些文件操作
- **VNC**：远程图形界面

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978600363.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978600363.png)

## 三、登录资产
### 3.1、SSH客户端登入：以Xshell为例

由于命令行一定是需要跨过去的坎，所以后面默认会主要使用ssh方式。
Windows下推荐使用Xshell（当然你有其他的客户端甚至是原生的Linux都可以）：
[家庭/学校免费 - NetSarang Website](https://www.xshell.com/zh/free-for-home-school/)

安装完打开Xshell，点击左上角的**新建**来新建会话

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978613655.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978613655.png)

设置自定义的名称之后，将**主机**设置为`access.nju.edu.cn`（这是教育网/校园网入口）：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978668872.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978668872.png)

**确定**后保存。

双击刚刚新建的会话，然后第一次连接可能会出现“SSH安全警告”，询问是否“接受此主机密码？”，接受并保存即可。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978738793.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978738793.png)

下一个可能弹出的页面中，会询问你的用户名（注意！**不是统一身份认证**，是你的集群上的用户名！），为了方便**可以勾选记住用户名**：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978752748.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978752748.png)

下一步中，需要输入密码。密码请遵循`账户密码+两步认证`的格式，但是中间用空格空开。例如，账户密码为：`qwerty`，此时两步认证软件软件内的代码为`123456`，那么你这里需要填写`qwerty 123456`。千万**不要勾选记住密码**，因为这个格式显然后半部分每次会变。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978776600.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978776600.png)

登入成功后，是**登录节点**。应当会这么显示：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978788702.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978788702.png)

> 友情提示——在这里改字体和大小：
>
> [![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978822672.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978822672.png)
>
> 在这里改配色方案：
> 
> [![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690978832975.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690978832975.png)
> 
> 对自己的眼睛好一点……

扩展阅读：
[什么是SSH？SSH是如何工作的？ - 华为](https://info.support.huawei.com/info-finder/encyclopedia/zh/SSH.html)

### 3.2、更易用的文件传输：Xftp
集群支持sftp方式的文件传输。比起使用rz、sz等命令的方式，sftp客户端具有易用、直观的特点，适合传输多个、大批量的文件。Windows下，这里和Xshell配套的软件便是Xftp。

[XFTP - NetSarang Website](https://www.xshell.com/zh/xftp/)

Xftp使用参数：

- 主机：access.nju.edu.cn，默认端口22
- 协议：sftp
- 用户名：集群用户名
- 密码：和上面登入Xshell的密码一致
- 用户目录：如果你在上面ssh登入后，输入echo ~返回的是/fsa/home/集群用户名，那么sftp下用户目录就是/hpc_login1 sftp (10.1.0.101)/self/fsa/home/集群用户名

非Windows用户的SFTP方案见：[SFTP登录（文件传输）](https://doc.nju.edu.cn/link/2#bkmrk-sftp%E7%99%BB%E5%BD%95%EF%BC%88%E6%96%87%E4%BB%B6%E4%BC%A0%E8%BE%93%EF%BC%89)

其他情况可以去[远程登录](https://doc.nju.edu.cn/books/efe93/page/b1a59)文档内寻找答案。

## 四、Linux命令行使用
命令行五花八门，说到底，都是`命令 参数`（注意中间的空格）这种格式。

基本命令行参考：

| 命令 | 用途 |
| --- | --- |
| `ls <路径>` | 列出指定目录<路径>下的文件和文件夹 |
| `cd <路径>` | 切换到指定目录<路径> |
| `mkdir <文件夹>` | 在当前目录创建一个叫<文件夹>的文件夹 |
| `vim <文件>` | 使用Vim编辑文本文件<文件>（脚本之类的），如果<文件>不存在，就创建它。Vim是一款非常强大的命令行编辑器，学习见：[Linux vi/vim &#124; 菜鸟教程](https://www.runoob.com/linux/linux-vim.html)、[GitHub - wsdjeg/Learn-Vim_zh_cn](https://github.com/wsdjeg/Learn-Vim_zh_cn) |
| `rz`和`sz <文件>` | 少量小文件传输和下载 |
| `tar` | 打包压缩与解压，可以用来打包或解压多个文件 |
| `cp` | 复制 |
| `mv` | 移动 |
| `rm` | 删除 |

上表只是告诉了你一个目录，具体各个命令如何使用你可以根据上述表来搜索学习。
在集群上为了提交作业，还需要知道`bsub`、`bjobs`等集群使用的lsf作业系统命令。这部分需要仔细阅读：[https://doc.nju.edu.cn/books/efe93/page/4f4ad](https://doc.nju.edu.cn/books/efe93/page/4f4ad)

尽管有SFTP软件可以免去大量Linux命令文件操作，但是还是建议稍微了解一些Linux的基础命令。


## 五、一个提交作业的演示

### 基本的脚本提交

以提交一个`DMI_pbc.mix`的mumax计算脚本为例：
ssh登入后，在登录节点上输入：
```bash
ls
```
查看当前目录（登录节点的用户主目录）有些什么。
```bash
mkdir mumax_20221014
cd mumax_20221014
```
第一行：创建一个`mumax_20221014`的文件夹（**m**a**k**e **dir**ectory）管理这一次的计算任务

第二行：切换进刚刚创建的那个目录（**c**hange **d**irectory）
```bash
rz
```
唤起传输界面：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690979202211.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690979202211.png)

选择要上传的mumax计算脚本`DMI_pbc.mix`文件。

```bash
vim job.lsf
```
创建一个`job.lsf`的作业提交脚本，并且参照[https://doc.nju.edu.cn/books/efe93/page/mumax](https://doc.nju.edu.cn/books/efe93/page/mumax3) 的示例写入：
```bash
#BSUB -q 723090ib
#BSUB -gpu num=1

mx3in=DMI_pbc.mix

module load cuda/11.2.0
/fs00/software/mumax/3.10-cuda11.0/mumax3 $mx3in
```
第1行：作业参数，指定使用的计算队列

第2行：作业参数，指定使用的GPU数目

第4行：`mx3in`变量设定为`DMI_pbc.mix`，当然你可以不叫这个变量名

第6行：载入`cuda-11.2.0`的依赖（见：[https://doc.nju.edu.cn/books/efe93/page/nvidia](https://doc.nju.edu.cn/books/efe93/page/nvidia)）

第7行：使用`mumax3`软件输入`mx3in`变量的值所表示的计算脚本

当然，如果上述流程实在用不习惯，也可以：

1. 直接用Xfce4从图形界面登入，用文本编辑器修改

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690979279787.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690979279787.png)

2. 使用SFTP方案直接在本地修改，然后上传回去

> 无论是如何上传脚本，**从Windows上传回集群**最好用`dos2unix`命令来转换换行符，或者干脆在Windows下通过编辑器如VS Code自己的换行符切换来处理这个问题。
>
> [![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690979517690.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690979517690.png)

作业提交脚本本质上其实是shell脚本，因此[Shell 教程 | 菜鸟教程](https://www.runoob.com/linux/linux-shell.html)也通用。
```bash
bsub < job.lsf
```
将`job.lsf`通过`bsub`命令按照作业提交脚本的设定提交至**计算队列**。提交完成后会显示：
```
[hfd_jitz@login1 mumax_test_2]$ bsub < mumax_job.lsf 
Job <40999791> is submitted to queue <723090ib>.
```

### 查看作业情况

```bash
bjobs
```
可以查看你当前在跑的任务情况：
```
[hfd_jitz@login1 mumax_test_2]$ bjobs
JOBID    USER        STAT  QUEUE       JOB_NAME   SUBMIT_TIME  EXEC_HOST
40999791 hfd_jitz    RUN   723090ib    *x3 $mx3in Oct 14 22:08 6*m002
```

任务ID：`40999791`

计算队列：`723090ib`

CPU核数：`6`（单GPU分配的默认值）

主机：`m002`

特别地，本例子是一个GPU任务，因此还可以这样查看GPU任务的运行情况：

```bash
ssh m002
```
登入到计算节点（注意看`@`前后的“host”已经从`login1`变为`m002`）：
```
[hfd_jitz@login1 mumax_test_2]$ ssh m002
Last login: Fri Oct 14 11:37:26 2022 from m002
[hfd_jitz@m002 ~]$ 
```
在计算节点执行
```bash
nvidia-smi
```
可以查看GPU上的资源使用情况，对应的GPU编号即是你在使用的部分。
[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690979862143.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690979862143.png)
```bash
top
```
可以查看当前计算节点的任务。
[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690979879625.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690979879625.png)

此外，还有一个可视化查看的方法：[https://mon.nju.edu.cn](https://mon.nju.edu.cn)

进入grafana，在`General/NVIDIA DCGM Exporter`中，instance为`m002:9400`（也就是刚才那个m002）的GPU情况如下：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/scaled-1680-/image-1690979871596.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-08/image-1690979871596.png)

可以看出，上述任务15分钟不到就跑完了。

如果需要从计算节点m002返回到登录节点login1，则输入
```bash
exit
```
如果要下载文件，通过`sz <文件路径>`命令可以下载单个文件；或者通过Xftp传输管理；或者先通过图形界面（Xfce4）进行一些简单的数据结果查看，再把数据弄回来。

此外，亦可通过HPC账号集成的云盘来实现文件同步：[集成云盘](https://doc.nju.edu.cn/books/efe93/page/352fe)，其用法与Box云盘基本一致。