【问题标题】:Is there MPI stub library?有 MPI 存根库吗?
【发布时间】:2019-06-08 10:24:20
【问题描述】:

我有带有 MPI 调用的 C 源代码。

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

【问题讨论】:

标签: mpi


【解决方案1】:

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

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

【讨论】:

  • 关键字是“最”...当然可以设计一个依赖于多个等级的正确 MPI 程序 - 希望这是“设计”而不是编程的“意外” .也许 Rank 0 分发工作并收集结果,但本身并没有实际工作 - 在这种情况下,人们希望代码中有一个守卫,以防止以低于最低要求的等级运行。我同意用存根替换 MPI 将是一个巨大的 PITA。
【解决方案2】:

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

【讨论】:

  • 无论如何,存根很少产生与完整实现相同的结果,我认为这不是问题。
  • 我理解这个问题的方式是,OP 希望获得一个连续的、完全运行的程序。
【解决方案3】:

PETSc 包含一个适用于一个进程(即串行)执行的存根 MPI 库: http://www.mcs.anl.gov/petsc/petsc-3.2/include/mpiuni/mpi.h

【讨论】:

  • 您找到 PETSc 存根 MPI 库了吗?这对我来说并不明显,因此不胜感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 2010-11-28
  • 2015-03-14
  • 1970-01-01
相关资源
最近更新 更多