并行执行多个matlab程序(多组参数)

本文介绍了如何在Matlab中通过命令行传递参数给无参数和带参数的函数,以及如何利用shell脚本进行多参数训练任务的并行执行。重点讲解了使用'fprintf'和'disp'函数,以及shell的'for'循环和'wait'命令实现并行训练。
摘要由CSDN通过智能技术生成

argument passing in command line

命令行运行一个无参数的函数,如:

function f()
    fprintf("hello world!\n");
end

可以执行 matlab -nodesktop -nosplash -r f。而如果要传参数,如:

function g(alpha)
    disp(alpha);
end

参考 [1],执行 matlab -nodesktop -nosplash -r "g(27)",即用引号括起来。

parallel training

现有一个训练程序,要测试多个参数,硬件足够同时跑多组,就可以把训练函数写成:

% train.m
function train(alpha, beta)
    fprintf("begin\n");
    fprintf("alpha = %.4f, beta = %.4f\n", alpha, beta);
    % training code
    fprintf("end\n");
    exit % 必加,用来退出 matlab 环境,否则会阻塞下面 shell 的循环
end

调用的 shell 脚本:

  • 命令尾加 & 挂子进程并行跑
  • wait 命令等待并行的子进程全部结束(类似多进/线程的 join
#!/bin/bash

set -e

ALPHA=(1 2 3)
BETA=(4 5 6)

for _a in $(seq 0 `expr ${#ALPHA[@]} - 1`); do
    alpha=${ALPHA[_a]}
    for _b in $(seq 0 `expr ${#BETA[@]} - 1`); do
        beta=${BETA[_b]}
        matlab -nodesktop -nosplash -r "train($alpha, $beta)" &
    done
    wait  # 资源不是很够,就在这里 wait,并行少些
done

# wait  # 资源够,就在这里 wait,并行多些

References

  1. run matlab and pass integer parameter from command line
  2. pause
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab并行机调度是指在Matlab中使用并行算技术来提高程序的执行效率和性能。通过将任务分解为多个子任务,并在多个处理器上同时执行这些子任务,可以加快程序的运行速度。 在Matlab中,可以使用Parallel Computing Toolbox来实现并行计算。该工具箱提供了一系列函数和工具,用于管理和调度并行计算任务。以下是一些常用的并行机调度技术和方法: 1. 并行循环:使用parfor语句可以将循环迭代并行化,使每个迭代在不同的处理器上同时执行,从而加速循环的执行速度。 2. 并行函数:使用parfeval函数可以将函数调用并行化,将函数的输入参数分发到不同的处理器上执行,并收集结果。这样可以同时执行多个函数调用,提高程序的运行效率。 3. 数据分发:使用spmd语句可以将数据分发到不同的处理器上,并在每个处理器上独立地执行相应的计算操作。通过合理地划分数据和任务,可以充分利用多个处理器的计算能力。 4. 并行作业:使用batch函数可以将多个独立的Matlab作业提交到集群或远程服务器上进行并行计算。这样可以充分利用集群资源,提高作业的执行效率。 5. 并行工具箱:除了Parallel Computing Toolbox,Matlab还提供了其他一些并行工具箱,如Distributed Computing Toolbox和GPU Computing Toolbox,用于在分布式环境或GPU上进行并行计算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值