1

这个问题可能听起来有点奇怪……

想象一下,我有一个 MPI 应用程序,但我没有安装 MPI 的系统。所以我想在不修改源代码的情况下编译不支持 MPI(1 进程、1 线程)的应用程序。那可能吗?

我在某个地方找到了一个“mimic_mpi.h”包装器,它应该完全符合我的要求。但是那里缺少一些 MPI 函数(例如,MPI_Cart_create、MPI_Cart_get 等),所以我没有成功。

mimic_mpi.h http://openmx.sourcearchive.com/documentation/3.2.4.dfsg-3/mimic__mpi_8h-source.html

mimic_mpi.c http://openmx.sourcearchive.com/documentation/3.2.4.dfsg-3/mimic__mpi_8c-source.html

你知道我可以用什么其他方法来编译不支持 MPI 的 MPI 应用程序吗?

提前致谢!

4

1 回答 1

2

您可以使用单个进程轻松运行“真正的”MPI 应用程序。实际上,这甚至可以在不使用 mpiexec/mpirun 的情况下工作,尽管我不确定这是否得到官方支持。也就是说,一个完整且确认的 1 进程 MPI“串行”实现可能会变得相当复杂,并且它自己的库 - 所以在这种情况下,为什么不直接使用真正的完整 MPI 实现呢?

我希望你看到我试图画的圆圈:如果你想要完整的 MPI 行为,只需使用 MPI 实现——不管它是否仅限于单个进程。

在实践中,希望能够在有或没有 MPI 的情况下运行的应用程序似乎经常使用自己的 MPI 抽象,使用域特定的通信包装器、#ifdef HAVE_MPI 或更复杂的宏。

于 2012-02-16T14:52:55.567 回答