% !TeX spellcheck = de_DE \subsection{Heterogene Architekturen} \begin{itemize} \item Heterogenität in Hard- und Software nimmt zu (Energieverbrauch, Spezialhardware, Beschleunigerkarten, \textellipsis) \item MPI + \begriff{OpenMP} für Ausnutzung von Multi-Core-Rechnern: \begin{itemize} \item Compiler-Direktiven und Hilfsbibliothek erlauben Multi-Threading über Shared Memory \item grundlegendes Modell: \begriff{fork/join-Parallelismus} \item im Vergleich zu reinem MPI muss pro Knoten (nicht Ausführungsthread!) eine MPI-Instanz laufen \end{itemize} \item MPI + \begriff{CUDA} für Unterstützung von (nVidia-) Grafikkarten: \begin{itemize} \item Grafikkarten können mittlerweile für allgemeine, massiv-parallele Berechnungen (\begriff{GPGPU}) verwendet werden \item Ausführungsmodell Single-Instruction-Multiple-Thread (\begriff{SIMT}): \begin{itemize} \item Gruppierung zu Multiprozessoren/Threads \item Threads weiter in Blöcke, diese in Gitter gruppiert \item gleiche Instruktion für alle Blöcke, Datenzugriff durch Thread-ID \end{itemize} \item nicht-einheitliche Sprünge problematisch und keine Branch-Prediction \item im Vergleich zur CPU sehr viele Register und sehr schnell angebundener Grafikspeicher \item Programmierung: \begin{itemize} \item explizite Kennzeichnung des Codes für CPU bzw. GPU \item spezieller Compiler notwendig \item verschiedene Qualifier für Funktionen und Speicherbereiche \item \begriff{CUDA-aware MPI} kann auch Speicher auf GPUs direkt verwenden \item Optimierungen wie \begriff{GPU-Direct} können GPUs direkt ohne Host über das Netzwerk kommunizieren lassen bzw. RDMA vornehmen \end{itemize} \end{itemize} \item Mircoservers mit ARM-Prozessoren und \begriff{FPGA}s \item neuartige Architekturen (z.B. Parallela) \end{itemize}