OCaml 的并行化能力状况如何?

2024-03-14

我对在项目中使用 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(使用前将#替换为@)

OCaml 的并行化能力状况如何? 的相关文章

  • R 中 foreach() 内的 try() 问题

    我正在尝试使用try 函数来处理并行 for 循环中发生的错误 results lt foreach i 1 2 errorhandling remove dopar res lt try myfun i TRUE with myfun l
  • 打破parallel.foreach?

    我怎样才能摆脱困境并行 for http msdn microsoft com en us library system threading tasks parallel for aspx loop 我有一个非常复杂的声明 如下所示 Par
  • OCaml:用消息断言

    又是另一个问题 P 我不太确定是否应该将其发布在这里或 OCaml 邮件列表上 但我首先尝试这样做 我喜欢断言语句 然而 我发现如果没有附加消息 错误消息几乎毫无用处 第 XXX 行的断言冲突 很好 但实际上出了什么问题 我认为断言的一个很
  • 值的 Ocaml 表示 - 原子

    我查看了一些 OCaml 值的内部表示 空数组的表示是atom 0 即一个块tag 0 and size 0 空浮点数数组由atom 0 too 是否存在由原子表示的任何 OCaml 值tag gt 0 如果不是 OCaml 字节码集包含以
  • 如何在 CUDA 中执行多个矩阵乘法?

    我有一个方阵数组int M 10 以便M i 定位第一个元素i th 矩阵 我想将所有矩阵相乘M i 通过另一个矩阵N 这样我就收到了方阵数组int P 10 作为输出 我看到有不同的可能性 分配不同元素的计算M i 到不同的线程 例如 我
  • C++ OpenMP:嵌套循环,其中内部迭代器依赖于外部迭代器

    考虑以下代码 include
  • HashSet 中的并行流不并行运行

    我有想要并行处理的元素集合 当我使用List 并行性有效 但是 当我使用Set 它不并行运行 我编写了一个代码示例来显示该问题 public static void main String args ParallelTest test ne
  • shell进程的并行执行

    有没有一个工具可以在 Windows 批处理文件中并行执行多个进程 我发现了一些有趣的 Linux 工具 parallel http mi eng cam ac uk er258 code parallel html and PPSS ht
  • Random 并行生成数字 1 的次数超过 90% [重复]

    这个问题在这里已经有答案了 考虑以下程序 public class Program private static Random rnd new Random private static readonly int ITERATIONS 50
  • 链接“let”语句时使用“and”还是“in”更好?

    我意识到这可能是一个愚蠢的问题 但是 如果我把一堆let不需要需要了解彼此价值观的语句 使用是否更好and or in 例如 以下哪一个更可取 如果有 let a foo and b bar and c baz in etc or let
  • cuda中内核的并行执行

    可以说我有三个全局数组 它们已使用 cudaMemcpy 复制到 GPU 中 但 c 中的这些全局数组尚未使用 cudaHostAlloc 分配 以便分配页面锁定的内存 而不是简单的全局分配 int a 100 b 100 c 100 cu
  • 如何在MPI中传递2D数组并使用C语言创建动态标签值?

    我是 MPI 编程新手 我有一个 8 x 10 数组 需要用它来并行查找每行的总和 在等级 0 进程 0 中 它将使用 2 维数组生成 8 x 10 矩阵 然后我会用tagnumber 作为数组的第一个索引值 行号 这样 我可以使用唯一的缓
  • Java 中的并行编程

    我们如何在Java中进行并行编程 有什么特殊的框架吗 我们怎样才能让这些东西发挥作用 我会告诉你们我需要什么 认为我开发了一个网络爬虫 它从互联网上爬取了大量数据 一个爬行系统无法使事情正常工作 因此我需要更多的系统并行工作 如果是这种情况
  • OCaml 2 和 3 之间的差异

    我有兴趣学习这门语言 但似乎有关该主题的教程和书籍很少 我只找到一本关于这个主题的合适的书 用 Objective Caml 这绝对是完美的 但问题是它是基于 2 04 版本的 所以我唯一关心的是使用这本书 对于 OCaml 3 x 是否会
  • OCaml 中的用户定义打印机

    printf fprintf等 全部接受 a转换 手册上说对于 a 用户定义的打印机 采用两个参数 并将第一个参数应用于 outchan 当前输出通道 和第二个参数 因此 第一个参数的类型必须为 out channel gt b gt un
  • 并发:C++11 内存模型中的原子性和易失性

    全局变量在 2 个不同内核上的 2 个并发运行的线程之间共享 线程对变量进行写入和读取 对于原子变量 一个线程可以读取过时的值吗 每个核心可能在其缓存中具有共享变量的值 并且当一个线程写入缓存中的其副本时 不同核心上的另一个线程可能会从其自
  • 并行模拟写入同一文件

    我的目标是在集群上并行运行 10 000 个左右的 Julia 编码模拟 每个模拟独立于所有其他模拟 每个模拟都有一个要输出的数字 以及有关哪个模拟产生该数字的 3 列信息 因此 强制每个模拟打印在单独的文件上对我来说听起来有点愚蠢 我可以
  • OpenMP:无法并行化嵌套 for 循环

    我想将循环与其中的内循环并行化 我的代码如下所示 pragma omp parallel for private jb ib shared n Nb lb lastBlock jj W WT schedule dynamic private
  • Node.JS async.parallel 不会等到所有任务完成

    我在用异步并行 https github com caolan async并行运行两个函数 这些函数请求 RSS 源 然后 RSS 提要被解析并添加到我的网页中 但由于某种原因async parallel运行回调方法而不等待两个函数完成 文
  • Perl Parallel::Forkmanager 不允许收集变量值

    也许因为子进程不知道我的散列 请参阅下面的代码 散列 输出没有收集任何内容 除了写入 tmp 文件之外 还有其他方法来收集该值吗 foreach Item AllItems pid pm gt start Item and next Tem

随机推荐