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