【问题标题】:parallel computing with matlab for dependent loops使用matlab进行相关循环的并行计算
【发布时间】:2014-12-23 22:31:39
【问题描述】:

我有一个动力学蒙特卡罗代码。现在它是动态的,因此每个循环都将当前状态更新为未来状态,使其成为依赖 for 循环。

我想使用 matlab 的并行计算功能,但似乎著名的“parfor”命令只适用于独立循环。

所以我的问题是,是否可以在 matlab 中使用并行计算来并行化循环不独立的代码?

【问题讨论】:

  • 这样的并行性应该如何工作?在第 (n-1) 次迭代完成之前,第 n 次迭代的输入是未知的。
  • 我明白你的意思。但是在分子动力学中,你根据粒子的当前状态更新粒子的位置和动量,然后人们在集群上运行它。那么它是如何工作的呢?

标签: matlab parallel-processing


【解决方案1】:

通常这些类型的计算是在网格上完成的,并且网格分布在工作人员之间,每个工作人员都有自己的网格部分来计算。这通常不能独立完成,因为网格上某一点的值将取决于相邻点。这些边界值通过消息传递或共享内存等机制在工作人员之间进行通信。

在 MATLAB 中,您可以使用spmd or communicating jobs with the labSend and labReceive functions,也可以使用distributed arrays

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 2017-10-29
    • 2016-10-11
    • 2015-08-21
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    相关资源
    最近更新 更多