微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用COMM_WORLD或COMM_SELF实例化TS,DMDA,Vec等是什么意思

如何解决使用COMM_WORLD或COMM_SELF实例化TS,DMDA,Vec等是什么意思

我正在查看PETSc和petsc4py的几个示例,并查看PETSc的PDF用户手册。手册指出:

对于不熟悉MPI的人,交流是一种指示将在计算或交流中共同参与的过程集合的方式。通信器的变量类型为MPI_Comm。在大多数情况下,用户可以使用通信器PETSC_COMM_WORLD来指示给定运行中的所有过程,而可以使用PETSC_COMM_SELF来指示单个过程。

我相信我理解这一说法,但是我不确定实际使用这些沟通工具的真正后果。我不确定当您进行TSCreate(PETSC_COMM_WORLD,...)TSCreate(PETSC_COMM_SELF,...)还是分布式数组时的实际情况。如果您使用DMDA创建了PETSC_COMM_SELF,这是否意味着DM对象实际上不会分布在多个进程中?还是如果您使用TS创建一个PETSC_COMM_SELF并使用DM创建一个PETSC_COMM_WORLD,这是否意味着求解器实际上无法访问虚幻节点?会影响DMCreateLocalVectorDMCreateGlobalVector的结果吗?

解决方法

求解器的通信器决定哪些进程参与求解器操作。例如,带有 PETSC_COMM_SELF 的 TS 将在每​​个进程上独立运行,而带有 PETSC_COMM_WORLD 的 TS 将在所有进程中发展一个单一系统。如果您将 DM 与求解器一起使用,则通信器必须一致。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。