【问题标题】:Boost.MPI vs Boost.AsioBoost.MPI 与 Boost.Asio
【发布时间】:2010-11-06 12:14:26
【问题描述】:

美好的一天!

这些库有什么区别?

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

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: boost boost-asio boost-mpi


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2010-12-05
        • 2012-05-31
        • 1970-01-01
        • 2016-03-05
        • 1970-01-01
        • 2012-09-12
        • 2012-08-13
        • 1970-01-01
        • 2011-12-20
        相关资源
        最近更新 更多