我打算买一台工作站来运行我的matlab数据分析脚本。我计划将系统内存从6 GB增加到24 GB。我正在考虑是否应该购买6核处理器,双4核,还是双6核。(现在我有一个双核处理器)。
现在,我认为MATLAB内置的内存管理系统有很大的延迟。(例如,一个函数的执行时间为30秒,但tic和toc显示最后一行代码的执行时间为18秒)。由于对大块数据的算术处理,我也有一些延迟,但我没有进行任何真正繁重的计算。
在这一点上,我不愿意/不能显式地并行我的代码。我知道有些人对MATLAB内部有丰富的经验,所以我希望有人能指导我如何有效地利用MATLAB的多核。它会在一个独立于计算进程的线程中运行垃圾收集器吗?哪些操作会自动并行化?
发布于 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
发布于 2010-11-24 00:13:49
我对Matlab的并行计算工具箱有一些经验,我猜这就是你所指的,而不是简单的Matlab对内部函数越来越多地使用多线程。
并行Matlab不是灵丹妙药,你不会在8核上神奇地提高8倍的速度,在12核上也不会神奇地提高12倍,你必须付出一些努力。然而,作为一个把大部分时间花在并行Fortran程序上的人,我想说Matlab提供了一条比Fortran+OpenMP或MPI更短的通向良好并行化程序的途径,就像Matlab比Fortran开发起来更快一样。但是作为一个程序员,你所关心的仍然是非常相似的:
Matlab的PCT提供了您需要的工具,但您必须卷起袖子。至于垃圾收集器在哪里运行的具体问题,我不知道;我建议你去找出来。
哪些操作是自动并行化的?我认为这意味着哪些Matlab函数是多线程的?答案是越来越多,但对于最新的情况,您需要测试(查看任务管理器或您的机器上调用的任何东西)或阅读文档。
就我个人而言,在你的情况下,我会选择双6核处理器,如果我能在合理的时间内获得6倍的速度,我会很高兴--如果不像你一样了解你的代码,很难准确地知道这需要多长时间。
https://stackoverflow.com/questions/4257916
复制相似问题