Wie kann man FRP aus gerichteten azyklischen Diagrammen ableiten?
Ich recherchiere gerade für mein nächstes Projekt. Dies befindet sich in einer Vorplanungsphase, daher dient diese Frage nur dazu, einen Überblick über die vorhandene Technologie zu erhalten.
InstalliereIch habe einen gerichteten azyklischen Graphen (DAG) mit mehreren Ein- und Ausgängen, denke vorerst an ein künstliches neuronales Netzwerk:
Die übliche Art, eine solche Struktur zu verarbeiten, besteht darin, bei jedem (Zeit-) Schritt das gesamte Netzwerk zu verarbeiten. Ich glaube, das ist die Methode, die von FP-Bibliotheken wie @ verwendet wirnetwire
.
Nun bin ich in der glücklichen Lage, dass ich eine Reihe von Ereignissen habe, die jeweils die Änderung in @ darstelleein der Eingangsknoten. Die Idee ist, dass ich wahrscheinlich nicht jeden Knoten im Netzwerk wechseln muss, wenn ich statisch wissen kann, dass eine bestimmte Änderung nur einen Teil davon betrifft.
Beispie
In dem Bild über 5, 7 und 3 sind Eingänge, 11 und 8 sind "versteckt" und 2, 9 und 10 sind Ausgangsknoten. Eine Änderung an Knoten 5 wirkt sich nur auf Knoten 11 und im Endeffekt auf die Knoten 2, 9 und 10 aus. Ich muss die Knoten 7, 3 und 8 nicht verarbeiten.
Das ZieVerarbeiten Sie diese Art von Netzwerk mit möglichst geringer Latenz. Die Größe der Graphen wird wahrscheinlich bis zu 100.000 Knoten erreichen, wobei ein moderater Rechenaufwand pro Knoten durchgeführt wird.
Der PlaIch hoffe, dass jemand für die Bibliothek X wirbt, die gerade die Arbeit erledigt.
Andernfalls ist mein aktueller Plan, eine Berechnung pro Eingangsknoten aus der Diagrammbeschreibung abzuleiten. Wahrscheinlich werde ich das @ verwendPar
monad, damit ich mich nicht selbst um Datenabhängigkeiten kümmern muss und trotzdem von Multicore-Maschinen profitieren kann.
Par
plan machbar? Inwieweit hängt dies vom Umfang der in den einzelnen Knoten erforderlichen Verarbeitung ab?