Matlab并行计算工具箱™ ,使我们能够在集群电脑上执行我们的MATLAB ®程序。在本演示中,我们看看如何划分一个拥有大量操作的MATLAB集合成较小的工作单位,我们称这些工作单位为任务,其中每个任务可以在在我们的群集计算机中执行。我们将使用pctdemo_helper_split_scalar和pctdemo_helper_split_vector函数来实现这些功能。
内容目录
- 获得配置
- 开始顺序代码
- 分析顺序问题
- 示例:划分一个仿真到多任务中
- 示例:划分一个参数序列到多任务中
- 更多的参数序列
- 划分Matlab操作到多任务中:最佳实践
在这篇文章中,我们将讲解1-3,其他的见后继文章。
获得配置
像每一个Parallel Computing Toolbox的演示,本演示的需要,知道要使用什么样的调度。这里我们使用默认配置所确定的调度。你可以从帮组文档中查到如何创建新的配置和如何更改默认的配置。
configName = defaultParallelConfig();
从顺序代码开始
其中Parallel Computing Toolbox的一个重要的优势是,它可以很好的编译现有的串行顺序程序代码。于是,大家可以更加关注与算法设计初期、调试阶段、性能优化阶段的顺序MATLAB代码,因为这样我们才能得到快速的原型系统开发、完全利用Matlab提供的交互编辑、调试执行能力。在开发顺序代码的时候,我们应该分开前期处理和后期处理,使核心计算尽可能的简单和并独立于其余代码。一旦我们的代码基本稳定,就该考虑分布式计算了。如果我们为粗粒度的应用程序编写了很好的模式化代码,要想把这些计算划分开来是非常容易的。
分析顺序问题
并行计算工具箱支持执行粗粒度的应用程序,也就是说那些使用多个输入参数的独立的并行的单个程序。我们现在将尝试展示一些这样的粗粒度的例子,并解释如何划分这些种计算。我们将集中讨论两个常见的情况,他们是:
1. 使用不同的值作为输入参数,多次激活同一个单一函数。这种性质的计算,有时被称为parameter sweeps,它的Matlab代码通常看起来如下:
for i = 1:n
y(i) = f(x(i));
end
2. 多次引用一个单一的随机函数。假设g(x)的计算的涉及随机数,这样每次的计算返回的值都不一定一样(即使在输入参数不变的情况下)。这种计算方法有时被称为Monte Carlo simulations,以及代码往往看起来类似下列MATLAB的代码:
for i = 1:n
y(i) = g(x);
end
在我们的顺序代码中,Monte Carlo simulations和parameter sweeps类型的代码很有可能看上去非常相似。例如,如果函数f是矢量,parameter sweeps可能只是显示为
y = f(x);
和Monte Carlo simulations可能出现的作为
y = g(x, n);
本文翻译的英文原文是:Dividing MATLAB® Computations into Tasks