主要内容

放大parfor-循环到集群和云

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

  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尺度上绘制运行时间作为工作人员数量的函数来度量并行可伸缩性。

    该图显示了云中工作人员的典型性能(红色加上数据点)这种强大的缩放测试显示了云上的16个工作人员的线性加速和100%并行可扩展性。考虑通过增加云中或计算机集群中的工人的数量来进一步扩大计算量。注意,并行可伸缩性可以根据硬件的不同而不同,对于更多的工人和OT。她的申请。

  9. 如果您可以直接访问群集,则可以使用群集上的辅助对象来放大计算。请从平行的>发现群集菜单。如果您有一个帐户,选择集群,打开一个并行池并在不更改代码的情况下运行应用程序。

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

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

    此示例显示的加速比等于工作人员的数量。并非每个任务都可以实现类似的加速比,例如,请参阅使用parfor交互式并行运行循环

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

提示

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

相关话题