Als Abschlussprojekt haben sich mein Partner und ich dazu entschlossen ein erweitertes Ising-Modell zu parallelisieren. Dabei achteten wir auf volle Erweiterbarkeit des Programmcodes.
Als Beispielsimulation verwendeten wir mein Projekt der Independent Studies vom Semester davor. Der Bericht mit allen Daten zu diesem Projekt ist hier zu finden. Um gleich generalisieren zu können bauten wir unser Projekt in 3D auf, wobei wir auch auf 4, 5 oder beliebig viele Dimensionen hätten abzielen können. Der Code ist in dieser Hinsicht sehr flexibel und kann leicht von interessierten auf mehrere Dimensionen angepasst werden. Um Kommunikation zu sparen (Kommunikation ist wesentlich teurer als Rechenleistung) benutzen wir einen sog. Red/Black Checkerboardalgorithmus. Dieser basiert auf den folgenden Bild.
Dadurch müssen wir nicht mehr nach jeder Iteration die Randsites austauschen sondern nur noch nach jeder V/2p-ten Iteration. Dieser Algorithmus ist also v.a. für große V geeignet - bzw. bricht bei p~V/2 zusammen. Der gewonnene Speedup konnte jedoch ganz klar festgestellt werden. Ohne einen speziellen Blacklight Modus machten wir Tests auf Trestles (San Diego Supercomputing Center) und Blacklight (Pittsburgh Super Computing).
In diesen Tests kann man deutlich den Vorteil des Blacklight Systems erkennen. Dieser Vorteil kommt v.a. durch den Shared Memory zwischen 16 CPUs zustande. Bei p gegen unendlich bricht dieser Vorteil vollständig weg und Trestles ist gleichwertig. Daher auch unser spezieller Blacklight Modus, welcher immer nur bis 16 CPUs auf ein Gitter alloziiert. Bei mehr als 16 CPUs werden dementsprechend mehrere Gitter erstellt und somit weniger Wiederholungen pro CPU durchgeführt, da die Anzahl der Wiederholungen durch die Anzahl der Gitter geteilt wird.
Download finalReport.pdf (1277 kB)
Weitere Dateien zu unserem Projekt: