Iak*_*kin 7 boost boost-asio boost-mpi
美好的一天!
这些库有什么区别?
我阅读了MPI的文档,并且对asio有一点经验.对我来说,这是网络通信的不同实现,而不是更多.
但是它们中的每一个都引入了不同的抽象(我不确定这些抽象的相同级别),这导致了不同的应用程序设计.
什么时候我应该使用一个或另一个库?在每个单独的情况下选择正确的决定我必须知道什么?
是的,Asio适用于多个节点(一般都是非常通用的框架),但为什么MPI对这些任务不太好?我不认为对MPI C库的依赖性是限制性的,或MPI难以理解,可扩展性如何?使用Asio,我们可以实现广播和其他方面的东西,而另一方面,MPI不禁止编写简单的网络应用程序.如果需要,在概念上难以用MPI重写Asio特定的逻辑吗?
类似socket的通信怎么样:如果它是强制性的,我们可以将这样的一个封装在Asio或任何其他框架的模块中,并仍然使用MPI进行其他通信.
对我来说,sokets和MPI标准是不同的网络服务,并不清楚现实世界中的基础是什么,从简单的客户端 - 服务器对到某些中等计算的距离是一步.此外,我认为与Asio相比,MPI的开销并不大.
也许这是一个糟糕的问题,而我们所需要的只是ICE(互联网通信引擎)?不同的语言支持并再次(确保ZeroC)出色的性能.
当然,我从来没有在任何文档主题中看到过"不要使用这个库!".
我根本不能采取这种不统一态度:在一种情况下,它是套接字,在另一种情况下 - 异步消息,最后是重型中间件平台.开发生命周期的清晰度在哪里?也许这不是公平的问题,但是为了开始减少这个动物园,我们需要一些观点.
每个库解决了不同的问题,它们并没有真正重叠.它还取决于您要解决的问题以及应用程序的通信模式.使用Boost.MPI实现可伸缩性,例如扩展到数千个或数万个节点.根据底层网络架构,MPI还擅长集体运营:收集,分散,广播等.
如果您只需要少量节点(例如单个服务器和一些客户端),请将Boost.Asio用于套接字抽象层.如果你还没有以某种方式使用MPI发行版,我建议使用Boost.Asio.
我没有使用过它们,但是 Boost.ASIO 更多的是一个用于低级别网络的抽象层,而 Boost.MPI 实现了 MPI 标准,可让您创建分布式计算系统。
因此,如果您需要一些类似于套接字的通信,我会选择 ASIO。如果您想要进行分布式计算,甚至可能与用其他语言/针对其他平台编写的 MPI 程序进行互操作,请选择 Boost.MPI。
| 归档时间: |
|
| 查看次数: |
1682 次 |
| 最近记录: |