# 校内用户超算集群申请与基本使用简明指南（2024年后新版）

> 2024年春节后，集群登录方式迎来较大更新，本文为翻新版简明指南。

本文将简述集群使用的基本过程，但是详细的操作和使用仍然需要仔细阅读[超级计算](https://doc.nju.edu.cn/books/efe93)使用说明。

## 一、账号获取

1. 新用户在`scc.nju.edu.cn`首页点击[注册账户](https://scc.nju.edu.cn/user/register)。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709283731575.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709283731575.png)

2. 无论校内还是校外用户，均正常按照流程注册：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709287522320.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709287522320.png)


3. 填写表单，用户组名称输入所在课题组的用户组名（不知道就去问课题组里），提交申请；
4. 组长（即课题组里负责审批的人，如果不清楚也问组里）登录`scc.nju.edu.cn`自助审批新用户，通过后账号立刻生效，即可使用。
5. 新用户再次登入`scc.nju.edu.cn`，即可进行一些账号信息的维护，包括重置密码、查看机时费用等。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709283910195.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709283910195.png)

> 如果组里之前没注册过相关账号，请参考[账号管理](https://doc.nju.edu.cn/books/efe93/page/9c838)申请新组并联系姚老师：`yaoge@nju.edu.cn`

## 二、登入资产

注册成功后，用注册成功的账号和密码（不是统一身份认证）访问`entry.nju.edu.cn`：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709284021389.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709284021389.png)

### 2.1、首次登入

首次登入必须使用浏览器，会要求设置两步认证，屏幕会出现一个二维码要求绑定。手机安装下列支持 RFC 6238 的 TOTP 客户端 APP，扫描二维码（也可手动输入），然后点击“完成绑定”。具体建议的APP参照：[eScience服务与软件兼容性报告
-两步认证软件支持情况表](https://table.nju.edu.cn/dtable/view-external-links/custom/TOTP-APP-list/)。

> 两步认证请另行参阅：[eScience服务双重认证简明指南](https://doc.nju.edu.cn/books/a5771/page/escience)

按照需求使用一个验证器即可。但注意，如果没有备份和导出功能，手机一旦更换，这个设置也会失效。
> 如需重新进行两步认证绑定（如手机丢失），请用注册预留邮箱发邮件至`yaoge@nju.edu.cn`申请并抄送填写用户注册表单的教职工邮箱。
下面以Microsoft Authenticator（绑定微软账号云端备份，但可能安卓/鸿蒙手机需要谷歌框架，不同机型如何打开或安装谷歌框架请直接百度；**更推荐使用eScience提供的密码管理服务**：[密码管理](https://doc.nju.edu.cn/books/a5771)）为例：

[![](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、绑定成功后登入
打开前面的两步认证软件，点开对应`entry.nju.edu.cn`的账号：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709284732473.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709284732473.png)

获取其中的一次性密码代码，登入

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709284778438.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709284778438.png)

进入后，可以看见你的账户下分配的资产：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709284859341.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709284859341.png)

按照本页顶端的提示，安装AccessClient之后，点击更多，会显示三种访问方式：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709284912046.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709284912046.png)

- **ssh**：命令行登入，这个一般就足够了
- **sftp**：大量（数量多、体积大）文件传输
- **Xfwd**：图形界面

直接点击上述选项访问可以直接在从浏览器访问而无需再次登入账户。此外，用户可以通过点击右上角用户名，更改**账号设置-会话配置-字符会话/文件传输**来实现更加方便地登入。例如，将字符会话和文件传输会话访问方式分别修改为`xshell`和`xftp`或其他本机安装有的客户端，即可实现从`entry.nju.edu.cn`点击直接唤起已经安装的Xshell和Xftp，无需再次输入密码。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709884246672.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709884246672.png)

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709884439152.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709884439152.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)

设置自定义的名称之后，将**主机**设置为`entry.nju.edu.cn`：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709285218219.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709285218219.png)

