Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 4.0任务并行库与MPI.net_.net_Parallel Processing_Mpi_Hpc - Fatal编程技术网

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

.net 4.0任务并行库与MPI.net,.net,parallel-processing,mpi,hpc,.net,Parallel Processing,Mpi,Hpc,对于高性能计算,.net 4.0任务并行库是否取代了MPI.net 这里找到的MPI.NET是针对Microsoft的.NET环境的消息传递接口(MPI)的高性能、易于使用的实现。MPI是编写在分布式内存系统(如计算集群)上运行的并行程序的事实标准 .NET4TPL说:“任务并行库(TPL)是.NET Framework版本4中System.Threading和System.Threading.Tasks命名空间中的一组公共类型和API。TPL的目的是通过简化向应用程序添加并行性和并发性的过程来

对于高性能计算,.net 4.0任务并行库是否取代了MPI.net

这里找到的MPI.NET是针对Microsoft的.NET环境的消息传递接口(MPI)的高性能、易于使用的实现。MPI是编写在分布式内存系统(如计算集群)上运行的并行程序的事实标准

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


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

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

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

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

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

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


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

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

,你建议MPI.NET用于HPC应用程序吗?请看一看plz Hi jalchr,不幸的是,它没有那么简单。如果你正在做大量的数学提升(即它将严重限制单个线程),那么就选择TPL,它是标准模型中线程的一个很好的框架。对于MPI.NET(Axum for me)来说,目前唯一有益的领域是联网,参与者可以在不消耗CPU的情况下监听网络端口。MPI.NET不是很合适。