Simulation und Wissenschaftliches Rechnen 2 - Cheatsheet
Lösungsstrategien für lineare und nichtlineare Gleichungssysteme
Definition:
Strategien zur Lösung von linearen und nichtlinearen Gleichungssystemen, wichtig für die Simulation und das wissenschaftliche Rechnen.
Details:
- Lineare Gleichungssysteme:
- Direkte Methoden: z.B. Gauss-Elimination, LU-Dekomposition
- Iterative Methoden: z.B. Jacobi-Verfahren, Gauss-Seidel-Verfahren, Krylov-Unterraum-Verfahren (CG, GMRES)
- Nichtlineare Gleichungssysteme:
- Newton-Verfahren: Benötigt Jacobian-Matrix
- Sekanten-Verfahren: Approximation der Jacobian-Matrix
- Fixpunkt-Iteration: Einfach aber oft langsam konvergent
- Konvergenz und Stabilität: Wichtige Kriterien für die Wahl der Lösungsmethode
- Fehleranalyse: Umfasst absolute und relative Fehler, Residuum
Finite-Elemente-Methode: Diskretisierung von Differentialgleichungen
Definition:
Numerische Methode zur Lösung partieller Differentialgleichungen (PDEs) durch Diskretisierung.
Details:
- Diskretisierung des Lösungsbereichs durch finitere Elemente.
- Verwendung von Ansatzfunktionen wie linearen oder quadratischen Basisfunktionen.
- Umwandlung der PDEs in ein algebraisches Gleichungssystem:
- Formulierung eines schwachen (variationsmäßigen) Problems:
- Versteifungsmatrix und Lastvektor berechnen.
- Lösen des algebraischen Systems mithilfe numerischer Methoden wie dem Gauss-Verfahren oder iterativen Verfahren.
Interpolation und Approximation: Splines und Polynomialfunktionen
Definition:
Interpolation und Approximation mit Splines und Polynomfunktionen.
Details:
- Spline-Interpolation: Mehrteilige Stückweise-Polynome, kontinuierliche Übergänge an Stützstellen
- Polynominterpolation: Ein durch alle Stützstellen gehendes Polynom
- Lagrange-Polynome: Nutzt Lagrange-Basisfunktionen
- Newton-Polynome: Nutzt dividierte Differenzen
- Cubic Splines: Dritte Ordnung, C^2-Kontinuität
- Approximationsverfahren: Minimierung des Fehlerausdrucks z.B. Least-Squares
- Fehlerabschätzung und Stabilität wichtig
Optimierung numerischer Algorithmen für Hochleistungsrechnen
Definition:
Optimierung numerischer Algorithmen für Hochleistungsrechnen (HPC) bezieht sich auf die Anpassung und Verbesserung von Algorithmen, um die Leistung auf Hochleistungsrechnern zu maximieren.
Details:
- Ziel: Minimaler Rechenaufwand und geringere Laufzeit
- Skalierbarkeit: Algorithmus muss effizient auf großen Rechnerclustern funktionieren
- Datenlokalität: Optimierung des Speicherzugriffs, um Latenzen zu reduzieren
- Parallelisierung: Nutzung von Thread- und Prozessparallelität
- Lastverteilung: Gleichmäßige Verteilung der Arbeitslast auf alle Recheneinheiten
- Verwendung spezialisierter Bibliotheken: z.B. BLAS, LAPACK, PETSc
- Wichtige Metriken: Flops (Floating-point operations per second), Speicherdurchsatz
Synchronisation und Kommunikation in parallelen Systemen
Definition:
Mechanismen zur Steuerung und Abstimmung von parallel ablaufenden Prozessen, um Konflikte zu vermeiden und die Kommunikation effektiver zu gestalten.
Details:
- Synchronisation: Vermeidung von Race Conditions und Deadlocks.
- Locks: Mutexe, Spinlocks, Semaphoren.
- Kommunikation: Nachrichtenaustausch über Shared Memory, Message Passing.
- Wichtige Protokolle: MPI (Message Passing Interface), OpenMP.
- Wartezeiten minimieren, Load Balancing optimieren.
Dynamische Systeme und ihre Simulation: Differentialgleichungen
Definition:
Dynamische Systeme: Modellierung zeitabhängiger Prozesse. Differentialgleichungen beschreiben Änderungen eines Systems in kontinuierlichen Zeitintervallen.
Details:
- Dynamische Systeme: Zustandsänderungen über die Zeit
- Wichtige Werkzeuge: Differentialgleichungen
- Modellierung: Zustandsvektor \(\boldsymbol{x}(t)\) und dessen Änderung \(\frac{d\boldsymbol{x}(t)}{dt}\)
- Lösungsmethoden: analytisch (genaue Lösungen), numerisch (approximative Lösungen)
- Beispiele: Populationwachstum, physikalische Systeme
- Numerische Verfahren: Euler-Verfahren, Runge-Kutta-Verfahren
Parallele Programmierparadigmen: MPI und OpenMP
Definition:
Parallele Programmierparadigmen zur Steigerung der Rechenleistung durch gleichzeitige Ausführung mehrerer Prozesse/Threads.
Details:
- MPI (Message Passing Interface): Standard für parallele Programmierung mittels Nachrichtenaustausch.
- Ermöglicht skalierbare Lösungen auf verteilten Speichersystemen.
- Funktioniert gut bei großen Supercomputersystemen.
- Wichtige Funktionen: \texttt{MPI\textunderscore Send}, \texttt{MPI\textunderscore Recv}, \texttt{MPI\textunderscore Bcast}, \texttt{MPI\textunderscore Reduce}.
- OpenMP (Open Multi-Processing): API für parallele Programmierung auf Speicher mit gemeinsamem Zugriff.
- Verwendet Compiler-Direktiven, um parallele Regionen im Code zu definieren.
- Ideal für Multi-Core-Prozessoren.
- Wichtige Direktiven: \texttt{\textpragma omp parallel}, \texttt{\textpragma omp for}, \texttt{\textpragma omp critical}, \texttt{\textpragma omp barrier}.
Validierung und Verifikation von Modellen
Definition:
Validierung und Verifikation sind Methoden zur Bewertung der Genauigkeit und Zuverlässigkeit von Modellen in der Simulation und wissenschaftlichem Rechnen.
Details:
- Verifikation: Überprüfung, ob das Modell nach den spezifizierten Anforderungen und mathematischen Gleichungen korrekt implementiert ist.
- Validierung: Untersuchung, ob das Modell die realen Phänomene korrekt widerspiegelt und geeignete Ergebnisse liefert.
- Verifikationstechniken: Code-Reviews, Debugging, statische und dynamische Analysen.
- Validierungstechniken: Vergleich mit experimentellen Daten, Sensitivitätsanalysen, Szenariotests.