代码之家  ›  专栏  ›  技术社区  ›  Jalal El-Shaer

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

  •  6
  • Jalal El-Shaer  · 技术社区  · 15 年前

    .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框架版本4中System.Threading和System.Threading.Tasks命名空间中的一组公共类型和API。TPL的目的是通过简化向应用程序添加并行性和并发性的过程来提高开发人员的工作效率。TPL动态地扩展并发度,以最有效地使用所有可用的处理器。此外,TPL还处理工作的分区、线程池上线程的调度、取消支持、状态管理和其他低级细节。通过使用TPL,您可以最大限度地提高代码的性能,同时专注于您的程序设计要完成的工作。”

    我的目标是构建一个可以在Windows HPC 2008上运行的应用程序 …走哪条路?

    2 回复  |  直到 13 年前
        1
  •  2
  •   Adam Houldsworth    15 年前

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

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

    据我有限的理解,TPL是在.NET中构建/替换/大大改进当前线程模型的基础上建立的,也就是说,您可以控制实际的线程,并通过传输参数或使用共享状态进行通信。

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

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

    如果您选择在hpc上使用tpl(不确定是否支持它),那么您的代码就必须知道节点以及如何将处理从一个节点传输到另一个节点,因此您不会获得任何好处。

        2
  •  6
  •   Peladao    15 年前

    据我所知,tpl不支持分布式计算,而mpi.net支持分布式计算。

    推荐文章