Ich bin neu bei Scala im Allgemeinen und bei Schauspielern im Besonderen und mein Problem ist so grundlegend, dass die Online-Ressourcen, die ich gefunden habe, es nicht abdecken.Verwenden von Actors zum Ausnutzen von Kernen
Ich habe einen CPU-intensive, leicht parallelisieren Algorithmus, der auf eine n -Core Maschine ausgeführt werden (ich weiß nicht, n). Wie implementiere ich das in Actors, damit alle verfügbaren Cores das Problem lösen?
Der erste Weg, dachte ich an das Problem in m Stücke auf einfache Pause war (wo m einige mittlere Anzahl wie 10.000) und m Schauspieler, eine für jedes Stück, geben Sie jeder Schauspieler seine kleinen Stück und lass sie gehen.
Irgendwie fiel mir das als ineffizient auf. Zillionen von Schauspielern, die einfach nur rumhängen, auf CPU-Liebe warten, sinnlos den Kontext wechseln ...
Dann dachte ich mir, mach eine kleinere Anzahl von Actors und füttere jedes einzelne Stück. Das Problem war, dass es keinen Grund gibt, zu erwarten, dass die Teile die gleiche Größe haben, so dass ein Kern stecken bleiben kann, wobei viele seiner Aufgaben immer noch in der Warteschlange stehen, während andere Kerne inaktiv sind.
Ich drehte mich mit einem Supervisor herum, der wusste, welche Schauspieler beschäftigt waren, und erkannte schließlich, dass dies ein gelöstes Problem sein musste. Es muss ein Standardmuster (vielleicht sogar eine Standardbibliothek) geben, um mit diesem sehr allgemeinen Problem umzugehen. Irgendwelche Vorschläge?