Software: FEM - Tutorial - Magnetfeld - Kennfelder - Parallelisierung
Bisher haben wir für die Durchführung der Rastersuche den seriellen Prozess gewählt:
- Die nächste Modellberechnung für die Rastersuche wird erst gestartet, wenn die vorherige Modellberechnung beendet ist.
- Damit kann es zu keinen Ressourcenkonflikten zwischen den einzelnen Modellberechnungen kommen. Deshalb sind auch keine besonderen Maßnahmen zur Vermeidung solcher Konflikte erforderlich. Alle Dateien, welche während einer Modellberechnung nötig sind, können im aktuellen Arbeitsverzeichnis des Experiments verwaltet werden.
Bei der Rastersuche können alle Stützstellen völlig unabhängig voneinander berechnet werden. Deshalb kann nach Wahl von paralleler Prozess der gleichzeitige Start aller erforderlichen Modellberechnungen erfolgen. Dazu sind zuvor jedoch Maßnahmen zur Vermeidung von Ressourcenkonflikten zwischen den Modellberechnungen erforderlich.
Im Folgenden wird eine Lösung für die Parallelisierung der FEMM-Aufrufe im OptiY-Workflow entwickelt, welche auch für den seriellen Prozess funktioniert. Es wird dabei auf die Vermeidung von absoluten Pfadangaben geachtet, damit die Modelle und Prozesse portierbar bleiben.
1. Individuelle Script-Ordner pro Modell-Aufruf:
- Für jeden einzelnen Script-Aufruf innerhalb des parallelen Prozesses wird vom OptiY im aktuellen Script-Arbeitsverzeichnis ein individueller Script-Ordner angelegt (Ordner-Name = Script-Name + Nummer).
- In jedem dieser Ordner wird die Input-Datei mit den zum Aufruf gehörenden Modell-Parametern gespeichert.
- Eine Kopie des Scriptes (hier .BAT) wird ebenfalls in jedem Ordner gespeichert und aufgerufen.
- Nach Ausführen dieses Scriptes erwartet OptiY die Output-Datei mit den Berechnungsergebnissen im zugehörigen Ordner.
- Die Ordnerstruktur für eine 4x4-Rastersuche (16 Schritte) wird im nebenstehenden Bild gezeigt.
- Für den Ordner "0" sind beispielhaft die enthaltenen Dateien angedeutet.
- "OptiScript4" enthält die Befehle des BAT-Files.
- Nach erfolgreicher Abarbeitung aller parallel gestarteten Script-Aufrufe werden die generierten Ordner vom OptiY wieder gelöscht.
2. Zuordnung des Lua-Scripts zu den Modell-Aufrufen
- Das Modell in Form des Lua-Scripts existiert in einem Exemplar nur im Script-Arbeitsverzeichnis. Es wird vom OptiY keine Kopie in den generierten Unterordnern erzeugt.
- Die serielle Abarbeitung ist relativ einfach, weil man die Lua-Datei aus dem aktuellen Ordner des BAT-Scriptes ohne Angabe eines Pfad-Namens verwenden kann:
cd /D %~dp0 C:\Programme\femm42\bin\femm.exe -lua-script=Magnet_xx.LUA -windowhide
- Die parallele Abarbeitung muss die Lua-Datei aus dem übergeordneten Ordner des BAT-Scriptes benutzen. Für jedes BAT-Script wird ja ein individueller Unterordner generiert, der damit zum aktuellen Ordner wird:
cd /D %~dp0 C:\Programme\femm42\bin\femm.exe -lua-script=..\Magnet_xx.LUA -windowhide
- Wahlfreie serielle oder parallele Abarbeitung eines Scripts kann man nur durch Testen und Umschalten der Aufruf-Methode gewährleisten:
:: Ordner des Batch-Skripts wird zum aktuellen Ordner: cd /D %~dp0 :: Test, ob Lua-Datei im aktuellen Ordner existiert: if exist Magnet_xx.LUA goto seriell :parallel C:\Programme\femm42\bin\femm.exe -lua-script=..\Magnet_xx.LUA -windowhide goto Ende :seriell C:\Programme\femm42\bin\femm.exe -lua-script=Magnet_xx.LUA -windowhide :Ende
- Die Möglichkeit der wahlfreien seriellen oder parallelen Abarbeitung sollte man anstreben. Dabei wird man zum Testen des Prozesses immer mit der Realisierung des seriellen Modellaufrufes beginnen. Die erforderlichen Anpassungen an den parallelen Prozess erfolgen dann abschließend.
- Hinweis: Der FEMM-Parameter -windowhide unterdrückt die FEMM-Fenster. Dies erhöht die Abarbeitungsgeschwindigkeit der parallelen Prozesse sehr stark!
3. Zuordnung der Input-/Outputdateien zum Lua-Script
- Das Lua-Script benutzt für seine Daten immer den aktuellen Script-Ordner (gewährleistet durch cd-Befehl im BAT-Script).
- Damit kann im Lua-Script die Angabe eines Absolutpfades entfallen. Die entsprechende mydir-Zuweisung wird dafür durch eine Zeichenkette der Länge 0 ersetzt:
mydir="";
Hinweise:
- Die Anzahl der gleichzeitig möglichen FEMM-Aufrufe wird neben der Hardware-Ausstattung des Computers überwiegend durch das verwendete Betriebssystem bestimmt.
- Unter Windows 7/8/10 - 64 Bit funktioniert meist noch eine Rastersuche mit 81 Schritten (9x9). Abhängig von der konkreten System-Konfiguration kann jedoch auch bereits bei 64 Schritten (8x8) Schluss sein!
- Unter Windows XP - 32 Bit konnte man z.B. nur das Prinzip der parallelisierten Rastersuche mit 16 Schritten (4x4) testen. Inwieweit dies für andere 32-Bit-Systeme gilt, wurde nicht getestet.
- Ein Überschreiten der möglichen Anzahl führt zu Fehlermeldungen und Abstürzen der "überzähligen" FEMM-Aufrufe, welche man manuell quittieren muss. Außerdem hat man dann das Problem der Bereinigung des Arbeitsverzeichnisses von überflüssigen temporären Dateien und Ordner.
- Gibt man für die "Anzahl der parallelen Prozesse" keinen Wert > 0 an, so werden immer alle parallelisierbaren Modellrechnungen gleichzeitig gestartet. Bei einer Rastersuche sind das alle angegebenen Optimierungsschritte, welche jeweils durch Start des FEMM-Programms repräsentiert werden. Danach ist der Computer nur noch mit der Verwaltung dieser vielen Prozesse beschäftigt, was den Wirkungsgrad für die eigentlichen Berechnungen stark senkt und den Computer meist in dieser Zeit unbedienbar macht:
- Den größten Berechnungswirkungsgrad erzielt man, wenn man sich an der Anzahl der verfügbaren CPU-Kerne orientiert (bei Hyper-Threading gleich Anzahl logischer CPU-Kerne):
- Auf älteren Dual-Core-Systemen sollte man sich auf zwei parallele Prozesse beschränken.
- Bei N-Core-Systemen sollte man sich auf (N-1) parallele Prozesse beschränken, um den letzten CPU-Kern für die System-Bedienung zu erhalten.
- Geschickt eingesetzt führt die Prozess-Parallelisierung zu eine enormen Steigerung der Berechnungsgeschwindigkeit. Die Grenzen der Parallelisierung unter Windows überwindet man durch Verlagerung der Modellaufrufe in eine Netzwerk-Umgebung.