2013-08-01 17 views
1

我在Windows 7下使用MATLAB 2012a,并且执行了一些激烈的代码,我的意思是在内存使用和处理时间方面激烈,但是代码在Windows上工作正常。现在,我将操作系统更改为Ubuntu 12.04,并安装了Matlab 2013a。使用的内存数量远远少于在Windows中的使用方式,但matlab执行相同代码的时间非常长 - 非常高。在ubuntu下很慢的Matlab代码执行

我需要一提的是我的代码包含什么,可能需要如此巨大的时间,除了作为一个参数的稀疏与符号替换的声明如下

K=zeros(Np,Np); 

for i=1:ord 
K=K+sparse(t(1:ord,:),repmat(t(i,:),ord,1),double(subs(Kv(:,i),Arg(Kv,1,1,6),Arg(Kv,1,2,6))),Np,Np); 
end 

注意:Kv以象征性的矩阵Arg是一个提供OLD和NEW的函数,它依赖于一些全局变量。

我有一种感觉,我错过了将某些东西添加到Ubuntu可能有助于加速Matlab代码的执行。 任何想法?

+0

请参阅http://superuser.com/questions/154837/how-to-make-the-execution-of-a-matlab-program-faster – user1929959

+0

关于代码的优化...我需要强调我只需要它运行(至少)就像它在Windows下一样。与现在窗户下的时间相比,我现在正在遭受真正的延迟。我只使用20%的内存,交换显示0%...所以我们可以排除由于高清访问时间而浪费时间。 –

+0

我还需要说...我使用的是代码的轻量版本..这意味着..它应该以比平时更快的速度响应。 –

回答

1

我在Windows上有类似的问题,但我相信Ubuntu LTS的解决方案是相同的。 因此,如果增加Matlab的Java堆内存,Matlab将从系统中消耗更多的内存,但速度会更快。

要这样做,请转至: 文件 - >首选项 - >常规 - > Java堆内存并增加到最大值。 默认值是128,那太少了。

+0

我试过...没有帮助... –

+0

我能想到的另一件事是分裂你的说法,并使用并行循环'parfor' –

+1

我不认为这个问题是在代码内.. 。该代码在windows下使用相同的硬件工作正常....问题出现是由于操作系统更改为Ubuntu或Matlab 2012更改为Matlab 2013 ...问题是我缺少什么? –

0

如果堆内存限制没有解决问题,那么尝试增加matlab过程。

首先运行MATLAB,然后做

ps aux|grep MATLAB 

在我的情况下,结果是:

comtom 9769 28.2 19.8 4360632 761808 tty2 S<l+ 14:00 1:50 /usr/local/MATLAB/MATLAB_Production_Server/R2015a/bin/glnxa64/MATLAB -desktop 

先看号(PID)。然后用命令renice改变进程优先级:

renice -3 -p 9769 

就是这样。 GUI非常慢,因为它是针对过时的Xorg库而构建的。所以改变优先级有助于你,你可能会注意到一些侏儒效应的破绽,但是matlab的界面会更好。