我有一个动能蒙特卡罗代码。现在它的动能,因此每个循环将当前状态更新为未来状态,使其成为循环的依赖。
我想使用matlab的并行计算功能,但似乎着名的'parfor'命令仅适用于独立循环。
所以我的问题是,是否可以在matlab中使用并行计算来并行化循环不是独立的代码?
答案 0 :(得分:3)
通常这些类型的计算是在网格上完成的,并且网格分布在工作人员中,每个工作人员都有自己的网格部分来计算。这通常不能独立完成,因为网格上一点的值将取决于相邻点。这些边界值使用某种机制(如消息传递或共享内存)在工作者之间进行通信。
在MATLAB中,您可以使用spmd or communicating jobs with the labSend and labReceive functions,也可以使用distributed arrays。