首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MPI的有限元程序集

使用MPI的有限元程序集
EN

Stack Overflow用户
提问于 2021-05-17 13:16:19
回答 1查看 126关注 0票数 1

本文尝试用MPI有限元法求解泊松方程。我已经有了连通矩阵,还有每个节点的x和y坐标。我向所有处理器广播了连接性和坐标矩阵。假设我们有N个节点,所以全局刚度矩阵是N_N,假设我们只有两个处理器,我们只向每个处理器发送一半的元素。现在我的问题是,是为每个处理器定义一个N/2_N/2的局部矩阵,还是为所有处理器定义一个N_N矩阵,而每个处理器都将在这个过程中完成自己的部分。在这种情况下,我如何收集主进程中的最终矩阵?如果为每个处理器定义N/2_N/2的局部矩阵,一些元素可能在两个处理器中共享相同的元素,这将是装配的一个问题。我正在附上我的代码,如果你能帮助我,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2021-05-25 11:00:45

这个问题涉及一系列问题,一般很难回答。然而,将某种并行化转化为密集矩阵/向量操作的最简单方法可能是跨进程复制向量,但将矩阵逐行拆分。如果矩阵A是N,那么每个过程都有一个N /2xN的矩阵A2和N的向量N来计算y = an,在每个过程上进行y= A2 x的局部乘法(完全并行),然后使用y上的MPI_Allreduce积累跨过程的部分结果。

对于小进程计数,这应该可以正常工作。对于一个可伸缩的算法,您还需要对跨进程的向量进行分解,并利用A的结构(这可能非常稀疏)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67570452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档