主要内容

交互式并行运行循环parfor

在这个例子中,你从一个缓慢的开始-循环,并使用a来加速计算parfor循环。parfor分割执行对并行池中的工作人员进行循环迭代。

这个例子计算一个矩阵的光谱半径,并转换循环到一个parfor循环。了解如何测量由此产生的加速。

  1. 在MATLAB®编辑器,输入以下内容循环。添加抽搐toc来测量经过的时间。

    Tic n = 200;一个= 500;一个= 0 (n);i = 1:n a(i) = max(abs(eig(rand(a))));结束toc
  2. 运行脚本,并记录运行时间。

    运行时间为31.935373秒。

  3. 在脚本中,替换循环用parfor循环。

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

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

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

    使用“local”配置文件启动并行池(parpool)…连接到4个工人. ...运行时间为10.760068秒。
    parfor运行四个工人大约比相应的三倍快循环运行。这个速度比理想的四倍的速度要小。这是由于并行开销造成的,包括将数据从客户机传输到工作人员和返回所需的时间。这个例子显示了一个很好的速度提升和相对较小的并行开销,并且从转换到parfor循环。并不是所有的-loop迭代可以变得更快parfor循环。想要了解更多,请看决定什么时候使用parfor

使用的一个关键要求parfor每个迭代必须是独立的。适合于parfor处理包括蒙特卡罗模拟和参数扫描。有关下一步,请参见转换for-Loops为parfor-Loops

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

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

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

你可以运行Simulin金宝appk®模型与parsim命令代替parfor循环。有关并行使用Simulink的更多信息和示例,请参阅金宝app运行多个模拟(金宝app模型)

另请参阅

|||

相关的话题