代码之家  ›  专栏  ›  技术社区  ›  Surya

clojure pmap/preduce与fork join

  •  6
  • Surya  · 技术社区  · 15 年前

    看起来像Clojure will have a fork-join implementation 在Java的FooRoin联接框架上,它看起来像一个功能包装器。

    我想知道这些和PMAP/预测有什么区别?

    5 回复  |  直到 15 年前
        1
  •  3
  •   Stuart Sierra    15 年前

    fork join比sequence-based更通用 pmap / preduce 并且应该允许对并行性进行更细粒度的控制。做这件事的确切的应用程序接口仍然悬而未决。

        2
  •  2
  •   levand    15 年前

    从代码来看,它们的功能基本上是相同的-唯一的区别是 pmap 使用代理线程池上运行的Futures作为基础原语,而 pvmap 使用叉形连接。

    我不能肯定地说,但是我希望在一般情况下表现更好的任何一个都将成为 PMAP 除非有足够的折衷使两者都有价值。

    它看起来(至少现在)fork-join框架只支持向量,所以它不是半懒惰的 PMAP .

        3
  •  2
  •   rplevy    15 年前

    这些幻灯片包含一些图表,显示两种方法之间的比较: http://data-sorcery.org/2010/10/23/clojureconj/

        4
  •  1
  •   Alex Stoddard    15 年前

    据我所知,一个区别是 pmap 只在给定的“块度”下运行。函数映射到给定序列的每个成员上 PMAP . 如果粒度太小,并行性的潜在好处就会被创建和管理太多的开销所吞噬。 Future S.

    fork-join允许窃取工作,以便在每个线程上运行多少可以自适应。

        5
  •  1
  •   Arthur Ulfeldt    15 年前

    无论是PMAP还是PVMAP都不能避免我们不得不使用 正确的块大小 . 对于我的项目,这通常意味着将数据分成块,在每个块上使用map,然后使用pmap并行映射块。然后缩小并变平。