我打算购买一个工作站来运行我的matlab数据分析脚本。我计划将系统内存从6 GB增加到24 GB。我正在考虑是否应该购买6核处理器,双核4核或双核6核。 (现在我有一个2核处理器)。
目前,我认为MATLAB的内置内存管理系统存在严重延迟。 (例如,一个函数需要30秒才能执行,但是tic和toc显示最后一行代码在18秒执行)。由于对大块数据进行算术处理,我也有一些延迟,但我没有做任何非常繁重的计算。
此时,我不愿意/无法显式并行化我的代码。我知道有些人对MATLAB内部有丰富的经验,所以我希望有人可以指导我MATLAB如何有效地利用多个内核。它会在与计算过程分开的线程中运行垃圾收集器吗?哪些操作会自动并行化?
答案 0 :(得分:3)
我有一些Matlab的并行计算工具箱的经验,我想这就是你所指的,而不是简单的Matlab越来越多地使用多个线程来实现内部函数。
并行Matlab不是一个灵丹妙药,你不会在8核上获得8倍的速度或在12核上获得12倍的速度,你将不得不投入一些工作。然而,作为一个将大部分时间花在并行Fortran程序上的人,我会说Matlab提供了一个比Fortran + OpenMP或MPI更好的并行程序路径,其方式和程度与Matlab相同。比Fortran更快开发。但是你作为程序员的担忧仍然非常相似:
Matlab的PCT提供了您需要的工具,但您必须卷起袖子。关于垃圾收集器运行的具体问题,我不知道;我建议你找出来。
哪些操作会自动并行化?我将此解释为 Matlab函数是多线程的?并且答案越来越多,但是对于最新情况,您需要进行测试(观察任务)经理或您机器上的任何内容)或阅读文档。
就个人而言,在你的情况下,我会选择双核6核处理器,如果我在合理的时间内加速6倍,我会很高兴 - 如果不知道你的代码,很难确切知道多长时间和你一样。
答案 1 :(得分:1)
根据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对GPU操作的支持,根据Mikhail的建议和the matlab gpu documentation