你好!
这些库有什么区别?
我阅读了MPI的文档,并且对asio有一些经验。对我来说,它们是不同的网络通信实现,没有更多的区别。
但是它们各自引入了不同的抽象(我不确定这些抽象层次是否相同),这导致了不同的应用程序设计。
我应该在何时使用其中一个库?我必须知道什么才能在每种情况下做出正确的选择?
是的,Asio非常适合几个节点(并且一般来说是非常通用的框架),但为什么MPI对于这样的任务不太好呢?我认为依赖于MPI C库并不具有限制性,MPI也不难理解,那么可扩展性呢?使用Asio我们可以实现广播和其他功能,而另一方面MPI并不禁止编写简单的网络应用程序。如果需要,使用MPI重写Asio特定逻辑是否概念上困难?
那么像套接字一样的通信怎么办:如果必要,我们可以在Asio或任何其他框架中将其封装在模块中,仍然可以使用MPI进行其他通信。
对我来说,套接字和MPI标准是不同的网络服务,现实世界中从简单的客户端-服务器对到一些中等计算的距离只有一步。此外,我认为MPI与Asio相比没有显着的开销。
也许这是一个糟糕的问题,我们需要像ICE(Internet Communications Engine)这样的东西吗?不同的语言支持,而且(如ZeroC所保证的那样)性能很好。
当然,在任何文档中都没有类似“不要使用此库!”的主题。
我根本不能接受这种不统一:一种情况下是套接字,另一种情况下是异步消息,最后是重型中间件平台。在开发生命周期中哪里有清晰度?也许这不是公平的问题,但是为了开始减少这个动物园,我们需要一些指导方针。