\chapter{Hardware}\label{ch:hardware}

\begin{figure}
    \centering
    \includegraphics[width=\textwidth]{images/Top500-Architecture}
    \caption{Top500 Architektur Statistik}
    \label{fig:top500-architecture}
\end{figure}

Ein \ac{HPC} besteht aus einem Head Node und Compute Nodes, sowie einem Netzwerk, welches diese verbindet.
Ein Node wiederum besteht aus einer \ac{CPU}, einer Schnittstelle zum Highspeed Netzwerk und gegebenenfalls lokalem \ac{RAM} oder Massenspeicher.
Bei manchen \ac{HPC} verfügen einige Nodes auch über eine \ac{GPU}\cite{hardware}.

\section{Arten der Nodes}\label{sec:arten-der-nodes}
\subsection{Head Node}\label{subsec:head-node}
Der Head Node oder auch Master Node stellt die Benutzerumgebung zur Verfügung.
Dieser verteilt auch die Aufgaben an die Nodes und überwacht deren Zustand, also deren Verfügbarkeit.
Der Nutzer kann dabei selbst entscheiden wie viele Nodes welche Aufgabe bearbeiten.
Über den Head Node läuft auch die Verbindung zum Internet.
Der Head Node verfügt über eine schnelle Verbindung zum Netzwerk, um mit der Geschwindigkeit der Nodes mitzuhalten.
Je mehr Compute Nodes das Cluster enthält, desto mehr Rechenleistung braucht auch der Head Node\cite{coep}.

\subsection{Interactive Node}\label{subsec:interactive-node}
Manche Cluster verfügen über Interactive Nodes.
Diese können direkt wie ein gewöhnliches Remote-access Unix System angesteuert werden, ohne über den Head Node angesprochen zu werden.
Ansonsten arbeiten diese gleich wie die Compute Nodes und sind auch an das Netzwerk dieser angeschlossen.

\subsection{Compute Node}\label{subsec:compute-node}
Die Compute Nodes sind für die Ausführung der einzelnen Rechenoperationen zuständig.
Jeder Node arbeitetet die zugeteilte Aufgabe und sendet das Ergebnis der Berechnung wieder zurück an den Head Node\cite{coep}.

\section{Netzwerk}\label{sec:netzwer}
Jeder Compute Node muss mit dem Head Node kommunizieren.
Diese Kommunikation wird über das Netzwerk sichergestellt.
Die Nodes sind dabei über Switches miteinander verbunden.
Die genutzten Technologien sind zum einen Ethernet, das auch auf \glqq normalen\grqq~PCs genutzt wird.
Zum anderen wird oft InfiniBand genutzt.
InfiniBand ist die Spezifikation einer Hardware-Schnittstelle für Hochgeschwindigkeitsübertragung auf kurzen Distanzen mit extrem geringer Latenz.
Meistens wird diese Technologie in Rechenzentren genutzt\cite{network, zima2002high, coep}.

\begin{figure}
    \centering
    \includegraphics[width=\textwidth]{images/Top500-Interconnect-Statistic}
    \caption{Top500 Interconnect Statistik}
    \label{fig:top500_interconnect}
\end{figure}

\section{Arbeitsspeicher}\label{sec:speicher}
Die Realisierung des \ac{RAM} in \ac{HPC} lässt sich grob in drei verschiedene Konzepte einteilen.
Wovon in der Regel die Dritte genannte Möglichkeit am häufigsten bei \ac{HPC} verwendet wird\cite{ram}.

\subsection{Shared Memory}\label{subsec:shared-memory}
Mehrere Prozessoren teilen sich den Speicher einer Globalen Speichereinheit.
Die Verbindung läuft über einen High-Speed Memory Bus.
Dies ermöglicht den Zugriff auf Daten zu teilen und Daten effizient auszutauschen.
Die Anzahl der teilnehmenden Prozessoren an diesem System ist dabei typischer Weise von dem Bussysstem begrenzt, da die zu verarbeitende Datenmenge von der Bandbreite des Memory Buses, der die Prozessoren verbindet, begrenzt wird.

