如何根据不同处理器生成的值并行组装和求解矩阵系统?
我正在使用异构多尺度方法(HMM)解决多尺度问题。本质上,我的特定过程使用以下迭代过程: 解决许多局部矩阵系统。 从本地系统的解决方案中计算出感兴趣的值。 从局部“兴趣值”组装一个全局矩阵系统 解决全局矩阵系统 使用全局矩阵系统的解决方案来形成新的局部矩阵系统。 重复直到满足一些收敛标准。 由于有许多地方(独立的)线性方程式和多个系统的系统可装配到本地RAM存储器,我的数字最好是多个“本地”系统加载到每个处理器,并依次解决各系统(见本贴出的问题)。 我的问题是关于组装和求解全局矩阵系统的最佳策略。在我的特殊情况下,全局矩阵系统足够小,可以完全适合任何处理器的RAM内存。此外,局部和全局矩阵在迭代之间不会更改大小。因此,我预见了三种可能的策略之一: 将“目标值”收集到单个处理器上,然后在一个处理器上顺序组装/求解全局矩阵系统。 将感兴趣的值复制到每个处理器上,并在每个处理器上顺序组装/求解相同的全局矩阵系统。 假设每个处理器都具有生成全局矩阵的连续块所必需的“感兴趣的值”,那么我们可以在本地组装全局矩阵的分区,然后并行求解它们。 我可以看到每种方法的一些优点/缺点。在方法1中,在求解阶段不需要任何通信,但是与根处理器之间的通信可能会成为瓶颈(尤其是在规模上)。方法2可能需要比第一种方法更多的处理器间通信来组装全局矩阵,但是在求解阶段或随后的局部矩阵组装阶段不需要通信。方法3不需要处理器间通信来组装局部或全局矩阵,但在求解阶段需要进行通信。 10310310^310310310^310310310^310310310^310310310^310310310^3