在ubuntu下执行Matlab代码非常慢

时间:2013-08-01 13:17:22

标签: matlab ubuntu sparse-matrix symbolic-math

我在Windows 7下使用MATLAB 2012a并且我正在执行一些密集的代码,我的意思是在内存使用和处理时间方面非常紧张,但是,代码在Windows上运行良好。现在,我将操作系统更改为ubuntu 12.04并安装了Matlab 2013a。使用的内存量远远少于Windows中的内存量,但是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代码执行的东西。 有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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

要做到这一点去: File-> preferences-> General-> Java堆内存并增加到最大值。 默认值为128,即太少。

答案 1 :(得分: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库构建的。所以改变优先级会有所帮助,你可能会注意到一些gnome效应的撕裂,但是matlab的界面会更好。