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

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

我知道Mono的运行时间在集群上是可用的,单纯编译的程序与标准库运行良好。 但是MPI.NET呢?

还有一个问题,我对MPI.NET和MPIch2之间的区别有些困惑。MPI.NET是标准MPIch2的一个包装,如果MPIch2可用,它在Linux上工作吗? 还是MPIch2的替代品,需要安装MPI.NET客户端?

如果您有任何经验基础,我非常感谢您对此的意见。

谢谢。

我终于找到了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(包括Open MPI,LAM / MPI和MPICH2)在Mono下工作。 但是请注意,Mono中的运行时代码生成问题会导致MPI.NET在其优化中略微保守。 由于这种更为保守的方法,以及Mono JIT没有像Microsoft JIT那样得到很多调整,我们预计Mono的性能将不会如此好。

欲了解更多信息,请访问: MPI常见问题

另外,下面是在Ubuntu下编译MPI.NET的链接: 在Ubuntu Oneiric下编译MPI.NET

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

MPI.NET是一种MPI实现,似乎在Boost MPI之上运行。 这意味着它可能不会自己实现低级别的通讯调用,而是绑定.NET,允许您从这些语言中调用Boost MPI。 如果你没有安装,这将无法正常工作。

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