7

再会!

这些库有什么区别?

我阅读了 MPI 的文档并且对 asio 有一点经验。对我来说,这是网络通信的不同实现方式,仅此而已。

但是它们中的每一个都引入了不同的抽象(我不确定这些抽象的相同级别),这导致了不同的应用程序设计。

我什么时候应该使用一个或另一个库?在每种不同的情况下选择正确的决定我必须知道什么?

是的,Asio 适用于多个节点(通常是非常通用的框架),但为什么 MPI 对此类任务不太好?我不认为对 MPI C 库的依赖是限制性的,或者 MPI 很难理解,那么可伸缩性呢?使用 Asio,我们可以实现广播和其他功能,另一方面 MPI 并不禁止编写简单的网络应用程序。如果需要,用 MPI 重写特定于 Asio 的逻辑在概念上是否困难?

类似套接字的通信呢:如果它是强制性的,我们可以在 Asio 或任何其他框架的模块中封装这样一个,并且仍然使用 MPI 进行其他通信。

对我来说,sokets 和 MPI 标准是不同的网络服务,不清楚在现实世界中什么是基本的,从简单的客户端-服务器对到一些中等计算的距离只是一步。另外,我认为 MPI 与 Asio 相比没有显着的开销。

也许这是个坏问题,而我们所需要的只是 ICE(互联网通信引擎)之类的东西?不同的语言支持并再次(确保 ZeroC)出色的性能。

而且,当然,我从未在任何文档主题中看到过“不要为此使用这个库!”。

我根本无法忍受这种不统一:一种情况是套接字,另一种情况是异步消息,最后是重型中间件平台。开发生命周期的清晰度在哪里?也许这不是一个公平的问题,但为了开始减少这个动物园,我们需要一些要点。

4

2 回答 2

5

每个库解决不同的问题,它们并没有真正重叠。它还取决于您要解决的问题以及应用程序的通信模式。使用Boost.MPI实现可扩展性,例如扩展到数千或数万个节点。根据底层网络架构,MPI 还擅长集体操作:聚集、分散、广播等。

如果您只需要少量节点,例如单个服务器和一些客户端,请使用Boost.Asio作为套接字抽象层。如果您还没有以某种方式使用 MPI 发行版,我建议您使用 Boost.Asio。

于 2010-11-07T16:38:34.077 回答
3

我没有使用它们,但 Boost.ASIO 更像是一个用于低级别网络的抽象层,而 Boost.MPI 实现了让您创建分布式计算系统的 MPI 标准。

因此,如果您需要一些类似套接字的通信,我会选择 ASIO。如果你想做分布式计算,甚至可能与用其他语言/为其他平台编写的 MPI 程序互操作,请使用 Boost.MPI。

于 2010-11-06T12:45:16.143 回答