gpt4 book ai didi

erlang - 当它们同时传递消息时,为什么MPI比共享内存更难,而Erlang则更容易?

转载 作者:行者123 更新时间:2023-12-03 08:52:50 24 4
gpt4 key购买 nike

如今,作为在多核上编写并行程序的语言,人们对Erlang产生了浓厚的兴趣。我听说有人争论说,Erlang的消息传递模型比线程等占主导地位的共享内存模型更容易编程。

相反,在高性能计算社区中,主要的并行编程模型是MPI,它也实现了消息传递模型。但是在HPC世界中,通常认为这种消息传递模型很难编程,而且人们认为,诸如OpenMP或UPC之类的共享内存模型更易于编程。

是否有人知道为什么在IT和HPC世界中,消息传递和共享内存的感知有如此大的差异?是否由于Erlang和MPI在实现消息传递方面存在一些根本差异,从而使Erlang样式的消息传递比MPI容易得多?还是还有其他原因?

最佳答案

我同意以前的所有答案,但是我认为一个关键点尚未完全清楚,那就是MPI可能被认为很困难且Erlang容易的原因之一是模型与 Realm 的匹配。

Erlang基于本地内存,异步消息传递和共享状态的概念,这些概念通过使用所有线程都可以访问的某种形式的全局数据库来解决。它是为那些不会移动大量数据的应用程序而设计的,不应将其扩展到需要协调的10万个单独节点。

MPI基于本地内存和消息传递,并且用于解决其中移动数据是域的关键部分的问题。高性能计算非常关乎将数据集用于问题,然后将其分配给众多计算资源。在消息传递系统中,这是相当艰巨的工作,因为必须在考虑平衡的情况下显式分配数据。从本质上讲,MPI可以看作是共享内存无法扩展的诱人条件。它的目标是跨10万个或更多处理器的高性能计算。

Erlang并未试图实现最高的性能,而是试图将自然并行的问题分解为其自然线程。与MPI相比,它在设计时考虑了完全不同的编程任务类型。

因此,Erlang与pthread和其他本地异构线程解决方案相比是最好的选择,而不是MPI,后者实际上是针对非常不同的(在某种程度上是固有的难度)问题集的。

关于erlang - 当它们同时传递消息时,为什么MPI比共享内存更难,而Erlang则更容易?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/185444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com