首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPI还是Sockets?

MPI还是Sockets?
EN

Stack Overflow用户
提问于 2008-09-30 15:40:15
回答 10查看 8K关注 0票数 9

我正在开发一个松散耦合的集群,用于一些数据处理。网络代码和处理代码已经就位,但我们正在评估我们的方法中的不同方法。现在,正如我们应该做的那样,我们在性能问题上受到I/O的限制,我们正在努力减少这个瓶颈。显然,像Infiniband这样速度更快的交换机将会很棒,但我们不能奢侈地扔掉现有的设备并获得新的设备。

我提出的问题是这样的。在集群上完成的所有传统和重要的HPC应用程序通常是通过消息传递实现的,而不是直接通过套接字发送。这样做的性能优势是什么?如果我们从套接字切换,我们应该看到加速吗?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2008-09-30 16:18:58

MPI可能会使用套接字。但是也存在与使用直接分布式共享存储器的SAN (系统区域网络)一起使用的MPI实现。当然,如果你有硬件的话。因此,MPI允许您在未来使用这些资源。在这种情况下,您可以获得巨大的性能改进(根据我在大学时代使用集群的经验,您可以获得几个数量级的收益)。因此,如果您正在编写可以移植到高端集群的代码,那么使用MPI是一个非常好的主意。

即使丢弃性能问题,使用MPI也可以节省大量时间,您可以使用这些时间来提高系统其他部分的性能,或者干脆保存您的理智。

票数 20
EN

Stack Overflow用户

发布于 2008-09-30 16:02:03

我建议使用MPI而不是使用自己的MPI,除非你非常擅长这类事情。在使用我自己的协议编写了一些类似分布式计算的应用程序之后,我总是发现自己在重现(和糟糕地重现) MPI中的特性。

性能方面,我不指望MPI能给你带来任何有形的网络加速--它使用的套接字就像你一样。然而,MPI将为您提供管理多个节点所需的许多功能,即节点之间的同步。

票数 12
EN

Stack Overflow用户

发布于 2009-04-17 20:14:04

在这种情况下,性能并不是唯一的考虑因素,即使是在高性能群集上也是如此。MPI提供了一个标准API,并且是“可移植的”。在不同版本的MPI之间切换应用程序相对来说比较简单。

大多数MPI实现都使用套接字进行基于TCP的通信。与直接使用套接字的本地应用程序相比,任何给定的MPI实现都有可能得到更好的优化,并提供更快的消息传递速度。

此外,如果您有机会在具有InfiniBand的集群上运行代码,MPI层将对这些代码更改进行抽象化。这不是一个微不足道的优势--编写应用程序直接使用OFED (或另一个IB动词)实现是非常困难的。

大多数MPI应用程序都包含小型测试应用程序,可用于独立于应用程序验证网络设置的正确性。在调试应用程序时,这是一个主要优势。MPI标准包括"pMPI“接口,用于分析MPI调用。此接口还允许您轻松地向所有消息传递例程添加校验和或其他数据验证。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/153616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档