Proceedings of the 3rd Seminar on HPC Systems: Current Trends and Developments

GPGPU General Purpose Computation on Graphics Processing Unit, ist eine Entwicklung von Graphical Processing Units (GPUs) und stellt den aktuellen Trend bei NVidia und AMD GPUs dar. Deshalb wird in dieser Arbeit gezeigt, dass sich GPUs im Laufe der Zeit sehr stark differenziert haben. Während auf technischer Seite die Anzahl der Transistoren stark zugenommen hat, werden auf der SoftwareSeite mit neueren GPU-Generationen immer neuere und umfangreichere Programmierschnittstellen unterstützt. Damit wandelten sich einfache Grafikbeschleuniger zu multifunktionalen GPGPUs. Die neuen Architekturen NVidia Volta und AMD Vega folgen diesem Trend und nutzen beide aktuelle Technologien, wie schnellen Speicher, und bieten dadurch beide erhöhte Anwendungsleistung. Bei der Programmierung für heutige GPUs wird in solche für herkömmliche Grafikanwendungen und allgemeine Anwendungen differenziert. Die Performance-Analyse untergliedert sich in Highund Low-Level-Analyse. Entscheidend für das GPU-Profiling ist, ob Berechnungskosten Speicherkosten verdecken beziehungsweise umgekehrt oder mangelnde Parallelisierung vorliegt. Insgesamt konnte mit dieser Arbeit dargelegt werden, dass die aktuellen GPU-Architekturen eine weitere Fortführung der Spezialisierung von GPUs und einen anhaltenden Trend hin zu GPGPUs darstellen. Allgemeine und wissenschaftliche Anwendungen sind heute also ein wesentliches Merkmal von GPUs geworden. 1 Einleitung Grafikbeschleuniger existieren bereits seit Mitte der 1980er Jahre, wobei der Begriff ”GPU“, im Sinne der hier beschriebenen Graphical Processing Unit (GPU) [1], 1999 von NVidia mit deren Geforce-256-Serie eingeführt wurde. Im strengen Sinne sind damit Prozessoren gemeint, die die Berechnung von Grafiken übernehmen und diese in der Regel an ein optisches Ausgabegerät übergeben. Der Aufgabenbereich hat sich seit der Einführung von GPUs aber deutlich erweitert, denn spätestens seit 2008 mit dem Erscheinen von NVidias ”GeForce 8“-Serie ist die Programmierung solcher GPUs bei NVidia über CUDA (Compute Unified Device Architecture) möglich. Da die Bedeutung von GPUs in den verschiedensten Anwendungsgebieten, wie zum Beispiel im Automobilsektor, zunehmend an Bedeutung gewinnen, untersucht diese Arbeit aktuelle GPU-Generationen, gibt aber auch einen Rückblick, der diese aktuelle Generation mit vorhergehenden vergleicht. Im Fokus stehen dabei die aktuellen Architekturen, deren technische Details beziehungsweise die Programmierung sowie PerformanceAnalyse von und für GPUs. Im Abschnitt 2 wird dementsprechend diskutiert, wie sich GPUs seit ihrer Einführung in den Markt der elektronischen Rechenwerke, entwickelt und spezialisiert haben. Abschnitt 3 gibt einen tieferen Überblick über die Architekturen aktueller GPUs von NVidia und AMD, technische Details und die Leistungsfähigkeit. Anschließend werden in Abschnitt 4 Möglichkeiten der 5 Seminar: HPC Trends and Developments DOI: 10.14459/2018md1430700 Programmierung für GPUs vorgestellt. Da es jedoch auch im GPU-Bereich nötig beziehungsweise sinnvoll ist, eine Performance-Analyse durchzuführen, soll dies im Abschnitt 5 genauer auf verschiedenen Leveln diskutiert werden. Insgesamt liegt der Fokus dieser Arbeit aber auf aktuellen Architekturen für technische und wissenschaftliche Berechnungen. Herkömmliche Grafikprogrammierung, wie zum Beispiel mit C++ und DirectX oder OpenGL, sollen deshalb nur am Rande Erwähnung finden. 2 Entwicklung der GPUs Dieser Abschnitt gibt einen Überblick über die Entwicklung der GPUs seit ihrer Einführung.