Network programming 对于分布式应用程序,使用哪一种,ASIO与MPI?

Network programming 对于分布式应用程序,使用哪一种,ASIO与MPI?,network-programming,distributed,boost-asio,mpi,distributed-computing,Network Programming,Distributed,Boost Asio,Mpi,Distributed Computing,我对此有点困惑。如果您正在构建一个分布式应用程序,在某些情况下可能会执行并行操作(虽然不一定是数学操作),那么您应该使用ASIO或类似MPI的东西吗?我认为MPI比ASIO的级别更高,但不清楚在堆栈中从何处开始 我对ASIO一无所知,但通过快速的谷歌搜索,我觉得它比MPI低很多。对我来说,MPI的全部意义在于,我可以针对比ASIO提供的更高级别的消息传递抽象进行编程。你从哪里开始取决于你的需要。对于我来说,并行化科学代码以获得高性能,最明显的答案是MPI。如果我写的是更通用的分布式应用程序,而不

我对此有点困惑。如果您正在构建一个分布式应用程序,在某些情况下可能会执行并行操作(虽然不一定是数学操作),那么您应该使用ASIO或类似MPI的东西吗?我认为MPI比ASIO的级别更高,但不清楚在堆栈中从何处开始

我对ASIO一无所知,但通过快速的谷歌搜索,我觉得它比MPI低很多。对我来说,MPI的全部意义在于,我可以针对比ASIO提供的更高级别的消息传递抽象进行编程。你从哪里开始取决于你的需要。对于我来说,并行化科学代码以获得高性能,最明显的答案是MPI。如果我写的是更通用的分布式应用程序,而不是并行应用程序,我不确定我会使用它,或者至少不确定它是否是我的默认选择。事实上,避免学习另一种方法可能是我的默认选择(大多数方法的可移植性和寿命都不如MPI),但我承认,如果从平等的角度出发,这可能不是最好的选择。

据我所知,MPI目前无法处理这种情况,当新的分布式节点想要加入已启动的组时。如果其中一个节点脱机,也可能出现问题


MPI未显示任何与网络相关的机器。因此,如果你需要一些较低层次的东西,你就有麻烦了。另一方面,如果您不满足这样的需求,那么使用MPI将节省大量时间。

因此MPI真正面向科学并行和数学,而不是通用分布式编程。这么说公平吗?是的,这可能是公平的。这是MPI来自的领域,也是使用最多的领域。与分布式计算相比,它更适合于并行计算;例如,它实际上不能很好地处理一组进程中的失败,这是许多分布式计算所需要的。