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 上运行的应用程序 ……走哪条路?

4

2 回答 2

7

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

于 2010-06-24T07:45:57.160 回答
2

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

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

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

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

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

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

于 2010-06-04T15:57:13.647 回答