有MPI存根库吗?

有MPI存根库吗?,mpi,Mpi,我有带MPI调用的C源代码 我想知道通过链接一些MPI存根库可以从源代码中获得顺序程序吗?我在哪里可以得到这个库?我认为这是不可能的。与OpenMP相反,当您简单地去掉MPI部分时,使用MPI的程序不一定运行或产生相同的结果 大多数正确编写的MPI程序不应该依赖于它们用来获得正确答案的进程数——例如,如果在一个进程上运行它们(mpirun-np 1./a.out),它们仍然可以工作。因此,您不应该需要存根库,只需使用MPI即可。(如果出于某种原因,你不想让无关的库四处游荡,那么当然可以编写存根并

我有带MPI调用的C源代码


我想知道通过链接一些MPI存根库可以从源代码中获得顺序程序吗?我在哪里可以得到这个库?

我认为这是不可能的。与OpenMP相反,当您简单地去掉MPI部分时,使用MPI的程序不一定运行或产生相同的结果

大多数正确编写的MPI程序不应该依赖于它们用来获得正确答案的进程数——例如,如果在一个进程上运行它们(mpirun-np 1./a.out),它们仍然可以工作。因此,您不应该需要存根库,只需使用MPI即可。(如果出于某种原因,你不想让无关的库四处游荡,那么当然可以编写存根并链接它们——我早就这么做了,当时在我的笔记本电脑上设置MPI是一个巨大的PITA,你可以用它作为起点并添加任何你需要的功能。但现在,摆弄存根库可能是一件好事这将不仅仅是使用现有MPI实现的工作。)


如果您的MPI程序当前不能在一个处理器上正常工作,那么存根库可能不会有帮助;您需要找到它没有处理的特殊情况并修复它们

PETSc包含一个存根MPI库,用于一个进程(即串行)执行:

存根很少能产生与完整实现相同的结果,无论如何,我不认为这是问题所在。我理解这个问题的方式是,OP希望得到一个连续的、完全运行的程序。关键字是“most”…当然可以设计一个正确的MPI程序,它依赖于多个列组-希望这是“按设计”而不是节目的“意外”。也许排名0会分配工作并收集结果,但实际工作本身并没有——在这种情况下,人们希望代码中有一个守卫,以防止运行时排名低于最低要求。我同意用存根替换MPI将是一个巨大的PITA。你找到PETSc存根MPI库了吗?这对我来说并不明显,所以我希望有一个链接。这不是一个答案,因为它还没有完成,但它渴望成为这个问题的一个很好的解决方案。