4

这不是关于 MPI 的特定技术编码方面的问题。我是 MPI 的新手,不想以错误的方式使用库而自欺欺人,因此在此处发布问题。

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

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

我是否以正确的方式使用 MPI?还是我歪曲了系统的初衷?

4

3 回答 3

5

在你的算法中只使用 MPI_Send 和 MPI_Recv 很好。随着算法的发展,您会获得更多的经验等。您可能会发现更“高级”的 MPI 功能(例如 Gather、Reduce 等障碍和集体通信)的用途。

于 2011-09-22T22:27:36.013 回答
4

完成工作所需使用的 MPI 构造越少越简单,MPI 就越能与的问题相匹配——您可以说大多数库和语言,作为一个实际问题,可以说是一个抽象问题。

是的,您也可以编写原始 OpenIB 调用来完成您的工作,但是当您需要迁移到以太网集群、大型共享内存机器或下一个大型互连时会发生什么?MPI 是中间件,因此,它的一大卖点是您不必花时间编写网络级代码。

于 2011-09-28T12:59:15.203 回答
0

在复杂性范围的另一端,不使用 MPI 的时间是当您的问题或解决方案技术表现出足够的活力时,MPI 的使用(最具体地说,它的过程模型)是一个障碍。像Charm++(披露:我是 Charm++ 的开发人员)这样的系统可以让您根据更细粒度的单元进行问题分解,并且它的运行时系统管理这些单元到处理器的分配以确保负载平衡,并跟踪它们的位置是要适当地引导沟通。

另一个不常见的问题是动态数据访问模式,其中诸如全局数组或 PGAS 语言之类的东西会更容易编码。

于 2012-05-14T15:05:55.070 回答