MATLAB¶
简介¶
MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、 信号处理、量化金融与风险管理、机器人,控制系统等领域。
安装环境¶
序号 |
集群 |
平台 |
版本 |
位置 |
安装方式 |
---|---|---|---|---|---|
1 |
hpckapok1 |
Cpu/Gpu |
R2023b |
/share/software/MATLAB |
安装包 |
2 |
hpckapok2 |
Cpu/Gpu |
R2023b |
/public/software/MATLAB |
安装包 |
使用方法¶
web平台提交¶
1.登录SCOW平台,并创建桌面

2.在桌面中打开终端

3.在终端申请计算节点资源,申请资源命令如下
# 申请资源命令例子,申请一个节点、cpuXeon6458资源分区、使用时长60分钟、32核
$ salloc -N 1 -p cpuXeon6458 -t 60:00 --cpus-per-task=32
命令行参数解释:
-N <节点数量>
--cpus-per-task=<单进程 CPU 核心数>
--gres=gpu:<单节点 GPU 卡数>
-t <最长运行时间>
-p <使用的分区>
--qos=<使用的 QoS>
4.根据分配的计算节点,使用 ssh -Y <计算节点> 登录至计算节点。例如下图,分配的节点为comput1,则命令为: ssh -Y comput1

5.登录到计算节点后使用命令 (集群1多执行一条命令 module load gui
) module load matlab/R2023b && matlab
,即可启动MATLAB

6.任务完成后使用 squeue
查看作业状态,使用 scancel <JOBID>
删除作业, 以免产生多余计费

非交互方式执行MATLAB作业示例¶
1.本地matlab编写测试程序sqrtTest.m,示例内容如下图:

2.登录集群主门户,选择进入一个集群的shell


3.创建matlab_batch_test目录,并切换到该目录

4.切换到门户的文件管理,上传matlab测试程序sqrtTest.m到对应的集群matlab_batch_test目录

5.切换到shell,确认上传程序文件正确

编写slurm提交作业脚本(请修改账户为您有权限使用的账户),内容如下:
#!/bin/bash
#SBATCH -J matlab_batch_test
### partition
#SBATCH -p cpuXeon6458
#SBATCH -A a_nicoper
#SBATCH -o %j.out
#SBATCH -e %j.err
#SBATCH -N 1
#SBATCH --ntasks-per-node=8
#SBATCH -t 00:30:00
module load matlab/R2023b
cd ~/matlab_batch_test
echo "run sqrtTest"
date
matlab -batch "sqrtTest"
date
7.提交作业运行,查看作业状态
$ sbatch job_sqrtTest.sh
$ squeue
8.查看运行输出。若作业处于运行状态,但无输出文件,或发现其他作业异常请及时使用scancel取消作业,避免产生不必要的计算资源费用
web平台提交GPU作业示例¶
1.申请节点后打开matlab软件

2.在桌面中打开终端

3.进入用户主目录,创建test目录并拷贝样例程序到该目录
$ mkdir test
$ cd test
$ cp -R /public/software/MATLAB/matlab_example/GPUExample .

4.在终端申请计算节点资源,申请资源命令如下
# 申请资源命令例子,在gpuA800分区中申请1个节点,总共8核、1张A800gpu卡资源,使用test账户,限制最多使用30分钟
$ salloc -p gpuA800 -N1 -n8 --gres=gpu:1 -A test -t 30

5.登录到计算节点后使用命令 module load matlab/R2023b && matlab
,即可启动MATLAB

6.打开TrainNetworkUsingAutomaticMultiGPUSupportExample.mlx,并运行该文件

7.运行完成后结果类似如下图

8.程序运行完后关闭matlab,回到启动matlab的终端。然后先exit登出计算节点,再次exit主动释放计算资源。squeue确认占用资源已释放,否则使用scancel取消作业,避免产生不必要的费用。

多节点并行计算¶
1.申请节点资源,打开matlab软件

2.配置加入集群,启用Parallel pool,进行多节点并行计算
#导入集群配置文件,用户第一次使用时需要配置
>> profile_master = parallel.importProfile('/share/software/MATLAB/SlurmProfile.mlsettings');
#加入现有SlurmProfile集群配置
>> c = parcluster('SlurmProfile');
#设置核心100,最大为512,启动并行池,会另外申请资源进行并行计算
>> parpool(c,100);
#使用并行计算
>>parfor i = 1:100
results(i) = i^2;
>>end

3.关闭并行池,退出matlab软件,然后再exit登出计算节点,可squeue查看还在运行作业

参考资料¶
Contributor:eva