Bei Shared Memory gibt es wiederum drei Unterkategorien:
Bei \ac{UMA}  gibt es einen externen lokalen Speicher.
Alle Nodes haben die gleiche Zugriffszeit.
Bei \ac{NUMA} verfügen die Nodes über einen eigenen lokalen Speicher.
Der Adressraum ist jedoch für alle Nodes freigegeben.
Ein Node kann auf seinen lokalen Speicher schneller zugreifen als auf den von anderen Nodes.
Bei Zugriff auf den Speicher eines anderen Nodes wird eine Kopie dessen erstellt die so lange erhalten bleibt, bis diese überschrieben oder gelöscht wird\cite{hardware, ram}.

In der cache-only memory architecture verwenden die Nodes ihren eigenen Speicher als Cache.
Wenn auf den Speicher eines anderen Nodes zugegriffen wird, so wird eine lokale Kopie erstellt und die Daten werden an ihrer ursprünglichen Position gelöscht\cite{cache-only}.

\subsection{Distributed Memory}\label{subsec:distributed-memory}
Jeder Node hat Zugriff auf seinen eigenen Speicher.
Das System gleicht dabei einem Verbund von selbstständig arbeitenden Computern, die zusammenarbeiten, um ein Problem zu lösen.
Der Zugriff auf den lokalen Speicher eines Computers ist dabei sehr schnell.
Der Zugriff auf andere Speicher geht über ein high-speed Verbindungsnetzwerk\cite{ram}.

\subsection{Mixed Shared/Distributed Memory}\label{subsec:mixed-shared/distributed-memory}
Die neuste Art der Speicherverwaltung ist eine Mischung der beiden Systeme.
Dabei sind die Nodes in Gruppen aufgeteilt beliebiger Größe, die sich den Speicher teilen.
Die Gruppen der Nodes sind dabei wiederum über eine Highspeed Verbindung mit den anderen Nodes verbunden, um auf den Speicher zugreifen zu können.
Der User sieht auf den Speicher als Gesamtspeicher, wie bei Shared Memory, auch wenn dieser tatsächlich unabhängiger lokaler Speicher ist, mit unterschiedlichen Adressräumen\cite{ram}.

\subsection{Vergleich der Systeme}
Der Vorteil von \ac{SM} und \ac{DSM} ist, dass eine einheitlicher Adressraum (virtuell oder real) existiert, auf welchem alle Daten existieren.
Ein Vorteil von \ac{DM} ist, dass keine race condition auftreten können.
Bei \ac{DSM} und \ac{SM} ist auch die Skalierbarkeit bei einem Algorithmus einfacher, da Zugriff von weiteren Nodes einfach möglich ist\cite{comparison}.

\paragraph{Mass Storage}
Der Massenspeicher in einem Clustersystem kann auf verschiedene Arten realisiert werden.
Zwei dieser Konzepte werden hier aufgeführt\cite{hardware}.

\paragraph{Uniform Disc Access}
Bei Uniform Disc Access oder auch shared disc system wird der Speicher wie beim Shared Memory gemeinsam von den Nodes verwendet.
Die Zugriffszeit ist also immer die Gleiche. Der Datentransfer läuft in der Regel über geteiltes Small Computer System Interface oder eine Fibre Channel Verbindungen zum Massenspeicher\cite{hardware}.

\paragraph{Non-uniform Disc Access}
Hierbei ist der Speicher mit einem Node lokal verbunden.
Dieser kann schneller auf den Speicher zugreifen als andere Nodes.
Der Zugriff von anderen Nodes erfolgt über eine software virtual disk layer welche über das bestehende Netzwerk die Daten übertragen kann.
Dies erhöht die Kosten auf Speicher Zugriff sehr stark im Verhältnis zum Uniform Disc Access\cite{hardware}.