首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MPI在处理器之间分配任务,但是所有处理器都在完成整个任务,而不是只完成一部分工作。

使用MPI在处理器之间分配任务,但是所有处理器都在完成整个任务,而不是只完成一部分工作。
EN

Stack Overflow用户
提问于 2014-05-23 18:04:50
回答 1查看 194关注 0票数 0

我有一个c++代码,可以并行运行,但使用共享内存方法。我将代码链接到PETSc,PETSc能够并行运行代码,但使用分布式内存方法。当我并行运行代码(c++与PETSc链接)时,似乎所有的处理器都在重复同一个任务。例如,当处理器数为4个时,边界条件和初始条件将被读取4次,或者如果我使用printf命令,则会打印4次。因此,这意味着作业不是在处理器之间分配的,所有处理器都在执行整个任务,而不是执行其中的某些部分。有没有人有同样的经验,你有什么建议来解决这个问题?例如,下面可以看到代码读取网格两次,而不是读取一次:

读取网格文件Mesh_cavity2d.txt: 读取网格文件Mesh_cavity2d.txt:

或者:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-23 19:00:23

这种行为通常表明两种情况之一。要么您忘记将输出(和其他功能)限制为只在一个级别上运行。实现此操作的简单方法是使用MPI_Comm_rank获取秩号,并将所有I/O和其他操作放在

代码语言:javascript
复制
if (rank==0)
{
  // I/O here
}

你也可能会遇到一些问题,让你的队伍彼此沟通。我看到了很多原因,从不正确的库习惯到在MPI下运行一个非MPI程序。

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

https://stackoverflow.com/questions/23835761

复制
相关文章

相似问题

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