最近一个同事说他们的Matlab程序的CPU占用率只有25%,如果以现在的速度的话,他们的程序要运行20个小时才能获得一次结果,问有没有好的办法?我去看了一下,他们的计算机是台双至强的系统,每个CPU都支持双线程,这样系统显示有4个CPU,可能是因为Matlab基于Java的缘故,它会自动将任务在4个CPU上均衡负载,但每个时刻都只有一个CPU工作,所以CPU占用率只有25%。如果同时启动两个Matlab实例,CPU占用率可以达到50%,这就可以满意了,说明2个CPU都利用上了。由于超线程是软双核,50%和100%的差别不大。不过Matlab不支持多线程编程,所以计算机的高配置作用不大。在Matlab的网站上看了一下,
已经有很多支持并行计算的工具包,其中包括MATLAB
® Distributed Computing Toolbox,从介绍看,这个工具箱是基于MPI的,使用起来也相当方便。从以上的经验看,在一台多CPU的机器上运行C语言的MPI程序也是可以提高性能的,估计使用这个工具包对于加速程序的运行是有好处的,下周推荐给同事尝试一下。