2011-09-22 34 views
3

这不是MPI的具体技术编码方面的问题。我对MPI来说是新手,并不想让自己错误地使用这个库,从而在这里提出问题。当不使用MPI

据我了解,MPI是在分布式存储模型构建并行应用程序环境。

我有一个与Infiniband的互联,做一些非常耗时的操作的唯一目的的系统。我已经推出了并行执行算法,所以我实际上只使用MPI通过Infiniband在多个节点之间传输数据(中间步骤的结果),我相信可以简单地使用OpenIB来完成这些工作。

我使用MPI的正确方法?还是我弯曲系统的初衷?

+3

是的,这正是MPI是专为。 –

回答

3

MPI结构越少越简单需要使用让您的工作完成后,更好 MPI匹配您的问题 - 你可以说的最多的图书馆和lanaguages,作为一个实际问题和argualbly抽象的问题。

是的,你可以写原始OpenIB呼吁做你的工作也一样,但是当你需要移动到一个以太网集群,或巨大的共享内存的机器,或任何未来的大互连是会发生什么? MPI是中间件,因此,它的一大卖点就是不必花时间编写网络级代码。

+0

+1不知道有关投票,好点和完美的意义! – jman

+0

它回答我的问题,我想我同意你的看法,使用MPI不给我的能力,抽象掉底层的通信机制,从而更具可扩展性(MPI当然的范畴)。 –

+0

我不同意你应该使用尽可能少的MPI结构。你应该使用RIGHT构造 - 不多也不少。 – Jeff

4

其精细到你的算法只使用MPI_SEND & MPI_RECV。随着算法的发展,您将获得更多的经验,您可能会发现可用于更“先进”的MPI功能,如屏障&集合通信,如聚集,缩小等。

+0

Send-Recv是低级基元。你应该首先使用集体,因为他们更容易推理。现在许多人们使用Send-Recv的常见模式可以在MPI-3的社区集体中表达出来。 – Jeff

0

在复杂光谱的另一端,不使用MPI的时候就是你的问题或解决方案的技术呈现足够的活力是MPI使用(最具体,其过程模型)是一个障碍。像Charm++系统(披露:我是魅力++开发者)可以让你在更细粒度的单位来办的问题分解,其运行时系统管理这些单位到处理器的分配,以确保负载均衡,并保持在哪里跟踪他们是适当的直接沟通。

另一个未少见的问题是动态的数据访问模式,其中像全球排列或PGAS语言将代码容易得多。

+0

你正在谈论MPI的使用,而不是MPI是什么。那个Charm ++可以放在MPI之上,证明MPI对于动态计算来说是很好的 - 只需要实现动态性或者从像Charm ++这样的中间件中获得它。 – Jeff

+0

魅力++ _can_位于MPI之上,但它不是首选的网络后端。这两者只是不同 - 例如,“不管具体的实施细节如何,我们认为MPI的预期信息性质和Charm ++的意外信息行为之间存在根本差异,这种差异使得前者不适合进行通信后者的责任。“,[Gunter等人](http://www.mcs.anl.gov/~balaji/pubs/2013/charm/charm13.charmpi.pdf) –

+0

你可能想看到”Optimizing Charm ++ over MPI“上的Google学术搜索。通过调整MPI为Charm ++使用模式(其中大多数(所有?)消息是意外的),可以提高性能。 – Jeff