.net 4.0任务并行库与MPI.NET

Jal*_*aer 6 .net parallel-processing hpc mpi

.net 4.0任务并行库是否替换MPI.NET以进行高性能计算?

在这里找到的MPI.NET http://www.osl.iu.edu/research/mpi.net/svn/是一个高性能,易于使用的Microsoft .NET环境的消息传递接口(MPI)实现.MPI是编写在分布式内存系统(如计算集群)上运行的并行程序的事实标准.

.NET 4 TPL说:"任务并行库(TPL)是.NET Framework版本4中System.Threading和System.Threading.Tasks名称空间中的一组公共类型和API .TPL的目的是使通过简化向应用程序添加并行性和并发性的过程,开发人员的工作效率更高.TPL动态扩展并发度,最有效地使用所有可用的处理器.此外,TPL处理工作的分区,线程的调度关于ThreadPool,取消支持,状态管理和其他低级细节.通过使用TPL,您可以最大限度地提高代码的性能,同时专注于您的程序旨在完成的工作."

我的目标是构建一个可以在Windows HPC 2008上运行的应用程序 ......哪种方式可以运行

Pel*_*dao 7

根据我的理解,TPL不支持分布式计算,而MPI.NET则支持.


Ada*_*rth 2

消息传递是解决并行编程思想的另一种方式。Axum 和 Erlang 都使用消息传递。它们实际上并不能直接比较,因为它们都针对两个特定的实现。

我看到消息传递的好处是任何网络/进程边界都可以变得透明,并且消息传递本身不依赖于底层线程(所有消息和参与者都可以在一个线程上)。

从我有限的理解来看,TPL 是为了构建/替换/大大改进 .NET 中当前的线程模型,即您拥有可以控制的实际线程,并且可以通过传输参数或使用共享状态进行通信。

如果它是从头开始的,并且设计适合被分成非常小的代码段,那么我会建议 MPI.NET。如果工作类型是 CPU 密集型(如数学工作),我会建议 TPL 路线。

编辑:长时间编辑,这个答案是旧的!MPI.NET 直接适合 HPC,因为它使 HPC 节点的通信边界透明且可配置。MPI.NET 将消息发送到端点 - 这些点在配置文件中定义为 IP/端口地址。该代码不知道端点跨越网络边界。

如果您选择 HPC 上的 TPL(不确定是否受支持),我认为您的代码将必须了解节点以及如何将处理从一个节点传输到另一个节点,因此您不会获得任何好处。