6
votes

CLOJURE PMAP / Preduce VS Fork-Join

ressemble à une clojure aura une implémentation de Fork-Join. qui ressemble à un wrapper fonctionnel sur la fourchette de fourche de Java.

Je me demande quelle est la différence entre ces et PMP / PMPA pourrait être?


3 commentaires

Cela va être un sujet de discussion à la conférence de Clojure-»: clojure-conj.org/speakers #liebke David Liebke travaille maintenant activement pour la prochaine version de Clojure


@Alex que résumé est ce qui a incité cette question :).


Est-ce que toute pensée étant donnée à une stratégie de mise en œuvre de Fork-Rejoindre sur Clojureclr ou en garantissant généralement l'API de la Fork-Rejointure, est amical à des implémentations alternatives?


5 Réponses :


2
votes

de regarder ce code, leur fonctionnalité sera principalement la même - la seule différence est que PMAP utilise des contrats à terme exécutés sur l'agent threadpool car il est sous-jacent primitif, tandis que pvmap Utilise Fork-Join.

Je ne suis pas en mesure de dire à coup sûr, mais je m'attendrais à ce que celui-ci fonctionne mieux dans le cas général deviendrait la mise en œuvre standard pour PMAP , sauf s'il y a des compromis suffisamment importants faire avoir à la fois la peine.

On dirait aussi (pour l'instant au moins) Le Fork-Join Framework ne prend en charge que des vecteurs, ce n'est donc pas semi-paresseux comme PMAP .


0 commentaires

3
votes

Fork-Join est plus général que le PMAP / / précipité , et devrait permettre un contrôle plus fin-grain sur le parallélisme. Les API exactes pour faire cela sont toujours en l'air.


0 commentaires

1
votes

Une différence, aussi loin que je le comprends, est que PMAP ne fonctionnera qu'à tout degré de "chunkiness". La fonction est mappée sur chaque membre de la séquence donnée à PMAP . Si une granularité est trop faible, les avantages potentiels du parallélisme se font avaler dans les frais généraux de créer et de gérer trop de futur s.

Fork-Rejoindre permet de voler le travail de manière à ce que ce soit exécuté sur chaque thread peut être adaptatif.


0 commentaires

1
votes

Ni PMAP ou PVMAP ne nous sauvera de devoir utiliser la taille du morceau correct . Pour mes projets, cela signifie généralement casser les données en morceaux et à l'aide de la carte sur chaque morceau, puis utilisez PMAP pour cartographier les morceaux en parallèle. puis réduire et aplatir.


0 commentaires

2
votes

Ces diapositives contiennent des diagrammes montrant des comparaisons entre les deux approches: http: // données -sorcery.org/2010/10/23/clojueconj/


0 commentaires