在**连接-用户身份验证**中，按照`集群用户名/10.1.0.101/self`的格式填入用户名，同时密码空着（或者输入账户密码也可，但是需要阅读下面“分两步输入”的方法介绍）：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709285583021.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709285583021.png)

**确定**后保存。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709285705534.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709285705534.png)

打开刚刚新建的会话，然后第一次连接可能会出现“SSH安全警告”，询问是否“接受此主机密码？”，接受并保存即可。

下一步中，需要输入密码。密码有两种输入方式：

1. 一次性输入：和原来一样，遵循`账户密码+两步认证`的格式，其中账户密码和`scc.nju.edu.cn`的登录密码相同，但是中间用空格空开。例如，账户密码为：`qwerty`，此时两步认证软件内的代码为`123456`，那么你这里需要填写`qwerty 123456`。千万**不要勾选记住密码**，因为这个方式显然后半部分每次会变。
2. 分两步输入：先输入账户密码，在字符界面需要“2nd Password”时再单独输入手机两步认证软件内中的动态口令。**可以勾选记住密码**，因为这个方式中账户密码不变。

[![一次性输入或分两步输入均可](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709885419570.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709885419570.png)

[![分两步输入需要单独输入第二个动态密码](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709885555134.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709885555134.png)


登入成功后，是**登录节点**。应当会这么显示：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709285817353.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709285817353.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)
> 
> 对自己的眼睛好一点……

当然，你也可以直接登录`entry.nju.edu.cn`，按照前文说明配置会话，点击`ssh`方式登录资产自动登录Xshell。这是最简单的做法。

扩展阅读：
[什么是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使用参数：

- 主机：entry.nju.edu.cn，默认端口22
- 协议：sftp
- 用户名：`集群用户名/10.1.0.101/self`
- 密码：和上面登入Xshell的方法1一致，方法2不适用

其他情况可以去[远程登录](https://doc.nju.edu.cn/books/efe93/page/b1a59)文档内寻找答案。

当然，你也可以直接登录`entry.nju.edu.cn`，按照前文说明配置会话，点击`sftp`方式登录资产自动登录Xftp。这是最简单的做法。

### 3.3、网页端的文件传输与编辑

新版`scc.nju.edu.cn`集群门户引入了一个新功能：文件浏览器。这个功能会更像网盘一样，让你直接访问集群上的文件并进行一定简单操作。

在主页面左上角点开，可以看到 **“文件浏览器”** 应用，点击：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709287280275.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709287280275.png)

弹出的界面中，会要求你登录身份。注意，这里的登录方式和前文不一样，密码与`scc.nju.edu.cn`登录方式一致。即：

+ 账号：集群用户名
+ 密码：`scc.nju.edu.cn`门户密码（无两步认证）

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709286132350.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709286132350.png)

认证后，还有两步认证验证码：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709286256771.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709286256771.png)

这里的两步认证验证码即为`entry.nju.edu.cn`中该集群账号所绑定的两步认证。

“管道”连接成功之后，刷新该页面就可以看到文件目录了。你可以在网页端完成对文件的操作，包括：
+ 文件/文件目录上传、移动、复制、删除
+ 文件/文件目录解压缩
+ 文本在线编辑
+ 图片在线预览

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709286474371.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709286474371.png)

[![](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/scaled-1680-/image-1709286671900.png)](https://doc.nju.edu.cn/uploads/images/gallery/2024-03/image-1709286671900.png)

## 四、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. 直接从图形界面登入，用文本编辑器修改

[![](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)

3. 使用`scc.nju.edu.cn`的在线文件浏览器简单编辑文本

作业提交脚本本质上其实是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传输管理；或者先通过图形界面（xfwd）/网页端文件浏览器进行一些简单的数据结果查看，再把数据弄回来。

此外，亦可通过HPC账号集成的云盘来实现文件同步：[集成云盘](https://doc.nju.edu.cn/books/efe93/page/352fe)，其用法与Box云盘基本一致。