在Matlab并行计算中使用的工人数量

时间:2016-01-03 16:04:05

标签: matlab parallel-processing

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

如果需要20分钟,则完成

下的工作
    matlabpool open 16

对于同样的工作,32岁以下的工人需要多长时间? 10分钟以上?

2 个答案:

答案 0 :(得分:0)

简短的回答是,它的变化很大,取决于您的硬件,代码实现以及问题本身的性质。

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

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

答案 1 :(得分:0)

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

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

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

除了CPU容量之外,请仔细查看内存使用情况。无论CPU容量如何,只要系统开始交换,性能就会消失。我建议您在使用小于1GB可用内存的叶子时观察峰值内存使用量后立即减少工作人员数量。

当您的工作人员将数据加载或写入HDD时,也请查看它。 HDD使用的最佳指标是队列长度,一旦它永远不会达到零,您可以假设您的硬盘驱动器处于完全使用状态。更多工人赢得了任何加速。

如果我不得不盲目猜测,我会尝试不使用并行计算工具箱和8名工作人员。