linux下多线程/并行执行matlab脚本
matlab 自己是支持多线程的,开启方式可以使用命令:
matlabpool local
但是这种方式通常不太好用,需要特殊设计的matlab代码,并不是所有m文件都可以在这种模式下运行。 在linux下,可以通过另一种方式让程序同时执行多个matlab脚本或同时多次执行一个matlab脚本,下面只针对后一种情况进行说明。这个问题的解决思路如下: 让 多个shell脚本并行执行是很容易的事情,只需要
./a.sh &
./b.sh &
./c.sh &
此时多个脚本都放在后台执行,并且系统会自动将不同脚本交给不同cpu去执行。显然,如果将上面的不同脚本替换为我们要执行的matlab脚本,就可以实现我们目的了。那么如何能通过脚本执行matlab呢? 开心的是,这也很容易实现:
matlab -nodesktop -nosplash - nojvm -r “PARA=$1;run_design_mth;quit”
将以上命令放在一个shell 脚本中,然后多次执行该脚本,就可以实现并行计算。需要几个CPU去执行就重复几次(当然不能超过你电脑CPU的核数)。
./single.sh para &
./single.sh para &
./single.sh para &
当然,脚本后面一定要加上你想要的参数,这样才能让每个脚本实现不同的功能。传给 single.sh 的参数para会通过x=$1这个语句传递给matlab,在matlab所执行的脚本中,PARA的值就是传入的参数。传递多个参数的方法可类推。
linux下多线程/并行执行matlab脚本
http://yoursite.com/posts/39766/