【发布时间】:2019-06-08 10:24:20
【问题描述】:
我有带有 MPI 调用的 C 源代码。
我想知道我可以通过链接一些 MPI 存根库从源代码中获取顺序程序吗?我在哪里可以得到这个库?
【问题讨论】:
-
这不是一个答案,因为它还没有完成,但github.com/MPILander/MPILander 渴望成为这个问题的一个很好的解决方案。
标签: mpi
我有带有 MPI 调用的 C 源代码。
我想知道我可以通过链接一些 MPI 存根库从源代码中获取顺序程序吗?我在哪里可以得到这个库?
【问题讨论】:
标签: mpi
大多数正确编写的 MPI 程序不应依赖于它们用来获得正确答案的进程数——例如,如果您在一个进程上运行它们 (mpirun -np 1 ./a.out),它们应该仍然可以工作.所以你不需要存根库——只需使用 MPI。 (如果出于某种原因,您只是不想让无关的库乱跑,那么编写存根并链接它们当然是可能 - 我在笔记本电脑上设置 MPI 时就这样做了一个巨大的 PITA,您可以使用 this 作为起点并添加您需要的任何功能。但是现在,摆弄存根库可能会比仅使用现有的 MPI 实现更多的工作。)
如果您的 MPI 程序当前没有在一个处理器上正常工作,那么存根库可能无济于事;你需要找到它没有处理的特殊情况并修复它们。
【讨论】:
我认为这是不可能的。与 OpenMP 不同,使用 MPI 的程序在您简单地移除 MPI 部分时不一定会运行或产生相同的结果。
【讨论】:
PETSc 包含一个适用于一个进程(即串行)执行的存根 MPI 库: http://www.mcs.anl.gov/petsc/petsc-3.2/include/mpiuni/mpi.h
【讨论】: