我当前的计算机有16个内核和32个逻辑处理器。我正在使用Matlab 2014a。使用的工人数量的上限是512.在我的情况下,使用的最佳数量是多少?
如果需要20分钟,则完成
下的工作 matlabpool open 16
对于同样的工作,32岁以下的工人需要多长时间? 10分钟以上?
答案 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名工作人员。