如何在“串行”模式下编译MPI应用程序(不使用MPI编译器)?

时间:2012-02-16 09:00:27

标签: mpi openmpi

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

想象一下,我有一个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应用程序?

提前致谢!

1 个答案:

答案 0 :(得分:2)

你可以运行一个真实的"使用单个流程轻松实现MPI应用程序。在实践中,这甚至可以在不使用mpiexec / mpirun的情况下工作,尽管我不确定它是否得到官方支持。这说明了一个完整且确认的1-process MPI" serial"实现可能会变得相当复杂和它自己的库 - 所以在这种情况下,为什么不只是使用真正的完整MPI实现?

我希望你能看到我试图绘制的圆圈: 如果您想要完整的MPI行为,只需使用MPI实现 - 无论它是否仅限于一个进程。

实际上,希望能够使用或不使用MPI运行的应用程序通常使用自己的MPI抽象,使用特定于域的通信包装器,#ifdef HAVE_MPI或更复杂的宏。