\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}