\subsection{Einführung} \begin{itemize} \item \begriff{Cluster}: Bündel eng-gekoppelter Rechner (\begriff{Knoten}/\begriff{Node}) \begin{itemize} \item Jeder Node hat \wichtig{lokalen Speicher}, kein gemeinsamer (\begriff{shared}) Speicher \item oft zusätzliches Verwaltungsnetz \end{itemize} \item verteilter Speicher: \textbf{TODO} \item Terminologie \textbf{TODO} \item Auf Knoten laufende Prozesse senden sich \wichtig{explizit} Nachrichten zu \item Ansatz \enquote{Multiple Instruction Multiple Data} (\begriff{MIMD}): verschiedene Programme auf verschiedenen Knoten \item Ansatz \enquote{Single Program Multiple Data} (\begriff{SPMD}): gleiches Programm auf allen Knoten (trotzdem getrennte Adressräume) \item Server-Farmen abgegrenzt von Clustern: \begin{itemize} \item kaum Kommunikation zwischen einzelnen Servern \item Frontend-Knoten verteilt Arbeit (\wichtig{keine Programme!}) an einzelne Server, holt sich die Ergebnisse wieder ab \end{itemize} \item Cluster-Nutzung im \begriff{Batch}-Betrieb erfordert Verwaltung der \begriff{Jobs} und Nodes (etwa mittels \textsc{Torque} oder \textsc{slurm}): \begin{enumerate} \item Erstellung der Job-Beschreibung inklusive benötigter Ressourcen \item Übermittlung der Job-Beschreibung an \begriff{Queue Manager} (auf Frontend-Node) \item Queue Manager wählt passende Warteschlange aus \end{enumerate} \item Torque: \begin{itemize} \item Frontend: \texttt{pbs\_server} für Annahme der Aufträge, \texttt{pbs\_sched} trifft Einplanungsentscheidungen \item auf jedem Knote: \texttt{pbs\_mom} startet übergebene Programme im Auftrag des Frontends \item \textsc{OpenPBS} als Beschreibungssprache (basiert auf \textsc{bash}-Skripten) \item Skript wird nur auf einem Node ausgeführt, Start auf den anderen Knoten muss selbst erledigt werden (etwa über \texttt{ssh}) \end{itemize} \end{itemize}