首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB内置的并行处理和内核分配的效率如何?

MATLAB内置的并行处理和内核分配的效率如何?
EN

Stack Overflow用户
提问于 2010-11-23 23:48:09
回答 2查看 3.9K关注 0票数 3

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-24 01:30:30

按照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®

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

目前,我将只购买单核六核处理器,因为价格差异很大,而且没有手动优化的多核处理器似乎对速度有限制。我会确保得到一块NVIDIA显卡,这样我就可以利用matlab对图形处理器操作的支持,根据Mikhail的建议和the matlab gpu documentation

票数 1
EN

Stack Overflow用户

发布于 2010-11-24 00:13:49

我对Matlab的并行计算工具箱有一些经验,我猜这就是你所指的,而不是简单的Matlab对内部函数越来越多地使用多线程。

并行Matlab不是灵丹妙药,你不会在8核上神奇地提高8倍的速度,在12核上也不会神奇地提高12倍,你必须付出一些努力。然而,作为一个把大部分时间花在并行Fortran程序上的人,我想说Matlab提供了一条比Fortran+OpenMP或MPI更短的通向良好并行化程序的途径,就像Matlab比Fortran开发起来更快一样。但是作为一个程序员,你所关心的仍然是非常相似的:

  • (re-)designing你的程序以暴露并行性;记住,当你有多个内核时,最好的串行算法并不总是最好的;当你有多个内核时,暴力方法可能是最好的option;
  • load-balancing:,确保每个内核获得大致相同的work;
  • minimising,并行化开销:包括消息传递(如果你是这样做的话)和线程/进程启动和拆除时间;让4个线程在空闲期间持续运行比每次程序遇到串行section;
  • minimising争用共享内存时启动和停止它们更有效(如果这就是你要做的),这既是为了防止错误,也是为了最大限度地提高速度;
  • 不要太纠结于并行加速,一旦程序足够快就足够快了,你的工作目标是数据分析而不是并行程序优化(这是我的工作!)

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

哪些操作是自动并行化的?我认为这意味着哪些Matlab函数是多线程的?答案是越来越多,但对于最新的情况,您需要测试(查看任务管理器或您的机器上调用的任何东西)或阅读文档。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4257916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档