Multithreading Part 2

Im bisherigen Entwurf zu Multithreading werden die zu berechnenden Kacheln jedes Mal neu erstellt und die Ergebnisse in den Hauptarray zurückgespielt. Dies erzeugt zusätzliche Lese- und Schreibvorgänge und verlangsamt somit die Iteration.

Im nächsten Schritt werden daher die Kacheln permanent gemacht. Alle Rechengrößen werden in den Kacheln gepeichert und die Kacheln parallel berechnet.

Nach Berechnung aller Kacheln erfolgt an den Randbereichen zwischen den Kacheln der Austausch der relevanten Rechengrößen. Dieser Schritt erfolgt nicht parallel, sondern mit nur einem Thread. Somit ist die Erstellung sehr vieler kleiner Kacheln nicht zielführend und führt einerseits aufgrund der Aktualisierung zwischen den Kacheln und andererseits aufgrund des Multithreading overheads zu ineffizienten Berechnungen. Die automatisierte Ermittelung der Kachelgröße trägt dieser Tatsache Rechnung.

Erst bei Anfrage eines Zwischenergebnisses seitens des Managers werden die Ergebnisse aus allen Kacheln zu einem Gesamtraster zusammengefügt und ausgegeben.