主要内容

按比例增加parfor-循环到集群和云

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

  1. 创建函数。

    编辑MyCode
  2. 在MATLAB中®编辑器,进入新的parfor-循环和添加抽搐而且toc测量所消耗的时间。

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

  4. 平行>平行的偏好菜单,检查你的默认集群当地的(你的台式电脑)。

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

    parpool (1);a = MyCode(1000);
    运行时间为172.529228秒。
    删除(gcp);
  6. 打开一个包含两个worker的新的并行池,并再次运行该函数。

    parpool (2);a = MyCode(1000);

    注意经过的时间;您应该看到,与单一工作人员的情况相比,这个数字现在已经减少了。

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

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

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

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

    parpool (16);a = MyCode(1000);

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

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

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

    parpool (64);a = MyCode(1000);

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

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

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

提示

您可以进一步剖析parfor通过使用,测量并行池中有多少数据被传输到和从并行池中传输出去ticBytes而且tocBytes.有关更多信息和示例,请参见剖析parfor-loops

相关的话题