主要内容

在并行使用中交互式运行循环parfor

在本例中,您从慢速开始-循环,你可以使用parfor循环。parfor的执行拆分-循环迭代并行池中的工作线程。

这个例子计算了一个矩阵的谱半径,并将一个-loop into aparfor循环。找出如何衡量产生的加速。

  1. 在MATLAB中®编辑器,输入以下内容循环。添加抽搐而且toc测量所消耗的时间。

    Tic n = 200;A = 500;A = 0 (n);i = 1:n a(i) = max(abs(eig(rand(a))));结束toc
  2. 运行该脚本,并注意所花费的时间。

    运行时间为31.935373秒。

  3. 在脚本中替换-loop with aparfor循环。

    Tic n = 200;A = 500;A = 0 (n);parfori = 1:n a(i) = max(abs(eig(rand(a))));结束toc

  4. 运行新脚本,然后再运行一次。注意,第一次运行比第二次运行慢,因为并行池需要一些时间来启动并使代码对工作者可用。注意第二次运行所花费的时间。

    默认情况下,MATLAB会自动在本地机器上打开一个并行工作池。

    使用“Processes”配置文件启动并行池(parpool)…连接到4个工人. ...运行时间为10.760068秒。
    parfor在四个工人上运行大约比相应的速度快三倍循环运行。这种加速比理想的四倍加速要小。这是由于并行开销,包括将数据从客户机传输到工作者和返回所需的时间。这个例子展示了用相对较小的并行开销实现的良好加速,并从转换为parfor循环。并不是所有的-循环迭代可以变成更快parfor循环。要了解更多,请参见决定何时使用parfor

使用的一个关键要求parfor-loops的意思是每个迭代必须是独立的。适合的独立问题parfor处理包括蒙特卡洛模拟和参数扫描。有关后续步骤,请参见将for-Loops转换为parfor-Loops

在本例中,通过转换-loop into aparfor-循环在四个工人。您可以通过增加并行池中的工作程序的数量来进一步减少运行时间,参见将parfor-Loops扩展到集群和云

您可以修改集群配置文件,以控制运行循环的工作者数量,以及这些工作者是本地的还是在集群上的。有关概要文件的更多信息,请参见发现集群并使用集群概要文件

修改并行首选项,以控制是否自动创建并行池,以及在超时之前它保持多长时间可用。有关首选项的更多信息,请参见指定并行首选项

你可以运行Simulink®模型与之平行parsim命令而不是使用parfor循环。有关并行使用Simulink的更多信息和示例,请参见运行多个模拟(模型)

另请参阅

|||

相关的话题

Baidu
map