单节点运行 Matlab
Matlab 串行程序使用一个 cpu 核计算,Matlab 并行程序使用多个 cpu 核计算
- 即使用户申请了多个 cpu 核,串行程序也不会自动变成并行程序
- 并行计算必须要由用户自行编写并行代码
在单个计算节点上运行 Matlab 串行或并行程序,作业脚本示例如下
#!/bin/bash
#SBATCH --partition=hpxg
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --time=72:00:00
export MATLAB_PREFDIR=/tmp/用户账号名_matlab
cd $SLURM_SUBMIT_DIR
module load matlab/R2018b
matlab -nosplash -nodisplay -nodesktop < 程序名字.m
请注意
- 单节点运行,
--nodes
只能为 1- 如果是并行代码,
--ntasks-per-node
设置为所需要的 cpu 核数- 请将“用户账号名”替换为用户自己的账号名
- 请将“程序名字”替换为用户自己的 .m 文件名
- 请用户根据自己的实际情况修改或添加其它 Slurm 选项
Matlab 分布式并行
如果需要多个计算节点来运行 Matlab 并行程序,就需要使用 MDCS(MATLAB Distributed Computing Server)
,这是 Matlab 的分布式计算服务,用户需要使用我们定制的脚本来调用 MDCS
- 串行程序使用
MDCS
无效- 并行程序使用的 cpu 核数如果少于 16 个,不要使用
MDCS
,会降低效率
复制 /software/MATLAB/MDCS/matlab_mdcs_slurm.sh
到用户的程序目录,修改其中的选项
work_dir
请填写 .m 程序所在的目录路径mfile
请填写 .m 程序的名字,不含 .m 后缀ntasks
请填写要申请的 cpu 核数partition
请填写要使用的分区名称account
请填写关联的付费账号名称
在 .m 程序所在的目录下,运行以下命令提交 MDCS
计算作业
sbatch -A 付费账户(超算用户名) -p 分区名 matlab_mdcs_slurm.sh