放大parfor- 为群集和云

在此示例中,您从本地多核桌面启动并测量运行计算所需的时间,作为越来越多的工人的函数。测试称为a强大的缩放测试。如果您增加更多的工人,它可以使您测量计算所需的时间减少。这种依赖性被称为加速,并允许您估计并行可扩展性你的代码。然后,您可以决定是否应该增加并行池中的工作人员数量,并将其扩展到集群和云计算。

  1. 创建函数。

    编辑我的码
  2. 在MATLAB®编辑器,输入新的parfor- 播充和添加抽搐toc来测量经过的时间。

    功能a = MyCode(aparfori = 1:20 00 a(i) = max(abs(eig(rand(a))));结束toc
  3. 保存文件,并关闭编辑器。

  4. 平行>并行偏好菜单,检查一下你的默认群集当地的(你的桌面机)。

  5. 在MATLAB命令窗口中,定义一个大小为1的并行池,并在一个worker上运行函数来计算运行时间。请注意单个工作人员所消耗的时间和关闭并行池的时间。

    parpool (1);一个= MyCode (1000);
    经过时间为172.529228秒。
    删除(gcp);
  6. 打开两个工人的新并行池,再次运行该功能。

    parpool (2);一个= MyCode (1000);

    注意经过的时间;你应该看到,与单一工人的情况相比,这已经减少了。

  7. 试试4、8、12和16个工人。通过在日志-日志尺度上绘制每个工作人员数量的运行时间来度量并行可伸缩性。

    图中显示了典型的多核桌面PC的可伸缩性(蓝色圆圈的数据点)。强大的扩展测试显示,对于多达8个工作人员,几乎是线性加速和显著的并行可伸缩性。从图中可以看出,在这种情况下,我们无法实现超过8个工人的进一步加速。这个结果意味着,在本地桌面机器上,8个工人可以充分使用所有的内核。您可以在本地桌面得到不同的结果,这取决于您的硬件。要进一步提高并行应用程序的速度,可以考虑扩展到云计算或集群计算。

  8. 如果像前面的示例一样,您已经耗尽了本地的工人,那么您可以将计算扩展到云计算。检查您对云计算的访问平行>发现群集菜单。

    在云中打开并行池并在不更改代码的情况下运行应用程序。

    parpool (16);一个= MyCode (1000);

    注意集群工作器数量增加所消耗的时间。通过在log-log尺度上绘制运行时间作为工作人员数量的函数来度量并行可伸缩性。

    该图显示了云中工人的典型性能(红色加上数据点)。这种强大的缩放测试显示了线性加速和100%并行可扩展性,最多可扩展至16个工人。通过增加云中的工人数量或计算群集,考虑进一步扩大计算。请注意,对于更大数量的工人和其他应用程序,并行可伸缩性可以不同,具体取决于您的硬件。

  9. 如果您可以直接访问群集,可以使用群集上的工人来扩展您的计算。检查您对群集的访问平行>发现群集菜单。如果您有一个帐户,选择集群,打开一个并行池并在不更改代码的情况下运行应用程序。

    parpool (64);一个= MyCode (1000);

    图中显示了集群中工作人员的典型强伸缩性能(黑色x个数据点)。可以看到,您实现了100%的并行可伸缩性,在集群中支持至少80个worker。注意,这个应用程序是线性扩展的——加速等于使用的工人数量。

    此示例显示了加速等于工人的数量。不是每个任务都可以实现类似的加速,参见使用parfor交互式并行运行循环

    对于特定的任务,您可能需要不同的方法。要了解更多关于替代方法的信息,请参见选择一个并行计算解决方案

提示

你可以进一步描述aparfor在并行池中使用ticBytestocBytes.有关更多信息和示例,请参见剖析parfor-loops

相关话题