我对在项目中使用 OCaml 很感兴趣,但是我不确定它的并行化功能在哪里。 OCaml中有消息传递能力吗? OCaml 是否能够有效地使用 1 个以上的 CPU?
我读到的关于这个主题的大部分内容都是在 2002 年至 2006 年写的,我没有看到任何更新的内容。
Thanks!
本期2009年 http://alan.petitepomme.net/cwn/2009.02.24.html#1 of the 卡米尔每周新闻 http://alan.petitepomme.net/cwn/(“CAN”,来自骆驼列表 https://sympa-roc.inria.fr/wws/info/caml-list)表明:
-
the 关于线程和 Ocaml 的官方派对路线 http://caml.inria.fr/pub/ml-archives/caml-list/2002/11/64c14acb90cb14bedb2cacb73338fb15.en.html没有改变。值得注意的引用:
(...) 一般来说,整个标准库都不是线程安全的。也许应该在
线程库的文档,但是按标准库模块记录它并没有多大意义。 ——X·勒罗伊
(有关 Ocaml 线程如何仍然有用,请参阅罪魁祸首本人在另一个关于SO的问题中的评论 https://stackoverflow.com/questions/4106197/howto-program-thread-based-parallel-list-iteration/4106998#4106998)
最常用的并行范例是消息传递,值得注意的是 X. Leroy 的OcamlMPI http://forge.ocamlcore.org/projects/ocamlmpi/,为编程提供绑定SPMD http://en.wikipedia.org/wiki/SPMD风格反对MPI标准 http://www.mcs.anl.gov/research/projects/mpi/. 我上面提到的同样的 CWN 问题 http://alan.petitepomme.net/cwn/2009.02.24.html#2提供示例参考以及许多其他相关项目。
另一种消息传递解决方案是JoCaml http://jocaml.inria.fr/,开创了并发通信的新方式,称为加入微积分 http://moscova.inria.fr/join/index.shtml。请注意,它与 OCaml 编译器二进制兼容。
不过,这并没有阻止 GC 可以并行运行的运行时:请参阅 OCAML4MC 的讨论CWN 的另一期 http://alan.petitepomme.net/cwn/2009.09.29.html#2.
还有:
网络多核 http://blog.camlcity.org/blog/multicore3.html- 通过映射共享内存进行多处理共享 ocaml 值。
CamlP3l http://camlp3l.inria.fr/eng.htm- Caml 并行程序的编译器。
OCaml-Java http://ocamljava.x9c.fr/preview- 发出 Java 字节码的 OCaml 编译器
不过,我还没有关注最近有关 Ocaml 和并行编程的讨论。我要离开这个CW https://meta.stackexchange.com/questions/11740/what-are-community-wiki-posts以便其他人可以更新我提到的内容。如果这个问题能够达到与以下问题相同的完整性水平,那就太好了Haskell 的类似方法 https://stackoverflow.com/questions/3063652/whats-the-status-of-multicore-programming-in-haskell/3063668#3063668.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)