C++ MPI标准3

5
MPI标准3于2011年发布,没有C++绑定! 我的问题是如何在没有MPI的情况下使用C ++进行分布式计算(请注意,我们还需要OpenMP CUDA Openacc)? 有没有替代MPI的C ++(不是MPI 2.2,boost MPI)? MPI是否建立在TCP / IP上,所以我可以用C ++构建自己的方式使用TCP / IP? 是否有针对C ++的MPI 3开源绑定? 或者你必须坚持使用C GTK + CUDA OpenMP OpenGL MPI 3吗? 如果你想要C ++ QT CUDA OpenMP OpenGL + 分布式计算API怎么办? Ubuntu和许多Linux发行版试图用Wayland和MIR替换Xserver,两者都将编写特殊的API和层来创建OpenGL桌面上下文以替换GLX,此外GTK +将具有MIR Wayland整合,因此在Linux上,如果出现了某些变化,一些人和团体会尝试修复它并尝试开发新的解决方案,但是我没有找到MPI 3 C ++绑定的解决方案。

7
你知道,C的API同样可以在C++中很好地使用... - Deduplicator
正如@Deduplicator所说,C API可以完美地使用。事实上,这就是Boost和其它库所使用的。 - Timothy Brown
3
MPI-3 中删除了 C++ API,因为它与 C 绑定相比没有真正的优势,只是一个简单的包装层。建议在 C++ 中编写 MPI 的用户使用 Boost.MPI,它提供了真正的面向对象接口,并支持类的序列化,以便将对象直接作为消息发送。 - Hristo Iliev
@TimothyBrown,Boost只是在C++中使用C语言,将C MPI 3绑定到OOP类中。但是,BOOST MPI实现是否包括MPI标准3还是仅包括2.2、2和1? - Belal Medhat
@HristoIliev,是的,C++ API在MPI-3中被删除了,因为你可以编写和调用C++中的C代码,所以他们将其删除并让你自己使用。此外,Boost.MPI在OOP API中也可以实现这一点,但它是否实现了MPI-3呢? - Belal Medhat
显示剩余10条评论
1个回答

5

官方推荐使用C绑定,原因见评论。这里失去的唯一功能与异常有关,但实际上MPI-2时代没有任何实现是容错的,所以您不会想念它。

Boost::MPI很好,但支持的特性很少(最受欢迎的几个)。

鼓励自己编写C++包装器。Elemental(libelemental.org)有一组很好的包装器,可以使用类型推断进行魔法操作。

我对开发一组新的C++绑定具有个人兴趣,但还没有时间取得进展。StackExchange Computational Science发布了一篇详细讨论,您也可以做出贡献。


你的意思是编写自己的mpi .c代码并从c++代码内部调用它,就像编写Python应用程序并将瓶颈代码编写为c并从Python内部调用一样,这是完美的解决方案,但是编译和链接mpi c c++需要大量的实验和练习。谢谢你的回答。 - Belal Medhat
不,这不像Python调用C那样。 C89是C ++的子集,并且MPI C绑定是C89,因此MPI C绑定是本地的C ++绑定-它们只是不使用任何C ++功能。从C ++使用MPI C绑定不应该需要实验和实践,至少不会比独立于主机语言问题的MPI的使用更多。 - Jeff Hammond

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接