超级计算

hpc.nju.edu.cn

指引

欢迎您使用e-Science中心超算服务

高性能计算集群提供了安全多样的远程登录方法,使用 SFTP、ZMODEM、云盘等多种方式可以进行数据传输。集群已集成云盘便捷同步和备份数据,如数据量巨大可采用移动存储直接进行数据拷贝,主要文件数据请自行备份!注意查看组和用户的的存储配额情况,满了就无法写入数据了。

禁止在登录节点或计算节点直接运行计算程序,用户必须通过作业调度系统提交作业控制作业,通过容器化技术可以在完全自主和隔离的环境中运行程序。海量作业需要进行优化以便管理,查看信息可见作业调度和集群等整体情况。

集群有丰富的种类各异计算资源,有详细的描述和配置信息,用户可以根据自己的需求进行选择。存储资源中的高性能的全闪Burst Buffer为所有文件系统提供了高速缓存,可大幅提高IO密集型作业的性能。

集群在/fs00/software/中安装有大量的软件资源,如GNUIntelNVIDIAAMD的编译器和数学库等,常用的计算资源支撑软件

集群的所有运行监控运行监控数据全部公开访问,所有维护操作都记录在维护记录中,其中对用户有显著影响和重大维护均在维护日志中列出。

请用户仔细阅读使用手册,如有疑问可以通过QQ群、邮件和电话咨询。

姚舸

地址:江苏省南京市鼓楼区金银街15号唐仲英楼

电话:025-83621186

邮箱:yaoge@nju.edu.cn

QQ群:1406661 公众号:微结构eScience
hpcqqqun.png wechat.jpg

使用手册

使用前请仔细阅读本手册

使用手册

远程登录

登录方式

首次登录

  1. 因为需要进行两步认证绑定,故首次登录必须使用Web浏览器
  2. 在计算机上使用Web浏览器访问 https://access.nju.edu.cn
  3. 账号、密码:输入用户名、密码登录
  4. 手机安装下列等支持 RFC 6238 的 TOTP 客户端APP,扫描二维码(也可手动输入),然后点击“完成绑定”
  5. 两步认证密码:输入手机 APP 中的动态口令登录
  6. 下载安装或升级客户端插件

Web登录(图形和命令行界面)

  1. 使用Web浏览器访问 https://access.nju.edu.cn
  2. 账号、密码:输入用户名、密码登录
  3. 两步认证密码:输入手机 APP 中的动态口令登录
  4. 下载安装或升级客户端插件,需要 Java 运行环境
  5. Web 支持图形界面 xfce4/vnc、命令行界面 ssh ,Web 不支持 SFTP !
  6. 图形界面修改分辨率:Applications - Settings - Display - Resolution

