clojure pmap / preduce vs fork-join - PullRequest
       6

clojure pmap / preduce vs fork-join

6 голосов
/ 17 сентября 2010

Похоже, что clojure будет иметь реализацию fork-join , которая выглядит как функциональная оболочка над фреймворком java fork join.

Мне интересно, какая разница между ними и pmap / preduce?

Ответы [ 5 ]

3 голосов
/ 18 сентября 2010

Fork-join является более общим, чем основанный на последовательности pmap / preduce, и должен обеспечивать более детальный контроль над параллелизмом. Точные API для этого все еще находятся в воздухе.

2 голосов
/ 25 октября 2010

Эти слайды содержат несколько диаграмм, показывающих сравнения между двумя подходами: http://data -sorcery.org / 2010/10/23 / clojureconj /

2 голосов
/ 18 сентября 2010

При взгляде на этот код их функциональность будет в основном одинаковой - единственное отличие состоит в том, что pmap использует Futures, работающие в пуле потоков агента, в качестве базового примитива, тогда как pvmap использует fork-join.

Я не в состоянии сказать наверняка, но я ожидаю, что то, что произойдет лучше в общем случае, станет стандартной реализацией для pmap, если только не будет достаточно существенных компромиссов, чтобы оба стоили того ,

Похоже, что (по крайней мере, на данный момент) инфраструктура fork-join поддерживает только векторы, поэтому она не поленизая, как pmap.

1 голос
/ 18 сентября 2010

Ни pmap, ни pvmap не избавят нас от необходимости использовать правильный размер куска .Для моих проектов это обычно означает разбиение данных на куски и использование map для каждого чанка, затем использование pmap для параллельного отображения чанковзатем уменьшите и сгладьте.

1 голос
/ 18 сентября 2010

Насколько я понимаю, одно отличие состоит в том, что pmap будет работать только с той степенью "краткости", которая ему дана.Функция отображается на каждый член последовательности, заданной для pmap.Если гранулярность слишком мала, потенциальные выгоды параллелизма поглощаются накладными расходами на создание и управление слишком большим количеством Future с.

Fork-join позволяет выполнять кражу работы, так что количество запускаемых потоков в каждом потоке может быть адаптивным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...