MATLAB

简介

MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、 信号处理、量化金融与风险管理、机器人,控制系统等领域。

安装环境

序号

集群

平台

版本

位置

安装方式

1

hpckapok1

Cpu/Gpu

R2023b

/share/software/MATLAB

安装包

2

hpckapok2

Cpu/Gpu

R2023b

/public/software/MATLAB

安装包

使用方法

web平台提交

1.登录SCOW平台,并创建桌面

../../../_images/matlab1.jpg

2.在桌面中打开终端

../../../_images/matlab2.jpg

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

../../../_images/matlab3.jpg

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

../../../_images/matlab4.jpg

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

../../../_images/matlab5.jpg

非交互方式执行MATLAB作业示例

1.本地matlab编写测试程序sqrtTest.m,示例内容如下图:

../../../_images/matlab6.jpg

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

../../../_images/shell1.png ../../../_images/shell2.png

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

../../../_images/matlab7.jpg

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

../../../_images/matlab8.jpg

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

../../../_images/matlab9.jpg
  1. 编写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软件

../../../_images/matlab1.jpg

2.在桌面中打开终端

../../../_images/matlab2.jpg

3.进入用户主目录,创建test目录并拷贝样例程序到该目录

$ mkdir test
$ cd test
$ cp -R /public/software/MATLAB/matlab_example/GPUExample .
../../../_images/matlab10.jpg

4.在终端申请计算节点资源,申请资源命令如下

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

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

../../../_images/matlab12.jpg

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

../../../_images/matlab14.jpg

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

../../../_images/matlab15.jpg

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

../../../_images/matlab16.jpg

多节点并行计算

1.申请节点资源,打开matlab软件

../../../_images/matlab-01.png

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
../../../_images/matlab-02.png

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

../../../_images/matlab-03.png

参考资料

Contributor:eva


最后更新: 2025 年 04 月 22 日