SSH登录(命令行界面)

  1. 中国教育网地址:access.nju.edu.cn,端口:22(默认)
    中国移动地址:njucm.yaoge123.com,端口:5022
    中国电信地址:njuct.yaoge123.com,端口:5022
  2. Username: 输入用户名
  3. Password: 输入密码+空格+动态口令(如密码是YaoGe123,手机APP动态口令是123456,则输入YaoGe123 123456
  4. SSH 不支持图形(X11-Forwarding)
  5. SSH 客户端:PuttyXshellBitvise SSH ClientiTerm2Termius……

SFTP登录(文件传输)

  1. 中国教育网地址:access.nju.edu.cn,端口:22(默认)
    中国移动地址:njucm.yaoge123.com,端口:5022
    中国电信地址:njuct.yaoge123.com,端口:5022
  2. Username: 输入用户名
  3. Password: 输入密码+空格+动态口令(如密码是YaoGe123,手机APP动态口令是123456,则输入YaoGe123 123456
  4. SFTP 路径有特殊前缀( /hpc_login1 sftp (10.1.0.101)/self )。如家目录为/fsa/home/yaoge123,则SFTP路径为/hpc_login1 sftp (10.1.0.101)/self/fsa/home/yaoge123
  5. SFTP 客户端:FileZillaXftpWinSCPBitvise SSH ClientCyberduckSFTP DriveSSHFSLFTP
  6. FileZilla 须在站点(Site)的“传输设置 (Transfer Settings) ”中勾选“限制并发连接数 (Limit number of simultaneous connections) ”并设置“最大连接数 (Maximum number of connections) ”为 1
  7. WinSCP 不可使用 “后台传输 (Background Transfers) ”
  8. Cyberduck 须在“新建书签 (New Bookmark) ”中设置“传输文件 (Transfer Files) ”为“使用浏览器连接 (Use browser connection) ”
  9. SFTP Drive 须设置“ Authentication Type ”为“ Keyboard Interactive ”

登录注意事项

  1. 登录后用 passwd 命令更改密码,密码至少8个字符,包含小写字母、大写字母、数字和特殊字符中至少三种,不能是常见密码
  2. 连续输错5次密码(含动态口令),账号锁定5分钟
  3. 只有最新绑定的动态口令有效,为避免混淆建议在绑定前先删除老的条目,动态口令仅用于登录 access.nju.edu.cn
  4. 必须通过作业调度系统进行计算,不得在登录节点或计算节点直接运行计算程序,否则会被杀掉进程
  5. Shell命令行提示符(环境变量PS1)最后必须以$ 结尾($+空格)

VPN

南京大学 VPN

  1. 使用南京大学统一身份认证账号、密码登录南京大学VPN
  2. 登录成功后,所有访问eScience中心服务的流量均通过此VPN
  3. 南京大学VPN使用方法参考信息化建设管理服务中心网站

eScience中心 VPN

  1. 官网下载安装对应的 VPN Client
  2. 服务器填写下列之一
    中国移动地址:njucm.yaoge123.com
    中国电信地址:njuct.yaoge123.com
  3. 端口:4433
  4. 用户名、密码:超算的用户名密码,注意密码不含动态口令
  5. 登录后仅能通过此VPN访问eScience中心的服务

数据传输

  1. SFTP:使用SFTP客户端浏览并传输文件,适合大文件和整个目录的上下传。
  2. ZMODEM:在登录节点上可用rz上传文件、sz下载文件,适合单个小文件的上下传。
  3. 云盘:通过云盘自动同步和备份文件。
  4. 数据拷贝:直接使用移动硬盘拷贝大量数据文件。

数据拷贝

为方便大数据传输,中心提供数据拷贝服务,用户需提供支持 USB 3.0 接口的大容量移动硬盘存储设备,存储设备应为空且文件系统格式化为 ext4/XFS/exFAT ,并告知需要拷贝数据的目录(绝对路径),保证目录的容量小于移动存储的空余空间。

  高性能计算集群和云盘已紧密集成。

存储配额

并行文件系统fsa等有存储空间配额,存储空间收费按照配额收费。

可以使用命令 myquota 查看配额,用户和组配额同时生效。用户或组占用存储空间超过配额但是<10%的,可以在7天宽限期内降低至配额以内,超期将无法写入任何数据;超过配额>10%,立刻无法写入任何数据,需要降低至配额以内才能写入数据。

登录方式entry(内测)

仅限受邀用户内部测试

登录方式

参考上述登录方式链接内容,并合并覆盖以下内容:

账号密码

  1. 账号:集群用户名
  2. 密码:集群密码

Web

  1. Web支持图形界面xfwd、命令行界面ssh,文件传输sftp

SSH

  1. Username: 输入集群用户名/10.1.0.101/self(如用户名是yaoge,则输入yaoge/10.1.0.101/self)

SFTP

  1. Username: 输入集群用户名/10.1.0.101/self(如用户名是yaoge,则输入yaoge/10.1.0.101/self)

登录注意事项

  1. 登录后用 passwd 命令更改密码,密码至少8个字符,包含小写字母、大写字母、数字和特殊字符中至少三种,不能是常见密码
  2. 必须通过作业调度系统进行计算,不得在登录节点或计算节点直接运行计算程序,否则会被杀掉进程
使用手册

集成云盘

独立账号

高性能计算集群用户可以使用集群账号直接登录云盘,用户名为集群账号@hpc.nju.edu.cn,密码即集群账号密码;如集群账号为yaoge,用户名填写yaoge@hpc.nju.edu.cn。首次使用需要登录网页端激活账号,但集群账号不能使用云盘的上下传外链功能。

云盘上的集群账号与南京大学统一身份认证账号相互独立,如集群账号yaoge@hpc.nju.edu.cn和南京大学统一身份认证账号0102003是两个完全独立的账号,需要分别激活才能使用。

文件同步

通过云盘的多平台多终端同步功能,可将集群中的目录和本地计算机的目录同步,对本地目录的操作几乎立刻反应在集群的目录中,不再需要通过 SFTP 上下传文件。

客户端

登录节点已安装云盘同步客户端和挂载盘客户端

挂载盘命令行客户端

  1. 获取Token(<username>替换为集群账号,<password>替换为密码)

    curl -d "username=<username>@hpc.nju.edu.cn" -d "password=<password>" https://box.nju.edu.cn/api2/auth-token/
    
  2. 创建配置文件~/seadrive.conf<username>替换为集群账号,<token>替换为上一步的返回值

    [account]
    server = https://box.nju.edu.cn
    username = <username>@hpc.nju.edu.cn
    token = <token>
    is_pro = true
    [general]
    client_name = hpc-login
    [cache]
    size_limit = 10GB
    clean_cache_interval = 10
    
  3. 启动挂载盘,命令在前台运行,新开一个窗口进行其它操作

    seadrive -c ~/seadrive.conf -f -d ~/.seadrive/data -l ~/.seadrive/data/logs/seadrive.log ~/SeaDrive
    
  4. 如果报错 Transport endpoint is not connected ,执行:fusermount -u ~/SeaDrive

  5. ~/SeaDrive 目录就是云盘挂载在本地的目录,可以直接读写访问

同步命令行客户端

  1. 创建客户端本地数据目录(目录名可更改)
    mkdir ~/Seafile
    
  2. 初始化客户端并指定本地数据目录(上一步创建的目录)
    seaf-cli init -d ~/Seafile
    
  3. 启动客户端
    seaf-cli start
    
  4. 列出云盘资料库ID(<username>替换为集群账号)
    seaf-cli list-remote -s https://box.nju.edu.cn -u <username>@hpc.nju.edu.cn
    
  5. 将本地目录与云盘资料库同步(<library-id>替换为上一步列出的某个资料库ID,<folder>替换为本地目录)
    seaf-cli sync -s https://box.nju.edu.cn -u <username>@hpc.nju.edu.cn -l <library-id> -d <folder>
    
    将云盘资料库下载到本地目录
    seaf-cli download -s https://box.nju.edu.cn -u <username>@hpc.nju.edu.cn -l <library-id> -d <folder>
    
  6. 查看当前同步状态
    seaf-cli status
    
  7. 解除本地目录同步
    seaf-cli desync -d <folder>
    
  8. 停止客户端
    seaf-cli stop
    
使用手册

环境变量

集群使用Environment Modules以模块的形式对环境变量进行管理。在高性能计算集群系统中,安装有多种软件及其不同版本,它们需要设置不同的环境变量,Environment Module可以将这些环境变量做成模块文件(modulefile)。模块可以被加载(load)、卸载(unload)、切换(switch)等,这些操作会改变相应的环境变量设置,让用户方便的在不同环境之间切换。相比将环境变量设置写入/etc/profile、~/.bashrc或~/.bash_profile,Environment Module操作只影响当前用户的当前登录环境;相比直接source文件,Environment Module的操作可以撤销(卸载)。普通用户还可以自己编写module,具有很好的定制性。用户不仅可以在命令行中Environment Modules,也能在作业提交脚本中使用,对编译和计算环境都能够很好的控制。

常用命令

非 Bash

使用非 Bash 作为 Login Shell 的用户,请在作业提交脚本的首行指明 Shell 或使用 bsub 选项 -L 指定作业运行时 Login Shell 为 Bash

如 Login Shell 为 tcsh,使用下面两种方法中的一种

#!/bin/tcsh #首行指明Shell
#BSUB ...
...
...
#BSUB -L /bin/bash #指定运行时Login Shell为Bash
...

模块示例

$ module avail #查看所有可用模块

------------------------------ /fs00/software/modulefiles ------------------------------
gcc/5.2.0                          impi/5.0.3.048
iccifort/15.0.3                   ips/2011sp1u3
ics/2013                           ips/2015u3
ics/2013sp1u1                  openmpi/1.10.0-gcc-5.2.0
imkl/11.2.3                      openmpi/1.10.0-iccifort-15.0.3

$ module list #显示已加载模块
No Modulefiles Currently Loaded. #没有模块被加载

$ icc --version #故icc找不到
-bash: icc: command not found

$ module whatis ips/2015u3 #查看模块说明
ips/2015u3           : Intel Parallel Studio XE 2015 Update 3 Cluster Edition

$ module load ips/2015u3 #加载模块
$ icc --version
icc (ICC) 15.0.3 20150407
Copyright (C) 1985-2015 Intel Corporation.  All rights reserved.

$ module list #显示已加载模块
Currently Loaded Modulefiles:
  1) ips/2015u3

$ module unload ips/2015u3 #卸载模块
使用手册

提交作业

集群使用作业调度系统管理所有计算作业,该系统接受用户的作业请求,并将作业合理的分配到合适的节点上运行,因此所有用户均应通过作业调度系统提交计算作业,不可直接在任何节点上直接运行。用户使用bsub命令向作业调度系统提交作业,bsub选项非常繁多,可对作业进行非常细致的控制,这里简要介绍常用选项和方法。

bsub 使用方式

命令行方式

bsub [options] command [arguments]

例:提交一个作业到 e5v3ib 队列,需要24核的 MPI 并行程序

$ bsub -q e5v3ib -n 24 mpirun ./app
Job <3206000> is submitted to queue <e5v3ib>

脚本方式

bsub < jobfile

jobfile 为作业的 shell 脚本文件,文件名任意且不需要运行权限,脚本内容如下:

#BSUB [options]
command [arguments]

脚本中以#BSUB开头的行后跟bsub的选项,其它行为作业运行脚本

例:提交一个作业到 e5v3ib 队列,需要48核,需要大内存节点,作业名为 MgSiO3,标准输出文件为out,标准错误输出文件为err,Intel MPI 的并行作业0

$ cat job.lsf 
#BSUB -q e5v3ib
#BSUB -n 48
#BSUB -J MgSiO3
#BSUB -o out
#BSUB -e err
module load ips/2018u4
mpirun ./app

$ bsub < job.lsf 
Job <3207099> is submitted to queue <e5v3ib>.

等价如下命令行方式

$ bsub -q e5v3ib -n 48 -J MgSiO3 -o out -e err "module load ips/2018u4;mpirun ./app"
Job <3207099> is submitted to queue <e5v3ib>.

bsub 常用选项

资源请求
CPU绑定
自动重跑
输入输出

更多选项见官方文档

GPU 作业

提交作业时使用 -gpu 选项申请所需的 GPU 资源,计算进程只可见作业调度系统分配的 GPU。CPU 核自动按照申请节点 GPU 的比例分配,如一节点8个 GPU 和40个 CPU 核,申请2个 GPU 则分配10个 CPU 核。

-gpu 的各个选项用:分隔,默认值为num=1:mode=shared:mps=no:j_exclusive=yes,常用选项如下

MPI/OpenMP 混合作业

OpenMP (Open Multi-Processing) 是一种共享内存方式的单进程多线程并行编程技术;MPI (Message Passing Interface) 是一种多进程基于信息传递的并行编程技术。OpenMP 的特点是单节点、进程内、多线程、基于共享内存的并行运算;MPI 的特点是单或多节点、进程间、非共享内存、基于消息传递的并行运算。

混合并行编程模型构建的应用程序可以同时使用 OpenMP 和 MPI ,节点内NUMA内进程内使用 OpenMP 共享内存并行可降低内存需求,跨节点跨NUMA跨进程使用 MPI 消息传递可大规模并行。需要注意的是,并不是一个节点一个MPI进程是最优的,这往往会导致跨NUMA的内存访问,因此需要通过测试确定最佳配比。

mpirun一般会根据环境变量LSB_MCPU_HOSTS启动相应的MPI进程,因此可以通过下列方法改变此环境变量中每个节点的CPU核数,以匹配MPI/OpenMP混合作业的MPI进程分布:

  1. #BSUB -n 指定的仍然是总CPU核数
  2. 提交作业脚本中需要在计算命令前首先运行
    source /fs00/software/lsf/misc/ompthreads.sh [N]
    
  3. 每个 MPI 进程的 OpenMP 线程数量可以用环境变量OMP_NUM_THREADS指定或上述命令行参数指定,同时指定时命令行参数优先,需要保证每个节点的 CPU核数可以被线程数整除!

常用环境变量

作业运行时

LSB_DJOB_NUMPROC=6
LSB_HOSTS="node1 node1 node1 node2 node2 node2"
LSB_MCPU_HOSTS="node1 3 node2 3"
$ cat $LSB_DJOB_HOSTFILE
node1
node1
node1
node2
node2
node2

LSB_HOSTS 和 LSB_MCPU_HOSTS 以不同的格式包含相同的信息,LSB_MCPU_HOSTS 比 LSB_HOSTS 更短更精简,如果 LSB_HOSTS 超过 4096 字节,则仅有 LSB_MCPU_HOSTS。

作业脚本示例

串行作业

  提交一个串行作业到 e52660 队列,命令行方式和脚本方式分别为:

$ bsub -q e52660 ./app
Job <3279929> is submitted to queue <e52660>.
$ cat job.lsf 
#BSUB -q e52660
./app
$ bsub < job.lsf 
Job <3279930> is submitted to queue <e52660>.

MPI 并行作业

  MPI程序需要使用mpirun启动

  提交一个需要48核的 Intel MPI 并行作业到 e5v3ib,命令行方式为:

$ bsub -q e5v3ib -n 48 "module load ips/2018u4;mpirun ./app"
Job <3280120> is submitted to queue <e5v3ib>.

  提交一个需要48核的 Open MPI 并行作业到 e5v3ib,脚本方式为:

$ cat job.lsf 
#BSUB -q e5v3ib
#BSUB -n 48
module load iccifort/15.0.3 imkl/11.2.3 openmpi/1.10.0-iccifort-15.0.3
mpirun ./app

$ bsub < job.lsf 
Job <3280122> is submitted to queue <e5v3ib>.

OpenMP 并行作业

  OpenMP 不能跨节点,因此-n不能指定超过一个节点的CPU核数

  提交一个需要64核的 OpenMP 并行作业到 e7v4ib,使用程序参数 -nt 指定线程数量,命令行方式为:

$ bsub -q e7v4ib -n 64 "./app-nt \$LSB_DJOB_NUMPROC"
Job <3348175> is submitted to queue <e7v4ib>.

  提交一个需要64核的 OpenMP 并行作业到 e7v4ib,使用环境变量OMP_NUM_THREADS指定线程数量,脚本方式为:

$ cat job.lsf 
#BSUB -q e7v4ib
#BSUB -n 64
OMP_NUM_THREADS="$LSB_DJOB_NUMPROC"
./app

$ bsub < job.lsf 
Job <3348182> is submitted to queue <e7v4ib>.

MPI/OpenMP 混合作业

每个MPI进程跑6个OpenMP线程

通过环境变量OMP_NUM_THREADS指定

#BSUB -q 6140ib
#BSUB -n 72
export OMP_NUM_THREADS=6
source /fs00/software/lsf/misc/ompthreads.sh
module load ips/2018u4
mpirun ./run

通过命令行参数指定(有些计算程序需要通过命令行参数指定线程数量)

#BSUB -q 6140ib
#BSUB -n 72
source /fs00/software/lsf/misc/ompthreads.sh 6
module load ips/2018u4
mpirun ./openmx -nt 6

GPU 作业

提交一个需要1个 GPU 的作业到 e5v4p100ib 队列

bsub -q e5v4p100ib -gpu num=1 ./gpu_app

提交一个需要4个 GPU 的作业到 62v100ib 队列,进行 GPU-CPU 绑定

bsub -q 62v100ib -gpu "num=4:aff=yes" ./gpu_app
使用手册

控制作业

常用控制命令

命令 功能
bjobs 查看自己未结束的作业
bjobs -l JOBID 查看某个未结束作业的详情
bhist 查看自己已结束的历史作业
bhist -l JOBID 查看某个已结束历史作业的详情
bpeek JOBID 查看正在运行某个作业的stdout/stderr
bkill JOBID 终止某个作业
btop JOBID 设置作业最先运行
bbot JOBID 设置作业最后运行

作业依赖

一个计算任务可能分成几步,而每一步对资源的需求不同,因此需要分开提交,但这些作业之间又具有依赖关系,bsub 可使用选项 -w 'dependency_expression'指定依赖关系。如果计算任务分成几步,但是每步对资源需求一样,那么请写在一个作业任务中依次执行。

更多详细信息见官方文档

作业等待

bwait -w "wait_condition" [-t timeout]

暂停并等待作业条件满足,不满足一直暂停等待,满足则执行完毕返回。

典型用法:在脚本中不要循环使用bjobs判断作业状态,而用bwait等待作业运行完成,这样更优雅且能显著降低对集群的压力。

使用手册

海量作业

作业组

为了便于管理海量的作业,可以对作业定义作业组。

作业组的名字是类似于Linux的路径名的树状结构,如作业组 /test ,而 /test/1 和 /test/2 都属于 /test

需要注意的是作业组是全局的,创建者是这个作业组的拥有者,作业组拥有者可以对这个作业组及其子组内的所有作业进行控制(哪怕这个作业是其他人提交的,拥有者也能进行控制)。如果您不想作业被别人控制,请确保提交到的作业组从/开始拥有者都是自己。

创建作业组

bgadd /test		#显式创建作业组
bsub -g /test	#使用bsub提交作业时指定一个不存在的作业组,则作业组会被隐式创建

查看作业组

bjgroup /test	#最后一列就是作业组的拥有者,请注意拥有者也是层次继承的

删除作业组

bgdel /test		#集群已经配置自动清理空的隐式创建的作业组

有了作业组以后就可以对一组作业进行控制了

bjobs -g /test		#查看指定作业组的作业
bkill -g /test 0	#终止指定作业组的所有作业

作业序列

作业序列是一系列作业,这些作业执行相同的操作和资源要求,但是输入输出文件不同。这些作业共享同一个作业ID,并可以通过索引来区分每个子作业。

bsub 使用 -J "arrayName[indexList, ...]" 参数命名并创建一个作业序列,也可以理解为一个作业数组,中括号里面就是数组的下标,可以是一维数组也可以是多维数组。indexList = start[-end[:step]] 下标的起始、结束和步长均可指定。

作业调度系统提供了两个运行时变量 %I 和 %J,%I 为子作业的索引值,%J 为作业ID,一般用于输入输出文件名中;以及运行时环境变量 LSB_JOBINDEX

bsub -J "myArray[1-10]" myJob		#提交一个有10个子作业的作业
bsub -J "myArray[1-10]" -i "input.%I" -o "output.%I" myJob		#每个子作业定义不同的输入输出文件
bkill 123[1]	#杀掉 jobid 是123的第一个子作业
bkill 123		#杀掉 jobid 是123的整个作业

海量作业

提交大量的作业,将使得作业的管理将变得困难,虽然可以用上述作业组和作业序列进行批量管理,但是海量作业仍然对调度系统会造成很大的压力,特别是分钟级或秒级的短作业在调度时会浪费大量的时间,因此可以根据作业情况将多个作业合并为一个作业提交。对于不同的作业可以用两种方法来进行合并:

多作业串行执行

申请1个CPU核,顺序执行每个串行作业,前一个运行完成后再运行下一个,可以将非常多的串行作业合并成一个。对于每个串行作业运行时间都很短且运行时间不一定相同的适用这种方式提交。

4个串行作业串行执行合并为一个作业,提交到x5650队列,脚本方式为:

$ cat job.lsf
#BSUB -q x5650
./a.out >& 1.out
./a.out >& 2.out
./a.out >& 3.out
./a.out >& 4.out

$ bsub < job.lsf
Job <3366369> is submitted to queue <x5650>.

多作业并行执行

申请N个CPU核,同时执行N个串行作业,N不可大于单节点CPU核数,每个串行作业运行时间需要相同,最后需要 wait 命令等待所有作业运行完毕返回。对于每个串行作业运行时间较长且运行时间都完全相同的适用这种方式提交。

12个串行作业并行执行合并为一个作业,提交到x5650队列,脚本方式为:

$ cat job.lsf
#BSUB -q x5650
#BSUB -n 12
( ./a.out >& 1.out )&
( ./a.out >& 2.out )&
( ./a.out >& 3.out )&
( ./a.out >& 4.out )&
( ./a.out >& 5.out )&
( ./a.out >& 6.out )&
( ./a.out >& 7.out )&
( ./a.out >& 8.out )&
( ./a.out >& 9.out )&
( ./a.out >& 10.out )&
( ./a.out >& 11.out )&
( ./a.out >& 12.out )
wait

$ bsub < job.lsf
Job <3366370> is submitted to queue <x5650>.
使用手册

查看信息

查看队列

查看所有队列:bqueues

$ bqueues 
QUEUE_NAME      PRIO STATUS          MAX JL/U JL/P JL/H NJOBS  PEND   RUN  SUSP 
x7542!           50  Open:Active       -    -    -    -    24     0    24     0
e5645!           50  Open:Active       -    -    -    -     0     0     0     0
e52643tgb!       50  Open:Active       -    -    -    -     8     0     8     0
……
6226rib          30  Open:Active       -    -    -    -     0     0     0     0
5218             30  Open:Active       -    -    -    -     0     0     0     0
6230r            30  Open:Active       -    -    -    -    32     0    32     0

查看队列详细信息:bqueues -l

$ bqueues -l e5v3ib

QUEUE: e5v3ib
  -- CPU: 2*E5-2680v3, RAM: 256GB/128GB, NET: 56Gb FDR InfiniBand

……

SCHEDULING POLICIES:  FAIRSHARE  EXCLUSIVE
FAIRSHARE_QUEUES:  e5v3ib e5v3ib! e7v4ib x5650ib 6140ib 62v100ib 722080tiib 72rtxib 7702ib ……
DISPATCH_ORDER:  QUEUE
USER_SHARES:  [root=, 999999] ……

SHARE_INFO_FOR: e5v3ib/
 USER/GROUP   SHARES  PRIORITY  STARTED  RESERVED  CPU_TIME  RUN_TIME   ADJUST  GPU_RUN_TIME
root=       999999  202255.328      0        0      8456.5     1542       0.000             0
……

USERS: all ~test/ 
HOSTS:  f01+10 f02+10 f03+10 f04+10 f05s+10 f05l/ 
RES_REQ:  span[ptile=24]
Maximum slot reservation time: 43200 seconds

查看节点


lshosts			#查看节点配置和资源

lshosts -gpu	#查看节点GPU配置和拓扑结构

lsload			#查看节点当前负载信息

lsload -gpu		#查看节点GPU整体负载

lsload -gpuload	#查看节点每个GPU负载

bhosts			#查看所有节点状态

自动关机

集群会对动力环境进行监控,遇市电中断或温度过高,将会自动终止所有作业,按照安全顺序进行关机操作。

关机时会在 /fs00/reports/bjobs/ 目录下会自动保存一份作业列表备查。如文件 /fs00/reports/bjobs/bjobs.20130728070457 表明2013年07月28日07点04分57秒时刻所有作业的状态(bjobs -uall -w 的输出),同时也说明这个时间点开始自动关机。

如果温度未触及高点,但已明显增高,为了防止温度继续增高,集群会停止派发新作业,并且关闭空闲节点。

进程监督

用户只能登录到登录节点,且可从登录节点登录到有自己正在运行作业的计算节点。

所有节点的用户进程都会被检查,如果发现如下情况,将会杀掉该节点此用户所有进程,并记录在 /fs00/reports/process 中

使用手册

容器化

容器技术

容器技术能够对应用及其整个运行时环境(包括全部所需文件)一起进行打包或隔离。从而可以在不同环境(如开发、测试和生产等环境)之间轻松迁移应用,同时还可保留应用的全部功能。有了容器不再需要管理员为你安装任何东西。容器是一个独立的系统,你可以在里面做任何想做的事情。

Singularity

Singularity 是一套类似于 Docker 的容器解决方案,是HPC开发的容器技术。

制作镜像

镜像可以从 Docker Hub 直接导入,或自己做好镜像打包上传后导入

singularity build ubuntu.sif docker://ubuntu	#从 Docker Hub 导入镜像
singularity build abc.sif docker-archive://abc.tar	#导入 docker save 保存的镜像

git.nju.edu.cn 上的 CI/CD 自动调用 kaniko 构建 Docker 镜像,详见官方文档

/fs00/software/singularity-images/ 已经存放了很多镜像,可直接使用

提交作业

提交容器作业的示例脚本

#BSUB -q 62v100ib
#BSUB -gpu num=4

/fs00/software/singularity/latest/bin/singularity exec --nv cuda.sif app

相关网站

使用手册

常见问题

作业运行时实际占用CPU核数过多

在作业中限定使用的CPU核数与申请核数相同,或者尝试在提交作业时添加如下参数

#BSUB -R affinity[core:cpubind=core:membind=localprefer:distribute=pack]

特别是Python,有些Python包会自动满核并行的,需要使用环境变量(如 OMP_NUM_THREADS)等方式设定线程数。如果实在不行可以 #BSUB -x 独占节点运行作业。

登录节点进行网络接入认证

集群中的登录节点进行网络接入认证后即可访问互联网,认证后登录节点所有用户均可访问互联网,请注意网络安全!。

命令行登录和登出p.nju.edu.cn的方法如下

/fs00/software/bin/pnju -u <username> -p <password> -i		#登录网络
/fs00/software/bin/pnju -o									#登出网络

curl -s "http://p.nju.edu.cn/portal_io/login?username=<username>&password=<password>"	#登录网络
curl -s http://p.nju.edu.cn/portal_io/logout											#登出网络

计算节点访问网络

所有计算节点均不能访问外网(含校园网和互联网),如需访问可以单独申请开放。

pip安装包到自己的目录下

Python的大多数包不需要root权限也能安装,只需在pip install后加-t指定安装目录即可,如:

cd scikit-opt-master
pip install -t $HOME .

这样就装到自己的家目录下。在~/.bashrc里或者作业脚本中加上环境变量

export PYTHONPATH=$HOME:$PYTHONPATH

排队作业数量上限

动态限制单个用户排队作业数量不能超过 (30000-当前用户PEND作业数量)/10

使用手册

VASP6 GPU 编译

VASP6 GPU(N卡) 编译实例

王勇 (孙建课题组)

人工微结构科学与技术协同创新中心高性能计算中心

根据vasp官方给出的信息,以后vasp gpu版本会着重开发openacc标准的版本,之前老cuda版本会逐渐被废弃,因此我们以vasp6.2 的openacc版本结合官方指导进行编译。 官方指导链接

https://www.vasp.at/wiki/index.php/OpenACC_GPU_port_of_VASP

编译器:

Openacc gpu Vasp6官方给出编译器意见为使用NVIDIA HPC-SDK或者 PGI's Compilers & Tools (version >=19.10)。在此vasp官方建议使用NVIDIA HPC-SDK且版本号最好为20.9,因为之后的版本可能会有一些对于vasp的bug。

关于NVIDIA HPC-SDK 20.9的安装,见

https://developer.nvidia.com/nvidia-hpc-sdk-209-downloads 

相关主页,安装流程十分简单,使用wget下载,一键式安装,对于不连接外网的节点,可以手动下载tarball压缩包,上传后本地解压,在此不再赘述,安装前请使用nvidia-smi命令查看本地硬件驱动和兼容的cuda版本(version >=10.0),确保匹配,必要时候需升级硬件驱动。

安装HPC-SDK 20.9的过程中会询问安装路径,我们以路径为/usr/software/nv-hpcsdk为例,在安装过程中指定此路径为例以后,需要设定环境变量:

export NVARCH=`uname -s`_`uname -m`;
export NVCOMPILERS=/usr/software/nv-hpcsdk #修改此处为安装路径
export PATH=$NVCOMPILERS/$NVARCH/20.9/compilers/bin:$PATH
export MANPATH=$MANPATH:$NVCOMPILERS/$NVARCH/20.9/compilers/man
export LD_LIBRARY_PATH=$NVCOMPILERS/$NVARCH/20.9/compilers/lib/:$LD_LIBRARY_PATH
export PATH=$NVCOMPILERS/$NVARCH/20.9/comm_libs/mpi/bin/:$PATH

上述可以每次使用gpu vasp6时手动添加在任务脚本,也可直接写在bashrc,但是不建议直接写在bashrc,可能会和intel版本的 mpirun冲突,造成其他之前软件的运行问题。

依赖库:

安装完NVIDIA HPC-SDK 20.9以后,还需要将软件运行需要的依赖库整理好,主要有CUDA Toolkit, QD, NCCL, 以及FFTW, 前三项直接包含在HPC-SDK,不需要单独安装。

对于FFTW,最好不要用nvhpc-sdk的编译器进行安装,如果设置了上面安装完hpc-sdk的环境变量,请先用GNU或者intel的编译器环境变量进行覆盖,不然可能会导致计算效率问题,可以自己编译,也可以直接使用集群内已经安装好的版本,路径为/fs00/software/fftw/3.3.8-ips2019u5

编译:

准备好编译器和依赖库以后,就可以进行编译了,进入vasp6.2根目录,

cp arch/makefile.include.linux_nv_acc makefile.include`

可以使用

which nvfortran | awk -F /compilers/bin/nvfortran '{ print $$1 }'`

查看nvfortran是否为nv-hpc-sdk的路径,如有问题,可以重新添加一遍环境变量。

(注:最近vasp官方又在官网添加了新的openacc+openmp混编版本的makefile.include.linux_nv_acc+omp+mkl来解决nccl库限制openacc版本只能单进程运行的问题,通过openmp来提升单进程多线程的运算效率,但目前没有太多相关测试的数据来支撑openmp混编会提升很多并行速度,所以在此我仍以旧版本的makefile.include.linux_nv_acc为例,同时官方也在积极改进这个问题,后续应该也可以多进程运行)

makefile.include的内容需要修改几处,包括确认编译器的位置,明确依赖库的路径等。修改后的makefile.include如下(需要注意和修改的位置后面有注释):

#Precompiler options

CPP_OPTIONS= -DHOST=\"LinuxPGI\" \
         -DMPI -DMPI_BLOCK=8000 -DMPI_INPLACE -Duse_collective \
         -DscaLAPACK \
         -DCACHE_SIZE=4000 \
         -Davoidalloc \
         -Dvasp6 \
         -Duse_bse_te \
         -Dtbdyn \
         -Dqd_emulate \
         -Dfock_dblbuf \
         -D_OPENACC \
         -DUSENCCL -DUSENCCLP2P

CPP        = nvfortran -Mpreprocess -Mfree -Mextend -E $(CPP_OPTIONS) $*$(FUFFIX)  > $*$(SUFFIX)

FC         = mpif90 -acc -gpu=cc60,cc70,cc80,cuda11.0
FCL        = mpif90 -acc -gpu=cc60,cc70,cc80,cuda11.0 -c++libs

FREE       = -Mfree

FFLAGS     = -Mbackslash -Mlarge_arrays

OFLAG      = -fast

DEBUG      = -Mfree -O0 -traceback

#Specify your NV HPC-SDK installation, try to set NVROOT automatically
NVROOT     =$(shell which nvfortran | awk -F /compilers/bin/nvfortran '{ print $$1 }')
#or set NVROOT manually
#NVHPC      ?= /opt/nvidia/hpc_sdk
#NVVERSION  = 20.9
#NVROOT     = $(NVHPC)/Linux_x86_64/$(NVVERSION)

#Use NV HPC-SDK provided BLAS and LAPACK libraries
BLAS       = -lblas
LAPACK     = -llapack

BLACS      =
SCALAPACK  = -Mscalapack

CUDA       = -cudalib=cublas,cusolver,cufft,nccl -cuda

LLIBS      = $(SCALAPACK) $(LAPACK) $(BLAS) $(CUDA)

#Software emulation of quadruple precsion
QD         = $(NVROOT)/compilers/extras/qd                    #注意并修改这里
LLIBS      += -L$(QD)/lib -lqdmod -lqd
INCS       += -I$(QD)/include/qd

#Use the FFTs from fftw
FFTW       = /fs00/software/fftw/3.3.8-ips2019u5              #修改fftw路径至本地安装路径
LLIBS      += -L$(FFTW)/lib -lfftw3
INCS       += -I$(FFTW)/include

OBJECTS    = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o

#Redefine the standard list of O1 and O2 objects
SOURCE_O1  := pade_fit.o
SOURCE_O2  := pead.o

#For what used to be vasp.5.lib
CPP_LIB    = $(CPP)
FC_LIB     = nvfortran
CC_LIB     = nvc
CFLAGS_LIB = -O
FFLAGS_LIB = -O1 -Mfixed
FREE_LIB   = $(FREE)

OBJECTS_LIB= linpack_double.o getshmem.o

#For the parser library
CXX_PARS   = nvc++ --no_warnings

#Normally no need to change this
SRCDIR     = ../../src
BINDIR     = ../../bin

此外编译前和每次提交任务前请清除其他环境并重新设置一遍环境变量:

module load ips/2019u5  #这是为了我们使用集群安装好的fftw找到依赖的路径
export NVARCH=`uname -s`_`uname -m`;
export NVCOMPILERS=/usr/software/nv-hpcsdk
export PATH=$NVCOMPILERS/$NVARCH/20.9/compilers/bin:$PATH
export MANPATH=$MANPATH:$NVCOMPILERS/$NVARCH/20.9/compilers/man
export LD_LIBRARY_PATH=$NVCOMPILERS/$NVARCH/20.9/compilers/lib/:$LD_LIBRARY_PATH
export PATH=$NVCOMPILERS/$NVARCH/20.9/comm_libs/mpi/bin/:$PATH

/usr/software/nv-hpcsdk为nv-hpc-sdk的安装路径 确认好以上所有设置后,就可以使用

make std gam ncl

进行编译了,注意,由于openacc版本的原因,直接取消了编译make gpu的方式,编译得到的vasp_std之类的版本直接可以使用GPU进行计算。

其他注意事项:

1.由于nccl库的限制,openacc的gpu版本只能单进程运行.

2.INCAR中NCORE在openacc版本中只能设为1.

3.INCAR中NSIM和KPAR参数需要对不同体系进行测试来达到效率最大化,一般来说,KPAR和所使用的GPU也就是进程数一致,NSIM需要设置的比在cpu上更大,具体请自行测试.

更多相关问题可以见GPU官方指导

也可以去VASP论坛提问

硬件资源

计算存储等所有硬件资源详情

硬件资源

服务节点

管理、监控、认证、调度、备份和登录节点均为虚拟机,CPU/RAM/HDD根据需求分配

硬件资源

通讯网络

服务网络:100Mb/1Gb Ethernet

管理网络:1/10/25/40/100Gb Ethernet

高速网络:20/40/56/100/200Gb DDR/QDR/FDR/HDR InfiniBand, 100Gb Omni-Path Architecture

硬件资源

计算资源

命名规则和优先级

每组计算节点均对应两个队列;标准队列和优先队列

计算队列

合计

总览

表格

队列 -R "res_req" 节点
数量
每节点
CPU核数
每节点
内存(GB)
平均每核
内存(GB)
CPU主频
(GHz)
每节点
GPU数量
每GPU
显存(GB)
SSD*
x7542 1 24 512 21.3 2.66
e52643tgb 3 8 96 12.0 3.3
e52643tgb largemem 7 8 128 16.0 3.3
e52660tgb 16 16 32 2.0 2.2 tmp
e52660ib 12 16 32 2.0 2.2
e52692v2ib 40 24 64 2.7 2.2
e52680v3ib 26 24 128 5.3 2.5
e5v3ib 60 24 128 5.3 2.5 root
e5v3ib largemem 10 24 256 10.7 2.5 root
e5v3k40ib 1 24 128 5.3 2.5 2 12
e52630v4 2 20 64 3.2 2.2
e52640v4 1 20 128 6.4 2.4
e52650v4 3 24 128 5.3 2.2
e52680v4ib 19 28 128 4.6 2.4 root
e52682v4opa 20 32 64 2.0 2.5 root tmp
e74820v4 1 40 128 3.2 2.0
e7v4ib 1 64 1024 16.0 2.1 root
e5v4p100ib 1 28 128 4.6 2.0 2 16
6140ib 16 72 384 5.3 2.3 root
6148v100ib 1 40 192 4.8 2.4 1 16 root
5218 1 32 192 6 2.3 root
5218q 1 64 256 4 2.3
62v100ib 1 40 768 19.2 2.5 8 32 root tmp cache
9242opa 20 96 384 4.0 2.3 root
7702ib 14 128 256 2.0 2.0 root
722080tiib 4 16 128 8.0 3.0 4 11 root tmp cache
72rtxib 3 16 128 8.0 3.0 4 24 root tmp cache
5220r 3 48 192 4.0 2.2 root
6226rib 22 32 192 6.0 2.9 root
6230r 3 52 192 3.7 2.1 root
6330ib 16 56 256 4.6 2.0 root
6338 2 64 1024 16 2.0 root
6338 largemem 2 64 2048 32 2.0 root
83a100ib 1 64 512 8 2.6 8 40 root tmp cache
813080 1 48 64 1.3 2.5 6 10 root
723090ib 2 48 512 10.7 2.8 8 24 root tmp cache

* SSD:

详情

x7542

e52643tgb

e52660tgb

e52660ib

e52692v2ib

e52680v3ib

e5v3ib

e5v3k40ib

e52630v4

e52640v4

e52650v4

e52680v4ib

e52682v4opa

e74820v4

e7v4ib

e5v4p100ib

6140ib

6148v100ib

5218

5218q

62v100ib

9242opa

7702ib

722080tiib

72rtxib

5220r

6226rib

6230r

6330ib

6338

83a100ib

813080

723090ib


退出服务

5150
e5620
e5430
x5550ib
e52660
7742
7502
x5650
x5650ib
e5645
硬件资源

存储资源

表格

类型 路径 容量 元数据 数据 快照创建时间点 快照保留策略
并行存储 /bbfs 102 TiB NVMe SSD NVMe SSD
并行存储 /fs00 7.3 TiB NVMe SSD NVMe SSD 每日0时 每天快照保留7天
每周快照保留4周
并行存储 /fsa 361 TiB SAS SSD 7.2Krpm HDD 每日0、6、12、18时 小时快照保留24小时
每天快照保留7天
每周快照保留2周
并行存储 /fs04 14 TiB 10Krpm HDD 10Krpm HDD
并行存储 /fs08 14 TiB 10Krpm HDD 10Krpm HDD 每日0时 每天快照保留7天
每周快照保留2周
并行存储 /fs09 24 TiB 7.2Krpm HDD 7.2Krpm HDD 每日0时 每天快照保留7天
每周快照保留2周
并行存储 /fs10 9.9 TiB 10Krpm HDD 10Krpm HDD
并行存储 /fs12 14 TiB 10Krpm HDD 10Krpm HDD
并行存储 /fs13 30 TiB 7.2Krpm HDD 7.2Krpm HDD
并行存储 /fs14 262 TiB 7.2Krpm HDD 7.2Krpm HDD
对象存储 s3.nju.edu.cn 2.12 PB SATA SSD 7.2Krpm HDD
对象存储 stor.nju.edu.cn 1.10 PiB 7.2Krpm HDD 7.2Krpm HDD
冷存储 /nfs 1.10 PiB 7.2Krpm HDD 7.2Krpm HDD
本地存储 /dev/shm RAM RAM
本地存储 /tmp HDD/SSD HDD/SSD
本地存储 /ssd SSD SSD

并行存储

高速全闪

/bbfs

采用全NVMe SSD构建的高性能Burst Buffer,具备极高的顺序和随机读写性能。

/bbfs/fs*/

所有文件系统(/fs*/)均在此目录中有映射,/bbfs/fs*/ 是 /fs*/ 的高速缓存,在 /bbfs/fs*/ 中重读和写入具有极高的性能,与直接在 /fs*/ 下相比有显著提升,保存在 /bbfs/fs*/ 下的文件会自动回写 /fs*/ 保存。

如:作业输入文件位于 /fsa/home/yaoge/in,如果此输入文件近期会被读取多次(无论是单个作业还是多个作业),则应将输入文件路径指定为 /bbfs/fsa/home/yaoge/in,那么从第二次开始均从高速SSD上读取,减少作业读取文件上花费的时间。

如:作业输出文件如较大,则应将数据文件路径指定为 /bbfs/fsa/home/yaoge/out,那么将直接写入高速SSD中,然后系统会自动将文件回写到 /fsa/home/yaoge/out 便于长期保存,减少作业写入文件上花费的时间。

/bbfs/scratch/

用于保存临时文件,超过30天没有访问(atime)的文件会被自动删除,适合于临时存储计算中间结果、checkpoint等无需长期保留的文件。文件名以 .tmp 和 .temp 结尾的文件保存为单副本。

如:作业运行过程中保存的Check Point文件或多个作业之间通过临时文件传输数据,这些文件无需长期保存,则可以保存在/bbfs/scratch/yaoge目录下,读写均在高速SSD上。

只读缓存

部分节点有额外的SSD为并行文件系统提供本地高速缓存,可提升此节点元数据和数据的读取性能,具体节点详见计算资源

只读快照

快照是特定时间点数据的只读副本,用户可以从中恢复误删的文件或文件的过往版本。当前部分文件系统存在只读快照,可以在文件系统目录/.snapshot中查找。

如/fsa,快照位于/fsa/.snapshots,/fsa/.snapshots/20220804-1800是2022年8月4日18时0分创建的快照,在这个目录下可以查阅快照创建时间点的所有文件。

支撑目录

/fs00

家目录

/fsa

/fs04

/fs08

/fs09

/fs10

/fs12

/fs13

/fs14

对象存储

打破壁垒实现集群内外数据的统一访问。同一份数据,集群内外共同使用,访问方式相同,再无迁移数据的烦恼!

s3.nju.edu.cn

stor.nju.edu.cn

冷存储

/nfs

临时目录

/tmp/ /var/tmp/

节点本地根文件系统的临时文件目录

/dev/shm/

节点内存中的临时文件系统目录,容量为总内存的一半,重启不保留

/ssd/ /tmp/ssd

部分节点有额外的SSD用于临时存储,则挂载于此目录


退出服务

/fs04
/fs02
/fs06
/fs07
/fs05
/fs05b
/fs03
/fs11
/fs01

软件资源

部分软件资源

软件资源

GNU

GNU Compiler Collection

Name Path Module
GNU Compiler Collection (GCC) 12.1.0 & GNU Binutils 2.38 /fs00/software/gcc/12.1.0/ gcc/12.1.0
GNU Compiler Collection (GCC) 11.3.0 & GNU Binutils 2.36.1 /fs00/software/gcc/11.3.0/ gcc/11.3.0
GNU Compiler Collection (GCC) 11.2.0 /fs00/software/gcc/11.2.0/ gcc/11.2.0
GNU Compiler Collection (GCC) 10.4.0 & GNU Binutils 2.34 /fs00/software/gcc/10.4.0/ gcc/10.4.0
GNU Compiler Collection (GCC) 10.2.0 /fs00/software/gcc/10.2.0/ gcc/10.2.0
GNU Compiler Collection (GCC) 9.5.0 & GNU Binutils 2.32 /fs00/software/gcc/9.5.0/ gcc/9.5.0
GNU Compiler Collection (GCC) 9.2.0 /fs00/software/gcc/9.2.0/ gcc/9.2.0
GNU Compiler Collection (GCC) 8.5.0 & GNU Binutils 2.30 /fs00/software/gcc/8.5.0/ gcc/8.5.0
GNU Compiler Collection (GCC) 8.3.0 /fs00/software/gcc/8.3.0/ gcc/8.3.0
GNU Compiler Collection (GCC) 8.2.0 /fs00/software/gcc/8.2.0/ gcc/8.2.0
GNU Compiler Collection (GCC) 7.5.0 & GNU Binutils 2.28.1 /fs00/software/gcc/7.5.0/ gcc/7.5.0
GNU Compiler Collection (GCC) 7.4.0 /fs00/software/gcc/7.4.0/ gcc/7.4.0
GNU Compiler Collection (GCC) 6.5.0 & GNU Binutils 2.26.1 /fs00/software/gcc/6.5.0/ gcc/6.5.0
GNU Compiler Collection (GCC) 6.3.0 /fs00/software/gcc/6.3.0/ gcc/6.3.0
GNU Compiler Collection (GCC) 5.4.0 /fs00/software/gcc/5.4.0/ gcc/5.4.0
GNU Compiler Collection (GCC) 5.2.0 /fs00/software/gcc/5.2.0/ gcc/5.2.0

GNU Make

Name Path Module
GNU Make 4.3 /fs00/software/make/4.3 make/4.3
GNU Make 4.2.1 /fs00/software/make/4.2.1 make/4.2.1
GNU Make 4.2 /fs00/software/make/4.2 make/4.2

GNU Scientific Library

Name Compiler Path Module
GNU Scientific Library (GSL) 2.7.1 GCC 12.1.0 /fs00/software/gsl/2.7.1-gcc12.1.0 gsl/2.7.1-gcc12.1.0
GNU Scientific Library (GSL) 2.5 GCC 8.3.0 /fs00/software/gsl/2.5-gcc8.3 gsl/2.5-gcc8.3

GNU C Library

Name Compiler Path Module
GNU C Library (glibc) 2.30 GCC 9.2.0 /fs00/software/glibc/2.30-gcc9.2.0 /glibc/2.30-gcc9.2.0

GNU Binutils

Name Compiler Path Module
GNU Binutils 2.38 GCC 12.1.0 /fs00/software/binutils/2.38-gcc12.1.0 binutils/2.38-gcc12.1.0
GNU Binutils 2.27 GCC 5.4.0 /fs00/software/binutils/2.27-gcc5.4.0 binutils/2.27-gcc5.4.0
软件资源

Intel

Intel Parallel Studio

Name Path Module
Intel Parallel Studio XE 2020 Update 2 Cluster Edition /fs00/software/intel/ps2020u2 Modulefile: ips/2020u2
Intel Parallel Studio XE 2019 Update 5 Cluster Edition /fs00/software/intel/ps2019u5 Modulefile: ips/2019u5
Intel Parallel Studio XE 2018 Update 4 Cluster Edition /fs00/software/intel/ps2018u4 Modulefile: ips/2018u4
Intel Parallel Studio XE 2017 Update 6 Cluster Edition /fs00/software/intel/ps2017u6 Modulefile: ips/2017u6
Intel Parallel Studio XE 2017 Update 2 Cluster Edition /fs00/software/intel/ps2017u2 Modulefile: ips/2017u2
Intel Parallel Studio XE 2016 Update 4 Cluster Edition /fs00/software/intel/ps2016u4 Modulefile: ips/2016u4
Intel Parallel Studio XE 2016 Update 2 Cluster Edition /fs00/software/intel/ps2016u2 Modulefile: ips/2016u2
Intel Parallel Studio XE 2015 Update 6 Cluster Edition /fs00/software/intel/ps2015u6 Modulefile: ips/2015u6
Intel Parallel Studio XE 2015 Update 3 Cluster Edition /fs00/software/intel/ps2015u3 Modulefile: ips/2015u3
Intel Cluster Studio XE 2013 Service Pack 1 (SP1) Update 1 /fs00/software/intel/cs2013sp1u1 Modulefile: ics/2013sp1u1
Intel Cluster Studio XE 2013 /fs00/software/intel/cs2013 Modulefile: ics/2013
Intel Parallel Studio XE 2011 SP1 Update 3 /fs00/software/intel/ps2011sp1u3 Modulefile: ips/2011sp1u3

Intel Distribution for Python

Name Path
Intel Distribution for Python 2.7 2019 Update 5 /fs00/software/intel/ps2019u5/intelpython2
Intel Distribution for Python 3.6 2019 Update 5 /fs00/software/intel/ps2019u5/intelpython3
Intel Distribution for Python 2.7 2018 Update 3 /fs00/software/intel/python2018u3/intelpython2
Intel Distribution for Python 3.6 2018 Update 3 /fs00/software/intel/python2018u3/intelpython3
Intel Distribution for Python 2.7 2017 Update 3 /fs00/software/intel/python2017u3/intelpython2
Intel Distribution for Python 3.5 2017 Update 3 /fs00/software/intel/python2017u3/intelpython3

已废弃

Intel Parallel Studio XE 2013 SP1 Update 2,安装在/fs01/apps/intel/parallel_studio_xe_2013_sp1_update2

Intel Parallel Studio XE 2013 Update 1,安装在/fs01/apps/intel

Intel Parallel Studio XE 2011 Update 3,安装在/fs01/apps/intel2011

Intel MPI,安装在/fs01/apps/intel/impi,版本:4.1.0.027(mpirun.lsf使用版本)、4.1.0.024、4.0.3.008、3.2.2.006

软件资源

NVIDIA

CUDA Toolkit

Name Path Module
CUDA Toolkit 11.2.0 /fs00/software/cuda/11.2.0 cuda/11.2.0
CUDA Toolkit 10.2.89 /fs00/software/cuda/10.2.89 cuda/10.2.89
CUDA Toolkit 10.1.243 /fs00/software/cuda/10.1.243 cuda/10.1.243
CUDA Toolkit 10.0.130 /fs00/software/cuda/10.0.130 cuda/10.0.130
CUDA Toolkit 9.2.148 /fs00/software/cuda/9.2.148 cuda/9.2.148
CUDA Toolkit 9.0.176 with Patch 3 /fs00/software/cuda/9.0.176 cuda/9.0.176
CUDA Toolkit 8.0 GA2 8.0.61 with Patch 2 /fs00/software/cuda/8.0.61 cuda/8.0.61

cuDNN

Name Path Module
cuDNN v8.1.1.33 for CUDA 11.2 /fs00/software/cudnn/11.2-v8.1.1.33 cudnn/11.2-v8.1.1.33
cuDNN v8.2.2.26 for CUDA 10.2 /fs00/software/cudnn/10.2-v8.2.2.26 cudnn/10.2-v8.2.2.26
cuDNN v7.6.5.32 for CUDA 10.2 /fs00/software/cudnn/10.2-v7.6.5.32 cudnn/10.2-v7.6.5.32
cuDNN v7.6.4.38 for CUDA 10.1 /fs00/software/cudnn/10.1-v7.6.4.38 cudnn/10.1-v7.6.4.38
cuDNN v7.6.5.32 for CUDA 10.0 /fs00/software/cudnn/10.0-v7.6.5.32 cudnn/10.0-v7.6.5.32
cuDNN v7.1.4 for CUDA 9.2 /fs00/software/cudnn/9.2-v7.1.4 cudnn/9.2-v7.1.4
cuDNN v7.1.4 for CUDA 9.0 /fs00/software/cudnn/9.0-v7.1.4 cudnn/9.0-v7.1.4
cuDNN v7.0.5 for CUDA 8.0 /fs00/software/cudnn/8.0-v7.0.5 cudnn/8.0-v7.0.5
cuDNN v6.0 for CUDA 8.0 /fs00/software/cudnn/8.0-v6.0 cudnn/8.0-v6.0
cuDNN v5.1 for CUDA 8.0 /fs00/software/cudnn/8.0-v5.1 cudnn/8.0-v5.1
cuDNN v5.0 for CUDA 8.0 /fs00/software/cudnn/8.0-v5.0 cudnn/8.0-v5.0

HPC SDK

Name Path Module
HPC SDK 20.9 /fs00/software/nvhpc/20.9 /fs00/software/nvhpc/20.9/modulefiles
HPC SDK 21.3 /fs00/software/nvhpc/21.3 /fs00/software/nvhpc/21.3/modulefiles

HPC-X

Name OFED OS Path Module
HPC-X 2.6.0 MLNX_OFED 4.5-1.0.1.0 RHEL 7.6 /fs00/software/hpcx/2.6.0-mlnx4.5-rhel7.6 2.6.0-mlnx4.5-rhel7.6
HPC-X 2.6.0 MLNX_OFED 4.6-1.0.1.1 RHEL 7.6 /fs00/software/hpcx/2.6.0-mlnx4.6-rhel7.6 2.6.0-mlnx4.6-rhel7.6
HPC-X 2.6.0 MLNX_OFED 4.7-1.0.0.1 RHEL 7.7 /fs00/software/hpcx/2.6.0-mlnx4.7-rhel7.7 2.6.0-mlnx4.7-rhel7.7

NCCL

Name Path Module
NCCL v2.4.8 for CUDA 10.1 /fs00/software/nccl/10.1-v2.4.8 nccl/10.1-v2.4.8
NCCL v2.5.6 for CUDA 10.2 /fs00/software/nccl/10.2-v2.5.6 nccl/10.2-v2.5.6

TensorRT

Name CUDA cuDNN Path Module
TensorRT 8.2.0.6 11.4 8.2 /fs00/software/tensorrt/8.2.0.6-cuda11.4-cudnn8.2 tensorrt/8.2.0.6-cuda11.4-cudnn8.2
TensorRT 8.2.0.6 10.2 8.2 /fs00/software/tensorrt/8.2.0.6-cuda11.4-cudnn8.2 tensorrt/8.2.0.6-cuda10.2-cudnn8.2
软件资源

AMD

AMD Optimizing C/C++ Compiler

Name Path Module
AMD Optimizing C/C++ Compiler 2.3.0 (AOCC) /fs00/software/aocc/2.3.0 aocc/2.3.0
AMD Optimizing C/C++ Compiler 2.1.0 (AOCC) /fs00/software/aocc/2.1.0 aocc/2.1.0
AMD Optimizing C/C++ Compiler 2.0.0 (AOCC) /fs00/software/aocc/2.0.0 aocc/2.0.0

AMD Optimizing CPU Libraries

Name Path Module
AMD Optimizing CPU Libraries 2.2 (AOCL) /fs00/software/aocl/2.2 aocl/2.2
AMD Optimizing CPU Libraries 2.0 (AOCL) /fs00/software/aocl/2.0 aocl/2.0
软件资源

Python

请使用者自行解决License问题,本中心概不负责!

Anaconda

Name Path Module
Anaconda 2 (Python2) Latest /fs00/software/anaconda/2/ anaconda/2
Anaconda 3 (Python3) Latest /fs00/software/anaconda/3/ anaconda/3
Anaconda 2.5.0 (Python 2.7) /fs00/software/anaconda/2-2.5.0/ anaconda/2-2.5.0
Anaconda 2.5.0 (Python 3.5) /fs00/software/anaconda/3-2.5.0/ anaconda/3-2.5.0
Anaconda 3.4.1 (Python 2.7) /fs00/software/anaconda/2-3.4.1/ anaconda/2-3.4.1
Anaconda 3.4.1 (Python 3.6) /fs00/software/anaconda/3-3.4.1/ anaconda/3-3.4.1
Anaconda 5.0.1 (Python 2.7) /fs00/software/anaconda/2-5.0.1/ anaconda/2-5.0.1
Anaconda 5.0.1 (Python 3.6) /fs00/software/anaconda/3-5.0.1/ anaconda/3-5.0.1

Python

Name Compiler Path Module
Python 2.7.11 GCC 5.2.0 /fs00/software/python/2.7.11-gcc5.2.0 python/2.7.11-gcc5.2.0
软件资源

Golang

Golang

Name Path Module
Golang 1.16.3 /fs00/software/golang/1.16.3/ golang/1.16.3
Golang 1.16.13 /fs00/software/golang/1.16.13/ golang/1.16.13
Golang 1.17.2 /fs00/software/golang/1.17.2/ golang/1.17.2
Golang 1.17.6 /fs00/software/golang/1.17.6/ golang/1.17.6
软件资源

Open MPI

Open MPI

Name Compiler Path Module
Open MPI 4.1.2 GNU Compiler Collection (GCC) 11.2.0 /fs00/software/openmpi/4.1.2-gcc11.2.0/ openmpi/4.1.2-gcc11.2.0
Open MPI 3.1.2 GNU Compiler Collection (GCC) 8.2.0 /fs00/software/openmpi/3.1.2-gcc8.2.0/ openmpi/3.1.2-gcc8.2.0
Open MPI 1.10.0 Intel C++ Compiler XE 15.0 Update 3 & Fortran Compiler XE 15.0 Update 3 /fs00/software/openmpi/1.10.0-iccifort-15.0.3/ openmpi/1.10.0-iccifort-15.0.3
Open MPI 1.10.0 GNU Compiler Collection (GCC) 5.2.0 /fs00/software/openmpi/1.10.0-gcc-5.2.0/ openmpi/1.10.0-gcc-5.2.0
Open MPI 1.10.5 GNU Compiler Collection (GCC) 5.4.0 /fs00/software/openmpi/1.10.5-gcc5.4.0/ openmpi/1.10.5-gcc5.4.0
软件资源

计算软件

请使用者自行解决License问题,本中心概不负责!

FFTW 3.3.7

/fs00/software/fftw/3.3.7-iccifort-17.0.6-* 依赖iccifort/17.0.6

FFTW 3.3.8

/fs00/software/fftw/3.3.8-ips2019u5 依赖ips/2019u5

LAMMPS 11Aug17

/fs00/software/lammps/11Aug17

OpenFOAM® v1806

/fs00/software/openfoam/v1806-ips2017u6

source /fs00/software/openfoam/v1806-ips2017u6/OpenFOAM-v1806/etc/bashrc

P4vasp 0.3.29

/fs00/software/p4vasp/0.3.29

Modulefile: p4vasp/0.3.29

Phonopy 1.11.2

/fs00/software/anaconda/2-4.3.1/bin

Modulefile: anaconda/2-4.3.1

Quantum ESPRESSO 5.2.0 & 6.1

/fs00/software/qe/5.2.0-ips2015u3/ 依赖ips/2015u3

/fs00/software/qe/6.1-ips2017u2/ 依赖ips/2017u2

ShengBTE

/fs00/software/shengbte 依赖 iccifort/15.0.3 openmpi/1.10.0-iccifort-15.0.3

Siesta 3.2-pl-5

/fs00/software/siesta/3.2-pl-5 依赖ips/2017u6

thirdorder 1.0.2 04d3f46feb78

/fs00/software/thirdorder/1.0.2

Modulefile: thirdorder/1.0.2 依赖 anaconda/2-4.3.1 spglib/1.9.9

软件资源

NAMD

NAMD 2.12 (2016-12-22)

例:输入文件为当前目录下的in.conf,申请48个核提交到e5v3ib队列

#BSUB -n 48
#BSUB -q e5v3ib

input=in.conf
#bindir=/fs00/software/namd/2.12/verbs/
bindir=/fs00/software/namd/2.12/ibverbs/

nodefile=nodelist
echo "group main" > $nodefile
for i in `echo $LSB_HOSTS`
do
	echo "host $i" >> $nodefile
done

${bindir}charmrun ++remote-shell ssh ++nodelist $nodefile +p$LSB_DJOB_NUMPROC ${bindir}namd2 $input
软件资源

OOMMF

The Object Oriented MicroMagnetic Framework (OOMMF) 1.2 alpha 6

例:输入文件为当前目录下的sample.mif,申请72个核提交到6140ib队列

#BSUB -q 6140ib
#BSUB -n 72

oommfin=sample.mif

oommfrun=/fs00/software/oommf/12a6-tcl8.6.4-ips2016u2-avx2/oommf.tcl
module load tcl/8.6.4-ips2016u2-avx2

OOMMF_HOSTPORT=`tclsh $oommfrun launchhost 0`
export OOMMF_HOSTPORT
tclsh $oommfrun mmArchive
tclsh $oommfrun boxsi -numanodes auto -threads $LSB_DJOB_NUMPROC $oommfin
tclsh $oommfrun killoommf all
软件资源

mumax

mumax 3.10

例:输入文件为当前目录下的sample.mx3,申请1个GPU提交到723090ib队列

#BSUB -q 723090ib
#BSUB -gpu num=1

mx3in=sample.mx3

module load cuda/11.2.0
/fs00/software/mumax/3.10-cuda11.0/mumax3 $mx3in
软件资源

支撑软件

请使用者自行解决License问题,本中心概不负责!

Boost

Name Path Module
Boost 1.72.0 /fs00/software/boost/1.72.0 boost/1.72.0
Boost 1.58.0 /fs00/software/boost/1.58.0 boost/1.58.0

CMake

Name Path Module
CMake 3.23.2 /fs00/software/cmake/3.23.2/ cmake/3.23.2
CMake 3.16.3 /fs00/software/cmake/3.16.3/ cmake/3.16.3
CMake 3.11.4 /fs00/software/cmake/3.11.4/ cmake/3.11.4

Grace

Name Path Module
Grace 5.1.25 /fs00/software/grace/5.1.25 grace/5.1.25

HDF5

Name Path Module
HDF5 1.10.5 /fs00/software/hdf5/1.10.5 hdf5/1.10.5

libpng

Name Path Module
libpng 1.5.26 /fs00/software/libpng/1.5.26 libpng/1.5.26

Libxc

Name Compiler Path Module
Libxc 5.2.2 GNU Compiler Collection (GCC) 11.2.0 /fs00/software/libxc/5.2.2 libxc/5.2.2

libzip

Name Path Module
libzip 1.6.1 /fs00/software/libzip/1.6.1 libzip/1.6.1

NetCDF-C

Name Path Module
NetCDF-C 4.7.0 /fs00/software/netcdf/c-4.7.0 netcdf/c-4.7.0

OVITO

Name Path Module
OVITO 2.9.0 /fs00/software/ovito/2.9.0

PCRE

Name Path Module
PCRE 8.39 /fs00/software/pcre/8.39 pcre/8.39

Qt

Name Path Module
Qt 5.11.1 /fs00/software/qt/5.11.1 qt/5.11.1
Qt 5.5.1 /fs00/software/qt/5.5.1 qt/5.5.1

Spglib (OpenMP)

Name Compiler Path Module
Spglib 1.9.9 /fs00/software/spglib/1.9.9 spglib/1.9.9
Spglib 1.9.0 GNU Compiler Collection (GCC) 5.2.0 /fs00/software/spglib/1.9.0-gcc5.2.0 spglib/1.9.0-gcc5.2.0

Tcl/Tk

Name Compiler Path Module
Tcl/Tk 8.6.12 GNU Compiler Collection (GCC) 11.2.0 /fs00/software/tcl/8.6.12-gcc11.2.0 tcl/8.6.12-gcc11.2.0
Tcl/Tk 8.6.6 Intel Parallel Studio XE 2017 Update 2 /fs00/software/tcl/8.6.6-ips2017u2 tcl/8.6.6-ips2017u2
Tcl/Tk 8.6.4 /fs00/software/tcl/8.6.4 tcl/8.6.4
Tcl/Tk 8.6.4 Intel Parallel Studio XE 2016 Update 2 /fs00/software/tcl/8.6.4-ips2016u2 tcl/8.6.4-ips2016u2
Tcl/Tk 8.6.4 Intel Parallel Studio XE 2016 Update 2 /fs00/software/tcl/8.6.4-ips2016u2-avx2 tcl/8.6.4-ips2016u2-avx2

Vim

Name Path Module
Vim 8.2.0488 /fs00/software/vim/8.2.0488 vim/8.2.0488
Vim 8.1 /fs00/software/vim/8.1 vim/8.1

zlib

Name Path Module
zlib 1.2.11 /fs00/software/zlib/1.2.11 zlib/1.2.11
软件资源

gnuplot

gnuplot

Name Path Module
gnuplot 5.2.7 /fs00/software/gnuplot/5.2.7 gnuplot/5.2.7
gnuplot 5.2.2 /fs00/software/gnuplot/5.2.2 gnuplot/5.2.2
gnuplot 5.0.6 /fs00/software/gnuplot/5.0.6 gnuplot/5.0.6
gnuplot 5.0.1 /fs00/software/gnuplot/5.0.1 gnuplot/5.0.1
软件资源

Zsh

Name Path Module
Zsh 5.8 /fs00/software/zsh/5.8 zsh/5.8

或从镜像站下载编译安装

Environment Modules

添加 Environment Modules 至 Zsh

echo "source /fs00/software/modules/latest/init/profile.sh" >> ~/.zshrc

命令行提示符

module load zsh/latest && exec zsh

Oh My Zsh

安装

在本地克隆后获取安装脚本再进行安装

git clone https://mirror.nju.edu.cn/git/ohmyzsh.git
cd ohmyzsh/tools
REMOTE=https://mirror.nju.edu.cn/git/ohmyzsh.git sh install.sh

切换已有 Oh My Zsh 至镜像源

git -C $ZSH remote set-url origin https://mirror.nju.edu.cn/git/ohmyzsh.git
git -C $ZSH pull

升级

omz update

主题

Powerlevel10k

安装
git clone --depth=1 https://mirror.nju.edu.cn/git/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

编辑 ~/.zshrc 的主题 ZSH_THEME="powerlevel10k/powerlevel10k"

升级
cd ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k && git pull
256色终端

开启 xterm 终端的256色以便正确显示提示颜色

echo "export TERM=xterm-256color" >> ~/.zshrc
永久在左侧显示主机名

在集群中经常需要登录到各个节点,因此最好在左侧永久显示主机名防止误操作 编辑 ~/.p10k.zsh

  1. POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS中的context剪切到POWERLEVEL9K_LEFT_PROMPT_ELEMENTS的第一项
  2. 注释typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION=这一行
  3. 更改typeset -g POWERLEVEL9K_CONTEXT_PREFIX=''

插件

zsh-autosuggestions

安装
git clone https://mirror.nju.edu.cn/git/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

编辑 ~/.zshrcplugins= 中添加 zsh-syntax-highlighting

plugins=( ... zsh-autosuggestions)
升级
cd ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && git pull

zsh-syntax-highlighting

安装
git clone https://mirror.nju.edu.cn/git/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

编辑 ~/.zshrcplugins= 最后添加 zsh-syntax-highlighting

plugins=( [plugins...] zsh-syntax-highlighting)
升级
cd ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting && git pull

服务门户

https://scc.nju.edu.cn

服务门户

登录方式

使用集群的用户名密码登录中心主持研发的HPC服务门户,在集群上没有账号的使用门户的用户名密码登录。

服务门户

账号管理

组一般对应课题组,用户则对应每个人。因涉及到收费,组长一般为教职工(如PI、导师),组员一般为学生或老师。

组长可自助审批组员账号,通过后账号立刻生效,即可使用。组长还可以禁用启用组员账号,被禁用的账号不能远程登录集群和服务门户,被禁用账号的数据和作业不受影响。

申请新组

  1. 新组长首页点击申请组
  2. 南京大学校内人员请绑定统一身份认证;
  3. 填写表单,提交申请;
  4. 与管理员联系,等待审批。

申请组员

  1. 新用户在首页点击注册账户
  2. 南京大学校内人员请绑定统一身份认证;
  3. 填写表单,用户组输入Linux Group Name,提交申请;
  4. 组长登录服务门户自助审批新用户,通过后账号立刻生效,即可使用。

测试报告

测试报告

AMD EPYC Rome VASP 测试

周健 2019.11.18

测试算例

Ruddlesden-Popper 钛酸锶 Sr4Ti3O10,305个原子。

输入文件

SYSTEM = STO

PREC=A

ENCUT=520
EDIFF=1E-6

ADDGRID=.T.

ISMEAR= 1     
SIGMA=0.2

LWAVE=.F.
LCHARG=.F.

NELMIN=4
NELM=100
LREAL=Auto

K-Points
0
Gamma
2 2 1
0 0 0

eScience中心测试,软件版本:VASP5.4.4 Intel 2018,CUDA 10.1.243

队列信息 CPU 核数 Elapsed time (s) scf次数 E0 in OSZICAR
e5v3ib队列,2*Intel Xeon E5-2680 v3 (12 Cores 2.50 GHz) 256 G RAM 24 6676 23 -.23554005E+04
e52682v4opa队列, 2*Intel Xeon E5-2682 v4 (16 Cores, 2.50 GHz) 32 5967 23 -.23554005E+04
6140ib队列, 4*Intel Xeon Gold 6140 (18 Cores, 2.30 GHz) 384 G RAM 72 2080 23 -.23554005E+04
6140ib队列, 4*Intel Xeon Gold 6140 (18 Cores, 2.30 GHz) 384 G RAM 36 2456 23 -.23554005E+04
6140ib队列, 4*Intel Xeon Gold 6140 (18 Cores, 2.30 GHz) 384 G RAM 18 5005 23 -.23554005E+04
7702队列, 2*AMD EPYC 7702 (64 Cores, 256MB Cache, 2.0 GHz) 256 G RAM 32 5034 23 -.23554005E+04
7702队列, 2*AMD EPYC 7702 (64 Cores, 256MB Cache, 2.0 GHz) 256 G RAM 64 3663 22 -.23554005E+04
7702队列, 2*AMD EPYC 7702 (64 Cores, 256MB Cache, 2.0 GHz) 256 G RAM 128 4401 23 -.23554005E+04
7502队列, 2*AMD EPYC 7502 (32 Cores, 128MB Cache, 2.5 GHz) 256 G RAM 32 5290 23 -.23554005E+04
7502队列, 2*AMD EPYC 7502 (32 Cores, 128MB Cache, 2.5 GHz) 256 G RAM 64 4176 22 -.23554005E+04
62v100ib队列,2*Intel Xeon Gold 6248 (20 Cores, 27.5MB Cache, 2.50 GHz) 768 GB RAM,8*NVIDIA Tesla V100 SXM2 32GB (5120 CUDA Cores 1290MHz, 32GB HBM2 876MHz 4096-bit 900 GB/s, NVLink, PCI-E 3.0 x16) 1CPU 1GPU 3053 23 -.23554005E+04

校计算中心测试,软件版本:VASP 5.4.4 Intel 2017,CUDA 10.1.168

队列信息 CPU/GPU Elapsed time (s) scf次数 E0 in OSZICAR
fat_384队列,4*Intel Xeon Gold 6248 (20 Cores, 2.50 GHz) 384 G RAM 20 5326.949 23 -.23554005E+04
fat_384队列,4*Intel Xeon Gold 6248 (20 Cores, 2.50 GHz) 384 G RAM 40 3105.863 23 -.23554005E+04
fat_384队列,4*Intel Xeon Gold 6248 (20 Cores, 2.50 GHz) 384 G RAM 80 2896.237 21 -.23554005E+04
gpu_v100队列,8 X TESLA V100 NVLink GPU,2 X CPU intel Xeon Gold 6248, 20核,2.5GHz, 768GB 内存 1/1 3202.687 23 -.23554005E+04
gpu_v100队列,8 X TESLA V100 NVLink GPU,2 X CPU intel Xeon Gold 6248, 20核,2.5GHz, 768GB 内存 2/2 2244.153 23 -.23554005E+04
gpu_v100队列,8 X TESLA V100 NVLink GPU,2 X CPU intel Xeon Gold 6248, 20核,2.5GHz, 768GB 内存 4/4 1379.651 23 -.23554005E+04
gpu_v100队列,8 X TESLA V100 NVLink GPU,2 X CPU intel Xeon Gold 6248, 20核,2.5GHz, 768GB 内存 8/8 1214.461 23 -.23554005E+04

结论

测试报告

Gromacs

注意:为了保证GPU性能, 在没有特殊要求的情况下,请使用2021版本的Gromacs,并用GPU计算所有的相互作用。没特殊要求的话请看第三部分。

1. Gromacs-2018.8

说明:

Gromacs使用CPU计算成键相互作用,使用GPU计算非键相互作用。

编译环境:

gcc/7.4.0
cmake/3.16.3
ips/2017u2
fftw/3.3.7-iccifort-17.0.6-avx2
cuda/10.0.130

软件信息:

GROMACS version:    2018.8
Precision:          single
Memory model:       64 bit
MPI library:        MPI
OpenMP support:     enabled (GMX_OPENMP_MAX_THREADS = 64)
GPU support:        CUDA
SIMD instructions:  AVX2_256
FFT library:        fftw-3.3.7-avx2-avx2_128
CUDA driver:        11.40
CUDA runtime:       10.0 

测试算例:

ATOM  102808(464 residues, 9nt DNA, 31709 SOL, 94 NA, 94 CL)
nsteps      = 25000000     ;50 ns

eScience中心GPU测试: 所有GPU节点使用单个GPU进行模拟。

gromacs2010.png


2. Gromacs-2021.3

说明:

使用的是集群自带的容器化(singularity)的gromacs-2021.3. Gromacs使用CPU计算成键相互作用,使用GPU计算非键相互作用。

文件位置

/fs00/software/singularity-images/ngc_gromacs_2021.3.sif

提交代码

#BSUB -q GPU_QUEUE
#BSUB -gpu "num=1"
module load singlarity/latest
export OMP_NUM_THREADS=`echo $LSB_HOSTS | awk '{print NF}'`
SINGULARITY="singularity run --nv /fs00/software/singularity-images/ngc_gromacs_2021.3.sif"
${SINGULARITY} gmx mdrun -nb gpu -deffnm <NAME>

软件信息:

GROMACS version:    2021.3-dev-20210818-11266ae-dirty-unknown
Precision:          mixed
Memory model:       64 bit
MPI library:        thread_mpi
OpenMP support:     enabled (GMX_OPENMP_MAX_THREADS = 64)
GPU support:        CUDA
SIMD instructions:  AVX2_256
FFT library:        fftw-3.3.9-sse2-avx-avx2-avx2_128-avx512
CUDA driver:        11.20
CUDA runtime:       11.40

测试算例:

ATOM  102808(464 residues, 9nt DNA, 31709 SOL, 94 NA, 94 CL)
nsteps      = 25000000     ;50 ns

eScience中心GPU测试: 所有GPU节点使用单个GPU进行模拟。 gromacs2021-singularity.png


3. Gromacs-2021.3(全部相互作用用GPU计算)

说明:

由于从2019版本开始,不同的相互作用慢慢都可以在GPU上进行运算,2021版本已经可以将所有模拟的计算用GPU来模拟,所以尝试用GPU进行所有相互作用的运算。

文件位置

/fs00/software/singularity-images/ngc_gromacs_2021.3.sif

提交代码

#BSUB -q GPU_QUEUE
#BSUB -gpu "num=1"
module load singlarity/latest
export OMP_NUM_THREADS=`echo $LSB_HOSTS | awk '{print NF}'`  # 需要,否则会占用所有CPU,反而导致速度边慢
SINGULARITY="singularity run --nv /fs00/software/singularity-images/ngc_gromacs_2021.3.sif"
${SINGULARITY} gmx mdrun -nb gpu -bonded gpu -update gpu -pme gpu -pmefft gpu -deffnm <NAME> # 设置所有的运算用GPU进行

测试算例:

ATOM  102808(464 residues, 9nt DNA, 31709 SOL, 94 NA, 94 CL)
nsteps      = 25000000     ;50 ns

eScience中心GPU测试: 所有GPU节点使用单个GPU进行模拟。 gromacs2021-singularity-gpu.png


结论:

  1. 对于GPU节点来说,如果使用GPU+CPU混合运算,主要限制的速度的会是CPU,所以应该尽可能使用GPU进行相互作用的计算。

补充信息

每个GPU队列带有的CPU核数

Queue CPU Core
72rtxib 4
722080tiib 4
723090ib 6
62v100ib 5
83a100ib 8
测试报告

vasp6 gpu 测试

测试报告

Gromacs-2021.3 (比较常用GPU队列)

4. Gromacs-2021.3 (比较常用GPU队列)

说明:

使用Singularity容器解决方案,调用/fs00/software/singularity-images/ngc_gromacs_2021.3.sif完成Gromacs的能量最小化(em)、平衡模拟(nvt、npt)以及成品模拟(md)在公共共享100%GPU队列722080tiib、72rtxib、723090ib的表现。

队列情况:

队列 节点数 每节点CPU 每节点内存(GB) 平均每核内存(GB) CPU主频(GHz) 每节点GPU数量 每GPU显存(GB) 浮点计算理论峰值(TFLOPS)
83a100ib 1 64 512 8 2.6 8 40 双精度:82.92
单精度:------
723090ib 2 48 512 10.7 2.8 8 24 双精度:4.30
单精度:569.28
722080tiib 4 16 128 8.0 3.0 4 11 双精度:3.07
单精度:215.17
72rtxib 3 16 128 8.0 3.0 4 24 双精度:2.30
单精度:195.74

前人关于Gromacs-2021.3(全部相互作用用GPU计算)的测试报告中,尝试用GPU来模拟102808个原子体系(464 residues, 9nt DNA, 31709 SOL, 94 NA, 94 CL)50 ns内所有相互作用的运算,结果表明83a100ib(250 ns/day以上)>723090ib(220 ns/day以上)>722080tiib(170 ns/day以上)>72rtxib(180 ns/day以上),但83a100ib和723090ib队列常年存在80以上的NJOBS,因此作为成品模拟的前期准备,笔者通常不使用这两个队列。

文件位置:

/fs00/software/singularity-images/ngc\_gromacs\_2021.3.sif

提交代码:

能量最小化(em.lsf)

#BSUB -q 72rtxib
#BSUB -gpu "num=1"
module load singularity/latest
export OMP_NUM_THREADS=`echo $LSB_HOSTS | awk '{print NF}'`
SINGULARITY="singularity run --nv /fs00/software/singularity-images/ngc_gromacs_2021.3.sif"
${SINGULARITY} gmx grompp -f minim.mdp -c 1aki_solv_ions.gro -p topol.top -o em.tpr
${SINGULARITY} gmx mdrun -nb gpu -ntmpi 2 -deffnm em

平衡模拟(nvt)

#BSUB -q 72rtxib
#BSUB -gpu "num=1"
module load singularity/latest
export OMP_NUM_THREADS=`echo $LSB_HOSTS | awk '{print NF}'`
SINGULARITY="singularity run --nv /fs00/software/singularity-images/ngc_gromacs_2021.3.sif"
${SINGULARITY} gmx grompp -f nvt.mdp -c em.gro -r em.gro -p topol.top -o nvt.tpr
${SINGULARITY} gmx mdrun -nb gpu -ntmpi 2 -deffnm nvt

平衡模拟(npt)

#BSUB -q 72rtxib
#BSUB -gpu "num=1"
module load singularity/latest
export OMP_NUM_THREADS=`echo $LSB_HOSTS | awk '{print NF}'`
SINGULARITY="singularity run --nv /fs00/software/singularity-images/ngc_gromacs_2021.3.sif"
${SINGULARITY} gmx grompp -f npt.mdp -c nvt.gro -r nvt.gro -t nvt.cpt -p topol.top -o npt.tpr
${SINGULARITY} gmx mdrun -nb gpu -ntmpi 2 -deffnm npt

成品模拟(md)

#BSUB -q 723090ib
#BSUB -gpu "num=1"
module load singularity/latest
export OMP_NUM_THREADS=`echo $LSB_HOSTS | awk '{print NF}'`
SINGULARITY="singularity run --nv /fs00/software/singularity-images/ngc_gromacs_2021.3.sif"
${SINGULARITY} gmx grompp -f md.mdp -c npt.gro -t npt.cpt -p topol.top -o md_0_1.tpr
${SINGULARITY} gmx mdrun -nb gpu -bonded gpu -update gpu -pme gpu -pmefft gpu -deffnm md_0_1

成品模拟(md)

也可以参照以下命令进行修改,以作业脚本形式进行提交:

#BSUB -q 723090ib
#BSUB -gpu "num=1"
module load singularity/latest
export OMP_NUM_THREADS=`echo $LSB_HOSTS | awk '{print NF}'`
SINGULARITY="singularity run --nv /fs00/software/singularity-images/ngc_gromacs_2021.3.sif"
${SINGULARITY} echo 4 | gmx pdb2gmx -f protein.pdb -o protein_processed.gro -water tip3p -ignh -merge all
${SINGULARITY} gmx editconf -f protein_processed.gro -o pro_newbox.gro -c -d 1.0 -bt cubic
${SINGULARITY} gmx solvate -cp pro_newbox.gro -cs spc216.gro -o pro_solv.gro -p topol.top
${SINGULARITY} gmx grompp -f ../MDP/ions.mdp -c pro_solv.gro -p topol.top -o ions.tpr
${SINGULARITY} echo 13| gmx genion -s ions.tpr -o pro_solv_ions.gro -p topol.top -pname NA -nname CL -neutral
${SINGULARITY} gmx grompp -f ../MDP/minim.mdp -c pro_solv_ions.gro -p topol.top -o em.tpr
${SINGULARITY} gmx mdrun -v -deffnm em
${SINGULARITY} echo 10 0 | gmx energy -f em.edr -o potential.xvg
${SINGULARITY} gmx grompp -f ../MDP/nvt.mdp -c em.gro -r em.gro -p topol.top -o nvt.tpr
${SINGULARITY} gmx mdrun -deffnm nvt
${SINGULARITY} echo 16 0 |gmx energy -f nvt.edr -o temperature.xvg
${SINGULARITY} gmx grompp -f ../MDP/npt.mdp -c nvt.gro -r nvt.gro -t nvt.cpt -p topol.top -o npt.tpr
${SINGULARITY} gmx mdrun -deffnm npt
${SINGULARITY} echo 18 0| gmx energy -f npt.edr -o pressure.xvg
${SINGULARITY} gmx grompp -f ../MDP/md.mdp -c npt.gro -t npt.cpt -p topol.top -o md.tpr
${SINGULARITY} gmx mdrun -v -deffnm md
${SINGULARITY} echo 4 4| gmx rms -f md.xtc -s md.tpr -o rmsd.xvg

软件信息:

GROMACS version:    2021.3-dev-20210818-11266ae-dirty-unknown
Precision:          mixed
Memory model:       64 bit
MPI library:        thread_mpi
OpenMP support:     enabled (GMX_OPENMP_MAX_THREADS = 64)
GPU support:        CUDA
SIMD instructions:  AVX2_256
FFT library:        fftw-3.3.9-sse2-avx-avx2-avx2_128-avx512
CUDA driver:        11.20
CUDA runtime:       11.40
测试算例:
ATOM 218234 (401 Protein residues, 68414 SOL, 9 Ion residues)

nsteps = 100000000 ; 200 ns

eScience中心GPU测试: 能量最小化(em)、平衡模拟(nvt、npt)使用1个GPU进行模拟,成品模拟(md)使用1个GPU进行模拟。

任务1 em nvt npt md
--- 72rtxib 722080tiib 722080tiib 723090ib
CPU time 1168.45 13960.33 42378.71
Run time 79 1648 5586 117.428 ns/day
0.204 hour/ns
Turnaround time 197 1732 5661
任务2 em nvt npt md
--- 72rtxib 722080tiib 72rtxib 722080tiib
CPU time 1399.30 15732.66 40568.04
Run time 93 1905 5236 106.862 ns/day
0.225 hour/ns
Turnaround time 181 1991 5479
任务3 em nvt npt md
--- 72rtxib 72rtxib 72rtxib 72rtxib
CPU time 1368.11 5422.49 5613.74
Run time 92 355 366 103.213 ns/day
0.233 hour/ns
Turnaround time 180 451 451
任务4 em nvt npt md
--- 72rtxib 72rtxib 72rtxib 722080tiib
CPU time 1321.15 5441.60 5618.87
Run time 89 356 369 111.807 ns/day
0.215 hour/ns
Turnaround time 266 440 435
任务5 em nvt npt md
--- 72rtxib 72rtxib 72rtxib 72rtxib
CPU time 1044.17 5422.94 5768.44
Run time 72 354 380 110.534 ns/day
0.217 hour/ns
Turnaround time 162 440 431
任务6 em nvt npt md
--- 723090ib 723090ib 723090ib 723090ib
CPU time 1569.17 7133.74 6677.25
Run time 81 326 325 114.362 ns/day
0.210 hour/ns
Turnaround time 75 320 300
任务7 em nvt npt md
--- 723090ib 723090ib 723090ib 722080tiib
CPU time 1970.56 5665.71 6841.73
Run time 91 253 327 111.409 ns/day
0.215 hour/ns
Turnaround time 123 251 328
任务8 em nvt npt md
--- 72rtxib 72rtxib 72rtxib 72rtxib
CPU time 1234.24 5540.59 5528.91
Run time 108 363 370 114.570 ns/day
0.209 hour/ns
Turnaround time 85 364 363
任务9 em nvt npt md
--- 723090ib 723090ib 723090ib 723090ib
CPU time 2016.10 7633.83 7983.58
Run time 93 342 361 115.695 ns/day
0.207 hour/ns
Turnaround time 130 377 356
任务10 em nvt npt md
--- 723090ib 723090ib 723090ib 72rtxib
CPU time 1483.84 7025.65 7034.90
Run time 68 317 333 102.324 ns/day
0.235 hour/ns
Turnaround time 70 319 316
结论:
  1. 能量最小化(em)在任务较少的722080tiib和72rtxib队列中,Run time分别为88.83 ± 12.45和83.25 ± 11.44s;

  2. 平衡模拟(nvt)任务在722080tiib、72rtxib和723090ib队列中,Run time分别为1776.50 ± 181.73、357.00 ± 4.08和309.50 ± 39.06 s;

  3. 平衡模拟(npt)任务在722080tiib、72rtxib和723090ib队列中,Run time分别为5411.00 ± 247.49、371.25 ± 6.08和336.50 ± 16.68 s;

  4. 原子数218234的 200 ns成品模拟(md)任务在722080tiib、72rtxib、和723090ib队列中,性能表现差别不大,分别为110.03 ± 2.75、115.83 ± 1.54和107.66 ± 5.90 ns/day。

  5. 综上,建议在能量最小化(em)、平衡模拟(nvt、npt)等阶段使用排队任务较少的72rtxib队列 ,建议在成品模拟(md)阶段按照任务数量(从笔者使用情况来看,排队任务数量72rtxib<722080tiib<723090ib<83a100ib)、GPU收费情况(校内及协同创新中心用户:72rtxib队列1.8 元/卡/小时=0.45元/核/小时、722080tiib队列1.2 元/卡/小时=0.3元/核/小时、723090ib队列1.8 元/卡/小时=0.3元/核/小时、83a100ib队列4.8 元/卡/小时=0.3元/核/小时)适当考虑队列

  6. 在以上提交代码中,未涉及到Gromacs的并行效率问题(直接“num=4”并不能在集群同时使用4块GPU),感兴趣的同学可以查看http://bbs.keinsci.com/thread-13861-1-1.html以及https://developer.nvidia.com/blog/creating-faster-molecular-dynamics-simulations-with-gromacs-2020/的相关解释。但根据前辈的经验,ATOM 500000以上才值得使用两张GPU加速卡,原因在于Gromacs的并行效率不明显。感兴趣的同学也可以使用Amber的GPU并行加速,但对显卡的要求为3090或者tesla A100。这里提供了GPU=4的gromacs命令:

gmx mdrun -deffnm $file.pdb.md -ntmpi 4 -ntomp 7 -npme 1 -nb gpu -pme gpu -bonded gpu -pmefft gpu -v