# 常见问题

# 网络
### 登录节点进行网络接入认证

#### 在登录节点登录校园网账号

集群中的登录节点进行网络接入认证（即登入南京大学校园网认证`p.nju.edu.cn`）后才可访问互联网，认证后登录节点**所有用户**均可访问互联网（相当于整个登录节点共享），请注意网络与账号隐私安全！

命令行登录和登出`p.nju.edu.cn`的方法有：
```sh
curl -X POST https://p.nju.edu.cn/api/portal/v1/login -H "Content-type: application/json" -d '{"username":"<username>","password":"<password>"}'
curl -X POST https://p.nju.edu.cn/api/portal/v1/logout -H "Content-type: application/json" -d '{}'
```

```sh
curl -s "http://p2.nju.edu.cn/portal_io/login?username=<username>&password=<password>"
curl -s http://p2.nju.edu.cn/portal_io/logout
```

**【强烈推荐】**如果有一些软件源需求，如`conda`、`pip`等包管理，或者需要外部代码库、容器，您可以通过中心提供的下列服务直接在集群上使用，无需登录校园网认证：

+ `mirror.nju.edu.cn`：`conda`、`pip`等大量常用软件源或代码仓库镜像
+ [代码托管](https://doc.nju.edu.cn/books/16790/page/git)：可手动镜像各大在线git仓库作为中转
+ [私服仓库](https://doc.nju.edu.cn/books/357a6)：各软件源、容器缓存

### 计算节点访问网络

所有计算节点均不能自由无限制的访问外网（含校园网和互联网），如需访问可以单独申请开放。当前已经放开的网络访问
<iframe className="dtable-embed" src="https://table.nju.edu.cn/dtable/view-external-links/custom/hpc-internet/" frameBorder="0" width="100%" height="1000" style="background: transparent; border: 1px solid #ccc;"></iframe>


### SSH/SFTP登录时报 no matching host key type found
SSH/SFTP登录时报错`no matching host key type found. Their offer: ssh-rsa,ssh-dss`，命令行添加选项`-o HostKeyAlgorithms=+ssh-rsa`或在`~/.ssh/config`中增加`HostKeyAlgorithms +ssh-rsa`


# 安装
### pip安装包到自己的目录下
Python的大多数包不需要root权限也能安装，只需在pip install后加-t指定安装目录即可，如：
```sh
cd scikit-opt-master
pip install -t $HOME .
```
这样就装到自己的家目录下。在~/.bashrc里或者作业脚本中加上环境变量
```sh
export PYTHONPATH=$HOME:$PYTHONPATH
```

# 作业
### 作业运行时实际占用CPU核数过多

1. 在作业中限定使用的CPU核数与申请核数相同，否则超过申请核数使用资源的作业会被杀掉。

特别是MATLAB/Python，很多Python包会自动多核并行计算，需要使用环境变量（如 `OMP_NUM_THREADS`、`NUMEXPR_NUM_THREADS`、`OPENBLAS_NUM_THREADS`、`MKL_NUM_THREADS`）等方式设定线程数，与进程数一起匹配申请的核数。
```
export OMP_NUM_THREADS=$LSB_DJOB_NUMPROC
export NUMEXPR_NUM_THREADS=$LSB_DJOB_NUMPROC
export OPENBLAS_NUM_THREADS=$LSB_DJOB_NUMPROC
export MKL_NUM_THREADS=$LSB_DJOB_NUMPROC
```

2. 可以尝试在提交作业时添加如下参数，做CPU亲和绑定
```
#BSUB -R affinity[core:cpubind=core:membind=localprefer:distribute=pack]
```
3. 如果实在不行可以 `#BSUB -x` 独占节点运行作业

### 排队作业数上限
动态限制用户排队作业数不能超过MAX(1000,MIN((30000-总作业数)/10,(20000-总排队作业数)/6))

即用户排队作业数，不超过三万减去总作业数的十分之一，也不超过二万减去总排队作业数的六分之一，但保底一千个。

### 作业状态UNKWN

一般是两种情况之一，如果作业状态长时间处于UNKWN状态，一般来说就是计算节点坏了可以直接杀掉作业。
1. 因为计算节点负载过高，未能及时获取作业状态导致状态未知，这种情况一般只需要等待即可，待负载下降获取状态后就正常了。
2. 因为计算节点出现故障且长时间未恢复，调度系统无法获取作业状态，此时如果登录不到相应的计算节点，可以直接杀掉作业。

# 路径
### $HOME相对路径
让/bbfs相应目录保持在$HOME下的相对路径，这样可以轻松应对未来路径的变更
```
[yaoge123@login1 ~]$ ln -s /bbfs$HOME cache
[yaoge123@login1 ~]$ ln -s /bbfs/scratch/$USER scratch
[yaoge123@login1 ~]$ ls -l|grep bbfs
lrwxrwxrwx 1 yaoge123 yaoge 26 Mar 16 11:45 cache -> /bbfs/fsb/home/yaoge/yaoge123
lrwxrwxrwx 1 yaoge123 yaoge 20 Mar 16 11:45 scratch -> /bbfs/scratch/yaoge123
```