问题 INRIA是否要为OCaml添加并发原语?


“并发”是指像Erlang的actor和并发GC这样的轻量级进程,旨在使这样的进程顺利运行。

如果INRIA摆脱当前OCaml实现的缺点,使OCaml为多核未来做好准备,那将是非常酷的。

附: F#不是我想要的。


4268
2017-08-19 19:54


起源



答案:


没有

如果不重复他的解释,我就不能更简洁。它说不出话来。是的,这是从2002年开始的,但是我没有听到他对这个问题的影响,从文本来看,他似乎很可能会退出这些目标。

关于并发函数编程的当前发展,可能是MPI解决方案(与ocaml绑定)可能是你的问题的解决方案。显然这不是共享内存并行性。还有 并发ML


9
2017-08-19 19:57



我现在还不准备深入研究档案,但我确信最近有一些线索表达了类似的情绪。 INRIA专注于支持OCaml语言,而不是推动LWP等大型新功能或并发运行时。这不是Jon Harrop的HLVM的一部分吗? - Chris Conway
ocaml4multicore可用(有限制),请参阅: algo-prog.info/ocmc/web - nlucaroni
值得注意的是:M.Leroy在2002年将该演讲交给了OCaml列表,SMP机器的情况并不像现在这么普遍。仍然有待观察,将共享内存并行性添加到OCaml运行时是否胜过优化SMP系统的更传统方法:fork / exec和进程间通信。看起来INRIA尚未发表其集体思想发生变化的任何声明。 - james woodyatt
@james woodyatt:“优化SMP系统的传统方法:fork / exec和进程间通信”。这些方法仅适用于分布式系统,特别是由于共享内存总线和分层缓存而无法在多核上运行良好。 - Jon Harrop
@JosephGarvin:如果您的消息传递了大量数据,那么天真的消息传递将在通过引用传递数据时对该数据进行深度复制。从硬件的角度来看,这些副本是不同的数据,因此它们将在共享高速缓存中竞争相同的空间。但是,如果你传递了许多微小的信息,那么就像你说的那样没有区别。我相信本地缓存只会复制共享缓存中的一些内容。 - Jon Harrop


答案:


没有

如果不重复他的解释,我就不能更简洁。它说不出话来。是的,这是从2002年开始的,但是我没有听到他对这个问题的影响,从文本来看,他似乎很可能会退出这些目标。

关于并发函数编程的当前发展,可能是MPI解决方案(与ocaml绑定)可能是你的问题的解决方案。显然这不是共享内存并行性。还有 并发ML


9
2017-08-19 19:57



我现在还不准备深入研究档案,但我确信最近有一些线索表达了类似的情绪。 INRIA专注于支持OCaml语言,而不是推动LWP等大型新功能或并发运行时。这不是Jon Harrop的HLVM的一部分吗? - Chris Conway
ocaml4multicore可用(有限制),请参阅: algo-prog.info/ocmc/web - nlucaroni
值得注意的是:M.Leroy在2002年将该演讲交给了OCaml列表,SMP机器的情况并不像现在这么普遍。仍然有待观察,将共享内存并行性添加到OCaml运行时是否胜过优化SMP系统的更传统方法:fork / exec和进程间通信。看起来INRIA尚未发表其集体思想发生变化的任何声明。 - james woodyatt
@james woodyatt:“优化SMP系统的传统方法:fork / exec和进程间通信”。这些方法仅适用于分布式系统,特别是由于共享内存总线和分层缓存而无法在多核上运行良好。 - Jon Harrop
@JosephGarvin:如果您的消息传递了大量数据,那么天真的消息传递将在通过引用传递数据时对该数据进行深度复制。从硬件的角度来看,这些副本是不同的数据,因此它们将在共享高速缓存中竞争相同的空间。但是,如果你传递了许多微小的信息,那么就像你说的那样没有区别。我相信本地缓存只会复制共享缓存中的一些内容。 - Jon Harrop


J&OCAML,这是......

目标Caml 加上(&) 加入微积分也就是说,OCaml扩展用于并发和分布式编程。


2
2017-08-20 10:09



但即使使用JoCaml,如果要使用多个内核,也需要显式调用fork。 - aneccodeal


看起来 简街 已经资助了一个向OCaml添加Concurrent GC的项目


2
2017-08-22 07:32



最终在OCaml4Multicore中达到了高潮,但它并不是非常有用,因为分配严重损害了可扩展性,并且由于缺乏价值类型,OCaml中的分配实际上是不可避免的。 - Jon Harrop


线程模块 在标准库中提供了并发原语,并且已经存在了很长一段时间。还有 第三 派对 图书馆 它提供更高级别/不同的并发API。

但听起来你是这样的 混淆并发和并行

OCaml当然不会妨碍并行性。您可以同时在数千或数百万台计算机上运行OCaml。甚至有 MPI绑定 使大型并行超级计算机的编程更容易。但是当前的参考OCaml实现不会自动并行化并发程序,我认为这是你真正感兴趣的。

你可能感兴趣 多核OCaml 这提供了对共享内存并行性的更好支持,因为SMP计算机在过去的几十年中变得非常普遍,并且更容易为它们进行优化会非常好。他们似乎正在缓慢但稳步前进,并努力做到正确。


0
2018-02-21 14:56