parfor
循环到集群和云在本例中,您从本地多核桌面开始,测量运行计算所需的时间,作为工作人员数量增加的函数。这个测试叫做强大的扩展测试。如果您增加更多的工人,它可以使您测量计算所需的时间减少。这种依赖性被称为加速,并允许您估计并行可扩展性你的代码。然后,您可以决定是否应该增加并行池中的工作人员数量,并将其扩展到集群和云计算。
创建函数。
编辑MyCode
在MATLAB®编辑器,输入新的parfor
循环和添加抽搐
和toc
来测量经过的时间。
函数a = MyCode(aparfori = 1:20 00 a(i) = max(abs(eig(rand(a))));结束toc结束
保存文件,并关闭编辑器。
在平行>平行的偏好菜单,检查一下你的默认集群是当地的(你的桌面机)。
在MATLAB命令窗口中,定义一个大小为1的并行池,并在一个worker上运行函数来计算运行时间。请注意单个工作人员所消耗的时间和关闭并行池的时间。
parpool (1);一个= MyCode (1000);
运行时间为172.529228秒。
删除(gcp);
打开一个由两个worker组成的新的并行池,并再次运行该函数。
parpool (2);一个= MyCode (1000);
注意经过的时间;你应该看到,与单一工人的情况相比,这已经减少了。
试试4、8、12和16个工人。通过在日志-日志尺度上绘制每个工作人员数量的运行时间来度量并行可伸缩性。
图中显示了典型的多核桌面PC的可伸缩性(蓝色圆圈的数据点)。强大的扩展测试显示,对于多达8个工作人员,几乎是线性加速和显著的并行可伸缩性。从图中可以看出,在这种情况下,我们无法实现超过8个工人的进一步加速。这个结果意味着,在本地桌面机器上,8个工人可以充分使用所有的内核。您可以在本地桌面得到不同的结果,这取决于您的硬件。要进一步提高并行应用程序的速度,可以考虑扩展到云计算或集群计算。
如果像前面的示例一样,您已经耗尽了本地的工人,那么您可以将计算扩展到云计算。检查您对云计算的访问平行>发现集群菜单。
在云中打开一个并行池,在不更改代码的情况下运行应用程序。
parpool (16);一个= MyCode (1000);
注意集群工作器数量增加所消耗的时间。通过在log-log尺度上绘制运行时间作为工作人员数量的函数来度量并行可伸缩性。
图中显示了云中的工作人员的典型性能(红色加上数据点)。这个强大的扩展测试显示了线性加速和100%的并行可伸缩性,最多可在云中使用16个工人。考虑通过增加云或计算集群中的worker数量来进一步扩展计算。请注意,对于大量的工作人员和其他应用程序,并行可伸缩性可能不同,这取决于您的硬件。
如果您可以直接访问集群,则可以使用集群上的worker来扩展计算。检查你对集群的访问平行>发现集群菜单。如果您有一个帐户,选择集群,打开一个并行池并在不更改代码的情况下运行应用程序。
parpool (64);一个= MyCode (1000);
图中显示了集群中工作人员的典型强伸缩性能(黑色x个数据点)。可以看到,您实现了100%的并行可伸缩性,在集群中支持至少80个worker。注意,这个应用程序是线性扩展的——加速等于使用的工人数量。
这个例子显示了一个等于工人数量的加速。并不是每一个任务都能达到类似的加速效果使用parfor交互式并行运行循环.
对于特定的任务,您可能需要不同的方法。要了解更多关于替代方法的信息,请参见选择一个并行计算解决方案.
提示
你可以进一步描述aparfor
在并行池中使用ticBytes
和tocBytes
.有关更多信息和示例,请参见剖析parfor-loops.