由于超算的便捷性,目前开始使用超算,但本人对于Linux命令流一窍不通,安装各种软件和命令都踩了不少坑,北航的超算平台也各种反人类。
北航超算的相关信息:
本系统配置了 3 个登录节点,260 个 CPU 计算节点(注意!),10 个 GPU 计算节点(注意!),一套 1.8P 共享存储。所有节点通过 100Gb/s EDR Infiniband 互联组成计算和存储网络。系统详细配置如下:
1) 登录管理节点:共 3 个登录节点。(只影响登陆)
2) GPU 计算节点:共 10 个 GPU 计算节点,每个节点配置 2 颗 Intel Golden 6240 系列处理
器(每个卡有18核处理器),共 36 个物理核,384GB 内存,8 个 NVIDIA V100 GPU 卡。
3) CPU 计算节点:共 260 个 CPU 计算节点,每个节点配置 2 颗 Intel Golden 6240 系列处
理器(每个卡18核处理器),共 36 物理核,384GB 内存(注意)(根据 IB 网络配置,单个作业最多使用 160 个计算节
点)。
4) 并行存储系统:配置一套 DDN 并行存储系统,共配置 1.8PB 存储容量。
5) 管理网络:配置一套千兆管理网;
6) 带外管理网络:配置一套千兆带外管理网;
7) 计算网络:配置一套 100Gb/s 高速 Infiniband 网。
总共电脑数有几个不知道啊。
- nn表示计算节点数,这里你可以自己选择,因为cpu最多160个计算节点
计算节点数/计算机数 = 每台计算机运行节点数
为什么要分配节点数,因为一台计算机的内存有限,最常见的原因是求解器所需的内存太多,无法在一台主机上运行。系统最大384GB 内存
nnhost表示要在每个主机计算几个节点。
- np表示核数
表示每个计算节点使用可用的内核数
nn*np 是活动核数(每个节点不要超过36个)
理论上可以用160个计算节点,于是160✖️36=5760。
也就是每个计算节点最多可以申请36个核,cpu最多申请活动的总核数可以到达5760个。但实际不可能让你申请那么多计算节点,全校这么多人在用。
例如:
使用4个计算节点(nn=4),每个计算节点分配8个核(np=8,np*nn=32),每个计算机分配2个节点(nnhost=2)
这样实际就用了两台计算机
使用2个计算节点(nn=2),每个计算节点12个核(np=12,np*nn=24),每个计算机分配1个节点(nnhost=1)
这样也是用了两台计算机
这些是我的观点,有错误可以指出
例子:
/gs/home/xx/Comsol/comsol56/multiphysics/bin/comsol batch -nn 1 -nnhost 12 -np 12 -inputfile ${INPUTFILE} -outputfile ${OUTPUTFILE} \
-batchlog $
表示1个计算节点,每个主机计算12个节点数,每个节点都使用12个内核
分布式计算就是希望通过指派多个节点,并行计算程序(我在瞎说,不严格就当没看到)
但并不是核越多越好问题的规模会影响加速效果。对于非常大型的模型(如几百万个自由度),加速效果会更好。如果您使用非常小的模型,则在使用多个内核时,加速会受到限制。此外,可能达到的最大加速效果还受到算法非并行部分的限制。
运行时长例子:针对同一套matlab程序,有
#SBATCH -N 4 # 使用 4 个节点
#SBATCH -n 20 # 共使用 20 个进程(cpu 核)
#SBATCH --ntasks-per-node=5 # 每个节点启动 5 个进程
结果为:
Elapsed time is 97.883870 seconds.
#SBATCH -N 4 # 使用 4 个节点
#SBATCH -n 60 # 共使用 60 个进程(cpu 核)
#SBATCH --ntasks-per-node=15 # 每个节点启动 15 个进程
结果为:
Elapsed time is 94.403575 seconds.
参考:http://cn.comsol.com/support/knowledgebase/1001
https://cn.comsol.com/blogs/hybrid-computing-advantages-shared-distributed-memory-combined/
程序安装
安装的例子b站很多,可以多搜索多试试
一、Matlab
北航超算居然没有安装matlab,滑天下之大稽,居然有高校超算不装matlab的,真是闻所未闻....
事先说明,csdn有个北航安装超算的帖子,本人亲测无用,因为是用X11的,下不到X11的我直接选择静默安装。
那个帖子如下:https://blog.csdn.net/weixin_41692946/article/details/120971906
我的安装历程:
下载Linux版 matlab,这里都用2019.链接在 https://pan.baidu.com/s/17fBd0XX0At5cevaLzxUuhQ
注意把里面的破解包也下过来 密码:qalz本地解压后上传服务器端,你要直接用服务器7zip也行
将文件上传的地方进行修改权限,你可以选择手动修改,直接改为777
或者通过命令修改
chmod 777 /路径/install
好的,修改命令的指令你会了。你需要修改这几个文件的权限:
/gs/home/XX/matlab/R2019b_Linux/install
/gs/home/XX/matlab/R2019b_Linux/bin/glnxa64/install_unix
/gs/home/XX/matlab/R2019b_Linux/sys/java/jre/glnxa64/jre/bin
修改完了;当然你也可以对所有文件修改权限,注意要用resursively
开始安装
直接cd到安装包所在文件夹/gs/home/XX/matlab/R2019b_Linux/,然后 ./install
结果: 报错
Error: Installation cannot proceed. You may either:
1. Set an X11 display, and restart the install process
2. Use the silent install feature by specifying the -mode silent option
后来发现:必须静默模式下安装,因为没有可视化界面
- 修改后命令 ./install -mode silent
接着报错:说 the Installer cannot be run from inside the DVD directory. Change to your home directory and execute this command.
百度之,发现不能直接在挂载的目录即matlab文件夹下运行./install,可以返回上级目录运行./matlab/install
接着回上一层文件夹/gs/home/XX/matlab/
然后 ./install -mode silent -agreeToLicense yes -fileInstallationKey 09806-07443-53955-64350-21751-41297
接着报错:
Error: 不能在home文件创造xx(英文反正这个意思)
确实,我没有根目录的权限也不可能装在学校根目录下啊,得手动修改安装路径只能自己打开安装包信息看看了,在/gs/home/xx/matlab/R2019b_Linux/install_input.txt
## SPECIFY INSTALLATION FOLDER
##
## Example:
## (Windows) destinationFolder=C:\Program Files\MATLAB\RXXXX
## (Unix) destinationFolder=/usr/local/RXXXX
## (Mac) destinationFolder=/Applications
##
## Set the desired value for destinationFolder and
## uncomment the line.
# destinationFolder=
## SPECIFY FILE INSTALLATION KEY
##
## Example: fileInstallationKey=xxxxx-xxxxx-xxxxx-xxxxx.....
##
## Set the desired value for fileInstallationKey and
## uncomment the line.
##
# fileInstallationKey=
好吧,把安装的绝对路径及序列号加上
最终安装命令:
./R2019b_Linux/install -mode silent -agreeToLicense yes -fileInstallationKey 09806-07443-53955-64350-21751-41297 -destinationFolder /gs/home/xx/Matlab
好,这下成功安装中了,接着和师弟出去吃饭了,回来一看傻眼了,被程序kill了
- 询问超算老师,得知是负载过高....
忍住吐槽的心(安装个matlab也能负载过高,你这可是超算啊),把原来的安装残余文件删除(不然这些残余文件会影响下次安装)
自己写个脚本提交计算节点好了
于是我把脚本放在这里了, 建立了脚本 install_mat.sh,注意要改成 LF格式。不然提交会报错说识别不了\n\r.
(Batch script contains DOS line breaks (\r\n))
#!/bin/bash
#SBATCH -J std
#SBATCH -p cpu-normal
#SBATCH -N 1
#SBATCH -n 20
#SBATCH -t 10000:00
#SBATCH --mail-type=all
#module load intel/17.0.7-thc
cd ${SLURM_SUBMIT_DIR}
mkdir ${SLURM_JOBID}
export TMPDIR=${SLURM_SUBMIT_DIR}
./R2019b_Linux/install -mode silent -agreeToLicense yes -fileInstallationKey 09806-07443-53955-64350-21751-41297 -destinationFolder /gs/home/xx/Matlab
make
make install
提交完,系统又卡bug了,不过这次是官方的问题
美滋滋出去吃个夜宵
安装OK的标志:查看文件slurm-4537276.out
会有信息
Exiting with status 0
End - Successful.
Finished
make: *** No targets specified and no makefile found. Stop.
make: *** No rule to make target `install`. Stop.
妥了
- 回来一看,准备打开,想起来还需要激活,于是看下前面crack的文件 readme.txt
standalone:
- Install choosing the option "Use a File Installation Key" and supply the following FIK
09806-07443-53955-64350-21751-41297
- To install Matlab Production Server,using this
40236-45817-26714-51426-39281
- Use license_standalone.lic to activate,
or copy license_standalone.lic to %installdir%\licenses\ ,and run matlab without activation
- after the installation finishes copy the folders to %installdir% to overwriting the originally installed files
好,告诉我们两个事:
需要在你安装的目录新建一个licenses的文件夹,把 license_standalone.lic 放进去
把 libmwlmgrimpl.so 这个文件取代安装位置bin/glnxa64/matlab_startup_plugins/lmgrimpl/中的同名文件,记着取代之前该原始文件权限777
两个文件都搞定以后,直接cd到安装好的matlab路径(在bin文件位置):
./matlab
(网上说需要./matlab -chome/usr/matlab2016/licenses/license_standalone.lic, 但是我直接matlab就打开了,前面也说直接copy就行,不知道为啥)
出现以下文字
MATLAB is selecting SOFTWARE OPENGL rendering.
< M A T L A B (R) >
Copyright 1984-2019 The MathWorks, Inc.
R2019b (9.7.0.1190202) 64-bit (glnxa64)
August 21, 2019
To get started, type doc.
For product information, visit www.mathworks.com.
>> 1+1
ans =
2
成功打开
有些可能需要清空系统的缓存,命令rm -r -f ~/.matlab/(我没试过,总之看rp)
- 提交作业
两种方式: - 采用后台计算,并不是提交到计算节点上,cd到作业的目录,然后输入
nohup matlab -nodesktop -nosplash < test.m >running.log 2>running.err
这种方法不推荐,因为不能调度服务器的资源
- 采用脚本提交作业
首先要在之前环境变量中加入matlab路径。首先先新建文本文件.bashrc
在文件中加入
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# export SYSTEMD_PAGER="/gs/home/xx/Matlab/bin/matlab"
export PATH="/gs/home/baoyue/Matlab/bin/:$PATH"
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER="/gs/home/xx/Matlab/bin:$PATH"
# User specific aliases and functions
然后接着激活,在命令行中输入
. ~/.bashrc
激活后即可使用。
于是采用matlab提交作业脚本进行提交,提交脚本如官方指导,奉上
matlab_slurm.sh
#!/bin/bash
#SBATCH -J test # 任务名字是 test
#SBATCH -p cpu-normal # 提交到 normal 分区
#SBATCH -N 4 # 使用 4 个节点
#SBATCH -n 20 # 使用 20 个进程(cpu 核)
#SBATCH --ntasks-per-node=5 # 每个节点启动 5 个进程
#SBATCH -t 10000:00 # 任务最大运行时间是 10000 分钟
#SBATCH -o test.out #正确的输出
#SBATCH -e err.out #错误的输出
# module add matlab # 添加 MATLAB 模块,由于在超算中我们使用的是自己的matlab程序,所以这里不载入环境
matlab -nodesktop -nosplash -nodisplay -r "test_" # 使用 MATLAB 运行当前文件夹中的 Test.m 文件
Bingo!
参考:视频
https://www.cnblogs.com/graybird/p/9104581.html
https://blog.csdn.net/yuanchheneducn/article/details/50172027
https://blog.csdn.net/weixin_40562999/article/details/112394410
https://zhuanlan.zhihu.com/p/339545166
https://blog.csdn.net/sethinking/article/details/88375995
https://blog.csdn.net/qq_15015187/article/details/107740427
https://blog.csdn.net/weixin_45092662/article/details/121299887
二、Comsol
Comsol安装并无大碍,非常顺利,我的是6.0版本
1 如前一样。
修改权限
2 按照流程安装comsol,其他没啥可说的。因为comsol需要无图形界面安装
需要修改 setupconfig.ini 文件,主要是一个静默安装、一个同意条款、安装文件路径、然后破解许可证文件路径。
#
# COMSOL automated installation answer file.
#