".Net 4.0任务并行库与MPI.NET的比较"

6

.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处理工作的分区、线程池上的线程调度、取消支持、状态管理和其他低级细节。通过使用TPL,您可以在专注于程序设计的工作的同时最大化代码的性能。”

我的目标是构建一个可以在Windows HPC 2008上运行的应用程序…该怎么做?
2个回答

7
据我所了解,TPL不支持分布式计算,而MPI.NET支持分布式计算。

2

消息传递是一种不同的并行编程思路。Axum和Erlang都使用了消息传递。它们不能直接进行比较,因为它们都在解决不同的实现。

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

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

如果从头开始设计,并且该设计适合将代码分成非常小的代码段,那么我建议使用MPI.NET。如果工作类型需要大量CPU(例如数学计算),则建议使用TPL路线。

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

如果您选择在HPC上使用TPL(不确定是否受支持),则我认为您的代码将必须意识到节点以及如何在节点之间传输处理,因此您将不会获得任何好处。


那么,您建议在HPC应用程序中使用MPI.NET吗? - Jalal El-Shaer
请查看以下内容: http://resourcekit.windowshpc.net/MORE_INFO/SeqToParallelHPC.html - Jalal El-Shaer
嗨jalchr,不幸的是这并不简单。如果你正在进行大量的数学计算(即它会严重限制单个线程),那么选择TPL,它是标准模型中线程的良好框架。MPI.NET(对我来说是Axum)唯一有益的领域目前是网络,在这里,actor可以在网络端口上侦听而不消耗CPU。MPI.NET将不是非常适合。 - Adam Houldsworth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接