Matlab并行计算

请关注后续更新


过去两年在做Monte Carlo Simulation相关的项目,苦恼于仿真中的大计算量,时间以及内存需要,急切需要一种更高效的Matlab编程方式来解决仿真中的大量循环问题。


目前主要解决方法是:

1. 将Matlab中的for循环替换成parfor或者使用spmd进行并行运算。这种方法受限于所使用CPU的核数,例如四核处理器,理论上可以加速四倍,实际加速只有三倍左右。尝试使用多台计算机组成计算机集群,然后将任务分配到每台计算机上,发现效果不是很稳定,例如一台机器返回结果不成功,会导致整个程序运行的失败。

例如以下命令可以开启Matlab的4核调用,并修改forparfor即可。

POOL = parpool('local',4);

2. 部分程序使用C++编译成Mex文件在Matlab中调用。


最近研究深度学习,与CPU加速不同的是,其中用到了GPU进行加速 (当然也需要显卡硬件支持),所以在想我们一般的Matlab程序能否借用GPU得到加速,如何修改已有代码,具体效果如何。


3. 基于GPU的并行计算


4. 基于Simulink的并行计算


5. 基准和性能


6. 批处理




主要参考:

1. https://www.mathworks.com/products/parallel-computing/code-examples.html 



你可能感兴趣的:(Matlab并行计算)