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