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

发布于 2025-01-05 22:49:09 字数 717 浏览 0 评论 0原文

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

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

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

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

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

您知道我可以使用任何其他方法来编译没有 MPI 支持的 MPI 应用程序吗?

提前致谢!

This question might sound a bit weird...

Imagine I have an MPI application, but I don't have a system with MPI installed.
So I want to compile the application with no MPI support (1-process, 1-thread) without modifying source code.
Is that possible?

I found somewhere a "mimic_mpi.h" wrapper which is supposed to do exactly what I want. But there were some MPI functions missing in there (e.g., MPI_Cart_create, MPI_Cart_get, etc.), so I didn't succeed.

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

Do you know any other approach I could use to compile MPI apps with no MPI support?

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

绝不服输 2025-01-12 22:49:09

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

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

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

You can run a "real" MPI application easily with a single process. In practice this even works without using mpiexec/mpirun although I'm not sure if that's officially supported. That said a full and confirming 1-process MPI "serial" implementation would probably become rather complex and its own library - so in that case, why not just use a real full MPI implementation?

I hope you see the circle I'm trying to draw:
If you want full MPI behavior, just use an MPI implementation - regardless if it's just limited to a single process.

In practice, applications that want to be able to function with or without MPI often seem to use their own MPI abstractions using domain specific communication wrappers, #ifdef HAVE_MPI or more complex macros.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文