首页 文章

.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处理工作的分区,线程的调度关于ThreadPool,取消支持,状态管理和其他低级细节 . 通过使用TPL,您可以最大限度地提高代码的性能,同时专注于您的程序旨在完成的工作 . “

My Target is to build an application that can run on Windows HPC 2008 ......哪条路?

2 回答

  • 2

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

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

    从我有限的理解来看,TPL是 Build 在/替换/大大改进.NET中当前的线程模型,即你有你控制的实际线程,你通过传递参数或使用共享状态进行通信 .

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

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

    如果您选择HPC上的TPL(不确定它是否受支持),我认为您的代码必须知道节点以及如何将处理从一个传输到另一个,因此您无法获益 .

  • 6

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

相关问题