“如何在”中编译MPI应用程序;连载;模式(不使用MPI编译器)?
这个问题听起来可能有点奇怪 假设我有一个MPI应用程序,但我没有安装MPI的系统。 因此,我希望在不修改源代码的情况下编译不支持MPI(单进程、单线程)的应用程序。 可能吗 我在某个地方找到了一个“模仿的”包装器,它应该完全符合我的要求。但是其中缺少一些MPI函数(例如,MPI_Cart_create、MPI_Cart_get等),所以我没有成功 模拟mpi.h 模拟mpi.c 你知道我还可以用什么方法编译不支持MPI的MPI应用程序吗 提前谢谢 您可以使用单个进程轻松运行“真正”的MPI应用程序。实际上,这甚至可以在不使用mpiexec/mpirun的情况下工作,尽管我不确定这是否得到官方支持。也就是说,一个完整的、可确认的单进程MPI“串行”实现可能会变得相当复杂,并且会有自己的库——因此,在这种情况下,为什么不使用真正的完整MPI实现呢 我希望你能看到我试图画的圆圈: 如果您想要完整的MPI行为,只需使用MPI实现——不管它是否仅限于单个进程“如何在”中编译MPI应用程序;连载;模式(不使用MPI编译器)?,mpi,openmpi,Mpi,Openmpi,这个问题听起来可能有点奇怪 假设我有一个MPI应用程序,但我没有安装MPI的系统。 因此,我希望在不修改源代码的情况下编译不支持MPI(单进程、单线程)的应用程序。 可能吗 我在某个地方找到了一个“模仿的”包装器,它应该完全符合我的要求。但是其中缺少一些MPI函数(例如,MPI_Cart_create、MPI_Cart_get等),所以我没有成功 模拟mpi.h 模拟mpi.c 你知道我还可以用什么方法编译不支持MPI的MPI应用程序吗 提前谢谢 您可以使用单个进程轻松运行“真正”的MPI应用程
实际上,希望能够使用MPI或不使用MPI运行的应用程序似乎经常使用自己的MPI抽象,使用特定于域的通信包装器,#ifdef有#MPI或更复杂的宏。谢谢您的快速回答!我想跟踪一组给定应用程序(包括一些MPI应用程序)的不同编译器发出的指令。这就是为什么我并不真正需要MPI支持,因为“串行”运行将为我提供所需的数据。对我来说,这应该是一个简单的问题(只是一个“void”mpi.h抽象层),但你是对的,因为提供串行版本的mpi应用程序通常使用#ifdef宏。为什么不为缺少的函数添加虚拟绑定并将结果开源?