Was ist das "parallele" Konzept in Rich Hickey's Transducer Strange Loop-Talk?

8

In der Präsentation von Strange Loop auf Transducers erwähnt Rich Hickey ein Konzept in einer Tabelle namens 'parallel'.

Sie können einfach Beispiele für seqs und in und Kanäle verwenden Wandler .

Jetzt können Sie herausfinden, dass Observables über RxJava sprechen .

Meine Frage ist Was ist das "parallele" Konzept in Rich Hickey's Transducer Strange Loop-Talk? Ist dies eine Liste von futures oder pmap oder etwas anderes?

    
hawkeye 21.10.2014, 11:07
quelle

2 Antworten

11

Es gab einige Gedanken über die Schaffung paralleler übertragbarer Prozesse. Dies wird als CLJ-1553 verfolgt. Momentan planen wir nicht, dies in Clojure 1.7 zu behandeln, möchten aber etwas in Clojure 1.8 machen.

Es ist nun möglich, einen Reducer einzurichten, der einen Transducer als untere Reduzierphase verwendet (zusammen mit traditionelleren Kombinierer fns), aber im Idealfall könnten wir das "selbstreduzierbare" Konzept der persistenten Vektoren und Karten nutzen parallel auf eine natürlichere Weise zu transduzieren.

Es ist höchstwahrscheinlich gerade jetzt, dass dies als eine Art Vorbereitungsfunktion erscheinen würde, aber immer noch viel zu entscheiden.

Ein problematischer Bereich ist der Umgang mit KV-Formen - Minderer haben dort einige Entscheidungen getroffen, die mit Wandlern schwierig oder unpraktisch sind, so dass man sie durcharbeiten muss.

    
Alex Miller 21.10.2014, 17:00
quelle
7

Das Konzept besteht einfach darin, die Berechnung parallel durchzuführen. Es gibt mehrere mögliche Implementierungen:

  1. clojure.core.reducers/fold , was ähnlich wie reduce ist, außer dass es nur mit assoziativen Reduktionsfunktionen verwendet werden sollte. Es wird von einem Protokoll unterstützt, das die Baumstruktur verschiedener Clojure-Datenstrukturen nutzt, um den Rechenaufwand zu parallelisieren. Es ist noch nicht wirklich wandlerfreundlich, aber es ist reduziererfreundlich und es scheint, dass eine Wandler-fähige Version irgendwann ankommen wird.

  2. Kürzliche Versionen von core.async mit Transducer-Unterstützung exportieren eine Funktion namens pipeline , die Kanal-Transducer-basierte Transformationen parallelisiert.

Michał Marczyk 21.10.2014 12:38
quelle

Tags und Links