matlab也能分布式吗,matlab 分布式计算

Matlab多线程运算的问题

上次说到,Matlab R2006a开始使用Intel MKL,只要设好OMP_NUM_THREADS

这个环境变量,即可以BLAS Level 3的运算在任意线程数下。然而,尽管设定的线程数和CPU核的数目相同,但这样也并不能保证能提升计算效率。主要的原因在于建立线程也是需要时间的。如果你的任务只要0.0001秒就能算完,但建立线程也要用0.0001秒,那就根本没有必要把该任务多线程化。

麻烦的是,当我们设定好环境变量OMP_NUM_THREADS后启动Matlab,那么这个进程运行的线程数就定下来了,不能中途改变。于是,我们没有办法根据具体问题随时改变使用的线程数,使得在我们的程序中,能提升某部份的效率,但另一部份的效率却可能降低。

我们可以对矩阵乘法做一点测试,在不同的线性数下,看看不同的矩阵大小,其乘法的效率如何。首先编写程序如下:

THREADS = 2; % 线程数

N = 2000000; % N / 矩阵大小 = 每种维度的矩阵要做乘法的次数

% 设定测试的矩阵大小

MN = 50;

step = 2;

x = 10 : step : MN;

n = max(size(x));

T = zeros(2, n); % 用作存放结果

for i = 1 : n

M1 = zeros(x(i));

M2 = zeros(x(i));

M1 = rand(x(i));

M2 = rand(x(i));

t = cputime; % 准备计时

for j = 1 : N / x(i) % 令计算次数随矩阵增大而减少

tmp = M1 * M2;

end

T(:, i) = [x(i) (cputime - t) / THREADS]; % 存放结果

end

可以在不同线程下计算,把T存起来。接着可以比较单线程下的计算结果T1和双线程下计算的结果T2,有:

>> T = T1(2, :) ./ T2(2, :);

>> plot(T1(1, :), T, 'k')

可得出下图。说明当矩阵大小约为20到30时,双线程反而令矩阵乘法效率降低。当矩阵更小时,是否多线程效率更好,我不能保证,应该要作更仔细的验算。

6a418fdf426b0d6c60c5ba2a08bcef11.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB 中进行分布式计算可以使用分布式计算工具箱(Distributed Computing Toolbox)。下面是一些基本步骤来进行分布式计算: 1. 配置集群:首先,您需要配置 MATLAB 的集群配置文件,以连接到您的分布式计算资源。您可以使用 "parallel.clusterProfile" 命令创建和管理集群配置文件,或者使用 MATLAB 的集成开发环境(如 Parallel Computing Toolbox 中的 Cluster Manager)进行配置。 2. 创建并行池:在 MATLAB 中,通过 "parpool" 命令来创建一个并行池。并行池是一组 MATLAB 工作进程,用于并行执行计算任务。您可以指定要在并行池中使用的工作进程数量。 3. 执行并行任务:一旦创建了并行池,您可以使用 "parfor" 循环或 "spmd" 块来并行执行 MATLAB 代码。"parfor" 循环用于迭代计算任务,而 "spmd" 块用于在多个工作进程上执行不同的子任务。 4. 数据通信:在分布式计算中,您可能需要在不同的工作进程之间进行数据通信。MATLAB 提供了一些函数来处理数据通信,例如 "gcat"、"codistributed" 和 "distributed" 等。 5. 结果收集:在完成并行计算后,您可以使用 "gather" 函数将分布式计算的结果从各个工作进程收集到主 MATLAB 会话中。 请注意,分布式计算的实际操作可能会因您使用的计算资源和具体的计算任务而有所不同。您可能需要查阅 Distributed Computing Toolbox 的文档以获取更详细的指导,并根据您的特定需求进行相应的配置和编程。 希望这些信息对您有所帮助!如有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值