使用MPI.NET和Mono框架在超级计算机的linux节点上执行分布式计算

时间:2014-03-03 15:30:56

标签: linux mono mpi distributed-computing mpich

我想知道MPI.NET + Mono框架是否可用于在基于Linux的超级计算机节点上运行分布式计算?

我知道群集上可以使用Mono运行时,而标准库的单声道编译程序运行正常。但是MPI.NET呢?

还有一个问题,我对MPI.NET和MPIch2等之间的区别感到困惑.MPI.NET是标准MPIch2的包装器吗?如果MPIch2可用,它可以在Linux上运行吗?或者它是MPIch2的替代品,需要安装MPI.NET客户端吗?

如果您有任何经验,我非常感谢您对此的投入。

谢谢。

2 个答案:

答案 0 :(得分:2)

我终于找到了MPI.NET网站关于此事的一些问题的答案。我引用:

  1. MPI.NET是否可以与其他MPI实施一起使用? 这取决于平台。尽管MPI是标准,但在Windows上MPI.NET会编码一些有关MS-MPI中使用的特定数据类型的信息,这些数据类型将MPI.NET直接绑定到Microsoft的MPI。当然可以使MPI.NET与其他MPI实现一起使用,但我们目前不打算这样做。但是,在Unix上,MPI.NET适应在配置时检测到的本机MPI,并且可以使用(至少)Open MPI,LAM / MPI和MPICH2

  2. MPI.NET是否适用于Mono? 是!从版本0.6.0开始,MPI.NET使用各种不同的本机MPI在Mono下工作,包括Open MPI,LAM / MPI和MPICH2。但请注意,问题是Mono中的运行时代码生成会导致MPI.NET在其优化中稍微保守一些。由于这种更为保守的方法以及Mono JIT没有像微软JIT那样获得那么多调整的事实,我们预计Mono的性能不会那么好。

  3. 如需了解更多信息,请访问:MPI FAQ

    另外,这里有一个关于如何在Ubuntu下编译MPI.NET的链接:Compiling MPI.NET under Ubuntu Oneiric

答案 1 :(得分:1)

在我开始之前,如果您有多个问题,则应单独发布。我不知道问题第一部分的答案,但我可以帮助你解决第二部分。这意味着如果你喜欢我的答案和另外一个,你就不能同时接受这两个答案。无论如何,问题的后半部分。

MPI.NET是一个似乎在Boost MPI之上运行的MPI实现。这意味着它可能不会实现低级别的通信调用本身,而是具有.NET的绑定,允许您从任何这些语言调用Boost MPI。如果您没有安装,则无法使用。

MPICH(该项目不再称为MPICH2)是MPI标准的单独实现,它提供了在大多数系统上运行的堆栈的所有级别所需的所有内容。它提供了所有标准的必需语言绑定(不推荐使用的C,FORTRAN和C ++)。这两个项目是分开的,据我所知,你不能在MPICH之上使用MPI.NET。