MATLAB(矩阵实验室)是MATrix LABoratory的缩写,是一款由美国 MathWorks 公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。MATLAB主要用于数值运算,但利用为数众多的附加工具箱(Toolbox)它也适合不同领域的应用,例如控制系统设计与分析、图像处理、信号处理与通讯、金融建模和分析等。
可以采用两种方式使用Matlab,通过创建实例运行MATLAB或是在集群中提交作业。
在实例下,可以采用命令行 <terminal>
或者图形化桌面 <remote_gui>
提交计算,只能单机运行。
在集群中,通过用命令行或页面方式提交作业,可以并行计算。
创建并运行实例后,点击控制台
按钮,进入终端界面。
在命令行输入如下命令:
/opt/app/MATLAB/bin/matlab
输出类似如下信息,即可正常用命令行使用Matlab。
MATLAB is selecting SOFTWARE OPENGL rendering.
< M A T L A B (R) >
Copyright 1984-2016 The MathWorks, Inc.
R2016b (9.1.0.441655) 64-bit (glnxa64)
September 7, 2016
To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.
创建并运行实例后,点击实例名称,进入实例详情页面,
点击详情页面右上角的“数据管理”按钮,将本机的文件传输到实例中。
返回实例列表点击远程桌面
按钮,或是在实例详情页面右上角点击“远程桌面”进入桌面,MATLAB会自动启动。
在左边的”Current
Folder“中可以看到abcd.m
,打开文件进行计算。计算输出的结果存储在同一个目录下,可以进一步进行处理。
选择“共享资源”-“公共集群”,在“”数据管理“中将文件和数据上传到该集群的目录下。
点击“实例”,打开集群控制台。
在命令行输入vi matlab_demo.sh
创建matlab_demo.sh
脚本,示例内容如下:
#!/bin/bash
### 设置该作业的作业名
#SBATCH --job-name=test-matlab
## 指定该作业需要2个节点数
#SBATCH --nodes=2
### 每个节点所运行的进程数为20
#SBATCH --ntasks-per-node=20
### 作业最大的运行时间,超过时间后作业资源会被SLURM回收
#SBATCH --time=2:00:00
### 程序的执行命令
/opt/app/MATLAB/2021a/bin/matlab -nodesktop -nosplash -nodisplay -r abcd -logfile LogFile.txt
echo "Matlab job ${SLURM_JOB_ID} done."
Attention
上述MATLAB执行程序的路径以实际情况为准,通常安装在/opt/app/
目录下。
或是参考数据上传 <upload file to cluster>
,在本机创建好运行脚本后,通过WEB页面上传到集群的个人目录下。
Slurm作业脚本准备好后,在终端执行sbatch matlab_demo.sh
命令来提交作业。作业完成后将在目录下生成testR.mat
文件,可以将此文件下载后再参考上文 <upload file to matlab instance>
,上传到
MATLAB 单机的图形界面中进行处理。
或是通过控制台,直接从集群目录将文件复制到MATLAB实例目录下。
打开实例的终端,输入如下命令复制文件:
cp /group_homes/public_cluster/home/demo_user/file ~/
注意,其中public_cluster
修改为公共集群名称,demo_user
更改为自己的用户名,file
为文件名称。
也可以参考cluster login
通过客户端创建并运行脚本。
除了命令行方式,可以通过WEB页面建立和提交作业 <submit job through web>
。
进入到“集群”的“提交作业”页面,选择默认集群、“cpu作业”模板,填写“作业名称”、节点数、进程数。
参照命令行模式中的matlab_demo.sh
脚本内容,将MATLAB执行命令粘贴到下面的“脚本”框中,并点击“提交作业”。作业完成后,参考上文 <copy file from cluster to instance>
将目录中生成的testR.mat
文件拷贝到带图形的MATLAB单机实例中进行阅览。
实例abcd.m
的内容
% The user's MATLAB codes A = zeros(100,1); parfor i = 1:100 pause(10); A(i) = i; %A(i) = sin(i*2*pi/20); end save testR.mat A; %save result
官方MATLAB 官方并行计算及集群运算学习资料