外观
MATLAB 集群使用方法
MATLAB 可用于数值计算、数据分析、算法开发和可视化。在智算平台上,可通过以下两种方式使用 MATLAB:
- 图形界面方式:适合交互式分析、绘图和程序调试,建议从智算平台门户启动。
- Slurm 批处理方式:适合运行时间较长、可重复执行的正式计算任务。
使用前须知
MATLAB 及其工具箱受许可证限制,请使用平台已授权的软件版本。正式计算任务不要在登录节点直接运行,应通过门户申请资源或使用 Slurm 提交。
通过门户使用图形界面
登录智算平台门户后,在应用列表中找到 MATLAB。如果桌面中没有 MATLAB 图标,可先从“应用中心”添加。
打开已有作业
如果已有正在运行的 MATLAB 作业,可在作业列表中点击“查看”图标进入浏览器图形界面。

进入图形桌面后即可启动 MATLAB,进行代码调试、数据分析和结果绘图。

创建新的 MATLAB 作业
- 在门户中进入 MATLAB 应用的提交页面。
- 填写作业名称,并选择合适的队列和计费项目。
- 选择平台提供的 MATLAB 版本。
- 需要图形界面时,将图形化选项设为“是”,并选择合适的分辨率。
- 设置工作目录。建议使用个人或项目目录,不要将重要文件只保存在临时目录中。
- 提交作业,等待状态变为“运行”后进入图形界面。

提交后可在作业列表查看运行状态,并通过“查看”图标进入 MATLAB。

完整操作示例如下:

及时释放资源
使用结束后,请先保存程序和计算结果,再正常退出 MATLAB,并在门户中确认作业已结束。仅关闭浏览器标签页不一定会终止后台作业。
通过 Slurm 运行批处理任务
批处理方式不依赖图形桌面,适合长时间计算和自动化流程。
查看和加载 MATLAB
先查看平台当前提供的 MATLAB 模块:
bash
module avail matlab根据查询结果加载实际可用的版本,例如:
bash
module load matlab/2022b
matlab -batch "disp(version); disp(2+2)"模块名称和版本可能随平台软件环境调整,请以
module avail matlab的输出为准。
准备计算程序
创建工作目录:
bash
mkdir -p ~/matlab-work
cd ~/matlab-work新建 analysis.m:
matlab
rng(1);
A = rand(2000);
b = rand(2000, 1);
x = A \ b;
save('result.mat', 'x', '-v7.3');
fprintf('Completed at %s\n', datetime('now'));编写 Slurm 脚本
新建 matlab_job.sh:
bash
#!/bin/bash
#SBATCH --job-name=matlab-batch
#SBATCH --partition=qcpu_18i
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=8
#SBATCH --mem=16G
#SBATCH --time=02:00:00
#SBATCH --output=matlab_%j.out
#SBATCH --error=matlab_%j.err
set -euo pipefail
module purge
module load matlab/2022b
cd "$HOME/matlab-work"
export OMP_NUM_THREADS="${SLURM_CPUS_PER_TASK}"
matlab -batch "run('analysis.m')"队列名称和模块版本应根据平台当前配置调整。提交并查看作业:
bash
sbatch matlab_job.sh
squeue -u "$USER"
sacct -j <作业ID> --format=JobID,State,Elapsed,AllocCPUS,MaxRSS运行完成后,当前目录中应生成 result.mat,标准输出和错误信息分别记录在 matlab_<作业ID>.out 与 matlab_<作业ID>.err 中。
单节点并行计算
使用 Parallel Computing Toolbox 时,可以在单个计算节点内启动与申请核心数一致的 worker。示例:
matlab
workers = str2double(getenv('SLURM_CPUS_PER_TASK'));
if isnan(workers) || workers < 1
workers = 1;
end
pool = parpool('local', workers);
results = zeros(1, workers);
parfor i = 1:workers
results(i) = sum(rand(1, 1e6));
end
save('parallel_result.mat', 'results');
delete(pool);并行核心数
worker 数量不得超过作业申请的 --cpus-per-task。多节点 MATLAB 并行还需要 MATLAB Parallel Server、许可证和集群配置支持,不能直接套用上述单节点示例;如有需求请联系管理员。
常见问题
提示许可证不可用
可能是许可证已被占满,或当前账号没有对应工具箱权限。可稍后重试;持续失败时,请将报错信息、MATLAB 版本和所需工具箱名称提交给管理员。
图形界面空白或连接中断
先确认门户中的 MATLAB 作业仍为运行状态,再重新进入图形界面。网络中断通常不会立即终止后台作业,但未保存的界面操作可能丢失。
作业提交后立即失败
优先查看 matlab_<作业ID>.err,并检查模块版本、工作目录、脚本路径和文件权限:
bash
cat matlab_<作业ID>.err
ls -ld "$HOME/matlab-work"
module avail matlab并行程序没有加速
确认程序确实使用了 parfor、parfeval 等并行功能,并检查 worker 数量是否与申请的 CPU 核心数一致。对于规模较小的任务,并行启动开销可能高于计算收益。
使用建议
- 调试程序时可使用门户图形界面,正式运行时优先使用 Slurm 批处理。
- 将输入、脚本、日志和结果放在固定的项目目录中,便于复现和排错。
- 先使用小规模数据验证流程,再申请更长时间或更多核心。
- 根据实际内存峰值调整
--mem,避免申请明显超过任务需求的资源。
