【问题标题】:How efficient is MATLAB's built-in parallel processing and assignment to cores?MATLAB 的内置并行处理和分配给内核的效率如何?
【发布时间】:2010-11-23 15:48:08
【问题描述】:

我打算购买一个工作站来运行我的 matlab 数据分析脚本。我计划将系统内存从 6 GB 增加到 24 GB。我正在考虑是否应该购买6核处理器、双4核或双6核。 (现在我有一个 2 核处理器)。

现在,我认为 MATLAB 的内置内存管理系统存在重大延迟。 (例如,执行一个函数需要 30 秒,但 tic 和 toc 显示最后一行代码在 18 秒执行)。由于对大块数据的算术处理,我也有一些延迟,但我没有做任何真正繁重的计算。

此时,我不愿意/无法显式并行化我的代码。我知道有些人对 MATLAB 内部有丰富的经验,所以我希望有人能指导我了解 MATLAB 如何有效地利用多个内核。它会在与计算进程不同的线程中运行垃圾收集器吗?哪些操作会自动并行化?

【问题讨论】:

  • 你也应该在 CSSM 中提问。
  • @ustun - CSSM?根据谷歌的南马里兰凯尔特社会:)
  • 处理器内核越多,您的性能可能会略有提高(如两倍)。使用 CUDA,增长将是 x10-x100
  • 如果您需要执行一些繁重的计算,您还应该考虑在云中工作,尤其是现在亚马逊同时提供 CPU/GPU 集群实例。这是您可以阅读的案例研究: aws.typepad.com/aws/2010/09/…

标签: matlab parallel-processing


【解决方案1】:

我对 Matlab 的并行计算工具箱有一些经验,我猜这就是您所指的,而不是普通的 Matlab 越来越多地使用多线程来实现内在函数。

Parallel Matlab 不是灵丹妙药,你不会在 8 核上获得 8 倍或 12 核上 12 倍的神奇速度提升,你必须付出一些努力。然而,作为一个将大部分时间花在并行 Fortran 程序上的人,我会说 Matlab 提供了比 Fortran+OpenMP 或 MPI 更短的并行程序路径,其方式和程度与 Matlab 相同比 Fortran 开发更快。但是您作为程序员的担忧仍然非常相似:

  • (重新)设计您的程序以公开并行性;请记住,最好的串行算法在并行化后并不总是最好的;当您有多个内核时,在单个内核上如此不雅且成本高昂的蛮力方法可能是最佳选择;
  • 负载平衡:确保每个内核获得大致相同的工作量;
  • 最小化并行化开销:这包括消息传递(如果你这样做的话)和线程/进程启动和关闭时间;让 4 个线程在空闲期间连续运行比在程序每次遇到串行部分时启动和停止它们更有效;
  • 尽量减少对共享内存的争用(如果您这样做的话),以防止错误并最大限度地提高速度;
  • 不要太拘泥于并行加速,一旦程序对您的目的足够快,它就足够快了,您的工作目标是数据分析而不是并行程序优化(这是我的工作!)

Matlab 的 PCT 提供了您需要的工具,但您必须卷起袖子。至于垃圾收集器在哪里运行的具体问题,我不知道;我建议你找出来。

哪些操作会自动并行化?我将其解释为 什么 Matlab 函数是多线程的? 答案是越来越多,但对于最新情况,您需要进行测试(观看任务manager 或您机器上的任何名称)或阅读文档。

就个人而言,在您的情况下,我会选择双 6 核处理器,如果我在合理的时间内获得 6 倍的加速,我会很高兴——在不知道您的代码的情况下很难准确地确定这需要多长时间和你一样。

【讨论】:

  • 感谢您的回答。我实际上指的是“普通 Matlab 的”内在多线程。我希望有人知道多线程加速了什么,什么没有。例如,我可以很容易地看到 MATLAB 拒绝并行运行内存管理。由于这对我来说是一个主要瓶颈,我不想花钱购买 MATLAB 不会使用的额外处理器。
【解决方案2】:

按照 Amro 的建议,我查看了这个 MATLAB 支持文档:

Which MATLAB functions benefit from multithreaded computation?

还有

How do I choose computer hardware which best optimizes the performance of MATLAB?

Choosing Hardware for Use with MATLAB®

结果似乎是您的里程可能会有所不同。基本上,看起来特定的函数是多线程的,列表是时间变化的函数。

目前,我只买单六核处理器,因为价格差异很大,而且没有手动优化的多核似乎对速度有限制。根据 Mikhail 的建议和the matlab gpu documentation

,我将确保获得 NVIDIA 显卡,以便我可以利用 matlab 对 GPU 操作的支持

【讨论】:

猜你喜欢
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
  • 2018-10-04
  • 1970-01-01
  • 2014-08-24
  • 1970-01-01
相关资源
最近更新 更多