【问题标题】:number of workers to use in Matlab parallel computing在 Matlab 并行计算中使用的工人数量
【发布时间】:2016-01-03 16:04:04
【问题描述】:

我当前的计算机有 16 个内核和 32 个逻辑处理器。我正在使用 Matlab 2014a。使用的工人人数上限是 512。在我的情况下,使用的最佳人数是多少?

如果需要,比如说 20 分钟,来完成一项工作

    matlabpool open 16

同样的工作在 32 名工人以下需要多长时间? 10 分钟或更长时间?

【问题讨论】:

  • 另请阅读this answer,以更全面地了解parfor 的机制以及开销的作用。
  • 总的来说:Daniel 的回答是一个好的开始,但是没有看到你的代码我们什么也说不出来。通常的策略是尽可能优化你的串行代码,然后并行,看看是否有任何改进,考虑到丹尼尔的观点。

标签: matlab parallel-processing


【解决方案1】:

工人的数量取决于多种因素。

首先,一个worker可以使用多少个内核。让我们假设一个典型的计算密集型任务,您的工人需要大量工作。在这种情况下,您可以假设每个工作人员至少占用一个物理核心。不要使用比可用物理内核更多的工作线程。

此外,当您的代码大量基于multithreading enabled functions 时,每个worker 可以使用多个内核。尤其是在对大图像或矩阵使用上述功能之一时,您可以期望以更少的工作人员获得最佳性能。使用八核系统,我最终根本没有使用并行计算工具箱,因为单个 matlab 线程已经使用了全部 CPU 容量,只会为并行计算工具箱增加不必要的通信开销。我假设这种情况导致recommendation of at most 1 worker per CPU in clusters

除了您的 CPU 容量之外,还请仔细查看内存使用情况。无论 CPU 容量如何,只要您的系统开始交换,性能就会下降。我建议您在观察到内存使用高峰且剩余可用内存少于 1GB 时立即减少工作人员的数量。

当您的工作人员将数据加载或写入 HDD 时,也请查看一下。硬盘使用的最佳指标是队列长度,只要它永远不会达到零,您就可以假设您的硬盘已完全使用。更多的工人不会加速任何事情。

如果非要盲猜的话,我会尝试不使用并行计算工具箱并使用 8 个工人。

【讨论】:

  • 您好丹尼尔,感谢您的友好回复。我只是通过使用 12 和 16 个工人(依次)运行相同的任务来进行简单的比较。似乎 16 名工人使用了 12 名工人所用时间的大约 90%。当 16 名工作人员运行时,我看到我的“CPU 使用率”为 53%,“内存使用率”为 16G(共 64G)。所以只是想知道我的电脑是否有能力做更多的工作。谢谢。
  • CPU 使用率为 53%,似乎有什么东西永久阻塞了您的计算。这可能是因为您的员工花费大量时间进行交流而不是进行计算。在这种情况下,更多的工作人员可能会更快,但优化代码以避免阻塞可能会提高性能。
【解决方案2】:

简短的回答是它是高度可变的,取决于您的硬件、代码实现和问题本身的性质。

然而,一般来说,线性速度(即,处理器数量增加一倍,十分钟减少到五分钟)是最好的情况。实际上,有一些与并行性相关的开销。

您的问题是开放式的。我建议阅读有关高效并行策略的 matlab 文档

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多