Matlab多核运行
(2012-08-24 13:41:42)
标签:
matlab并行运算it |
分类: Matlab |
Matlab对于执行for循环非常的慢,因此对于大批量的仿真运行来说,如果其中有比较复杂的for循环,将会耗费惊人的时间。解决这样的问题,可以将for循环用C语言写成函数,然后在matlab里面调用。但是另外一种解决方案更加简单,那就是使用matlab自带的多核并行功能。简单用法如下:
1.
matlabpool:开启多核并行功能。不加参数的情况下是采用默认设置。当然也可以自行设置参数,具体参数设置可以参考帮助文档
2.
将耗时最多的for循环改为parfor。这是在并行for循环,使用方法和for基本一致,以end结尾。但是注意,parfor不可以嵌套。
3. matlabpool
close 程序结束时,即使关闭并行状态 .
否则在下次使用多核并行时会由于之前的多核没有被释放而被提示失败
经过亲自实验,在32-bit ubuntu系统,Intel® Core™ i7 CPU 860 @ 2.80GHz × 8,
其中4核参与并行运算
1000次QPSK加信道编码,常规运行:80.58
sec; 多核并行:35.84 sec
10000次QPSK加信道编码,常规运行:786.97
sec; 多核并行:330.03 sec
运行速度分别提高了 55.52% 和 58.06%。
虽然没有预期中减少3/4那么多(4核并行),但是运行时间减少量仍然相当可观
更多的matlabpool用法可以参考帮助文档或者访问FileExchange社区