单节点运行 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

请注意

  1. 单节点运行,--nodes 只能为 1
  2. 如果是并行代码,--ntasks-per-node 设置为所需要的 cpu 核数
  3. 请将“用户账号名”替换为用户自己的账号名
  4. 请将“程序名字”替换为用户自己的 .m 文件名
  5. 请用户根据自己的实际情况修改或添加其它 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

results matching ""

    No results matching ""