Menü

Zahlen, bitte! 5120 Shader für ein Grafik-Halleluja

Shader! Shader! Shader! Und noch mehr Shader! Die Anzahl der Shader-Rechenkerne auf Grafikchips steigt seit Jahrzehnten rasant an. Mittlerweile sind GPUs auf PCIe-Karten bei 5120 Shadern angelangt. Und kein Ende ist in Sicht.

Von
vorlesen Drucken Kommentare lesen 135 Beiträge
Zahlen Bitte: 5120 Shader für ein Grafik-Halleluja

(Bild: heise online)

Die schnellsten Grafikchips haben um den Faktor 1000 mehr Rechenkerne als die meisten modernen Hauptprozessoren. Diese GPU-Rechenkerne bezeichnet man auch als Shader. Ihre Anzahl bestimmt in Verbindung mit der Taktfrequenz die Rechenleistung eines Grafikchips und diese gibt wiederum Hinweise auf die 3D-Performance.

Der schnellste derzeit erhältliche Grafikchip hat 5120 Shader-Rechenkerne – er trägt den Codenamen GV100 und sitzt auf der Nvidia-Karte Titan-V und der reinen Rechenkarte Tesla V100. Zusammen führen die Kerne der Titan V rund 15 Billionen Gleitkommaoperationen mit 32-Bit-Werten pro Sekunde (FP32) durch – eine schier unvorstellbare Rechenkraft.

Der Begriff Shader selbst ist doppeldeutig, bezeichnet er doch auch Programme, die etwa eine Spielengine "in den Grafikchip" lädt. Programme zur Berechnung der Farben und der Beleuchtung heißen Pixel Shader – sie bestimmen, wie realistisch Oberflächen und Beleuchtungseffekte wirken und beanspruchen einen großen Teil der GPU-Rechenzeit. Programme für die Verarbeitung von Geometriedaten werden als Vertex Shader bezeichnet.

Ausgewählte 3D-Grafikkarten im Rückblick (42 Bilder)

1996: Diamond Monster 3D (3dfx Voodoo Graphics) mit 4 MByte Videospeicher


Den 3D-Beschleuniger mussten Spieler über ein Loop-Kabel mit einer 2D-Grafikkarte verbinden. Mit aktiviertem Z-Buffer erreichte die Voodoo 1 eine Auflösung von 640×480 Pixeln, ohne Z-Buffer waren 800×600 Pixel drin. Die Voodoo-Serie ebnete den Weg für den Durchbruch leistungsfähige 3D-Beschleunigung im Mainstream.
(Bild: Konstantin Lanzet, Wikipedia, CC )

Ältere Grafikchips (bis DirectX 9) enthielten noch separate, jeweils spezialisierte Einheiten zur Berechnung von Pixel- und Vertex-Shadern (Vertex-Shader-Einheiten ab GeForce 3/ Radeon 7000), die sich ab DirectX 8 auch eingeschränkt programmieren ließen. Das Problem: Wenn mal besonders viel Pixel-Shader-Berechnungen anfielen, langweilten sich häufig die Vertex-Shader-Einheiten und umgekehrt – es war für Spieleprogrammierer und GPU-Treiberentwickler schwierig, solche GPUs ordentlich auszulasten.

Zahlen, bitte!

In dieser Rubrik stellen wir immer dienstags verblüffende, beeindruckende, informative und witzige Zahlen aus den Bereichen IT, Wissenschaft, Wirtschaft und der Mathematik vor.

Deswegen hat man im Zuge von DirectX 10 einen großen, einheitlichen Pool von vollständig programmierbaren Shader-Einheiten geschaffen, die allesamt je nach Bedarf sowohl Pixel- als auch Vertex-Shader-Berechnungen ausführen: Unified Shader. Je nach Bedarf ließ sich somit auch die Last verschieben – bei besonders Pixel-Shader-lastigen Szenen führen mehr Kerne solche Berechnungen aus. Mit DirectX 11 kamen noch die Compute-Shader hinzu, durch die Grafikchips auch universelle Berechnungen ablaufen lassen können – etwa die physikalische Simulation von Haaren. In Spielen wie Tomb Raider stehen Haare dauerhaft auf Platz zwei der beliebtesten Körperteile von Polygonfiguren.

AMD und Nvidia haben jeweils eigene Marketing-Begriffe für ihre Shader-Rechenkerne: Stream Processors und CUDA Cores klingen zwar grundverschieden, bezeichnen aber letztendlich die gleichen Einheiten. Allerdings sind sie abhängig vom Aufbau der jeweiligen GPU unterschiedlich angeordnet und verknüpft.

Innerhalb der vergangenen zehn Jahre ist die Anzahl der Shader-Rechenkerne gleichsam zur Komplexität der Grafikchips geradezu explodiert.

Als erste Grafikkarten-Generation mit Unified-Shader-Kernen stellte Nvidia im Jahr 2006 die GeForce-8-Serie vor, deren GPUs bis zu 128 Kerne enthielten (GeForce 8800 GTX/Ultra, G80-GPU). Es folgten die Spitzenmodelle GeForce 9800 GTX (128 Kerne, G92b, 2008), GeForce GTX 285 (240 Kerne, GT200, 2008), die aufgrund ihrer Hitzeentwicklung auch als Thermi berüchtigte GeForce GTX 480 (480 Kerne, 2010, GF100), GeForce GTX 580 (512 Kerne, 2010, GF110), GeForce GTX 680 (1536 Kerne, 2012, GK104), GeForce GTX 780 Ti (2880 Kerne, 2013, GK110), GeForce GTX 980 Ti (2816 Kerne, 2015, GM200), GeForce GTX 1080 Ti (3584 Kerne, 2016, GP102) und im Titan-Lager die Titan V (5120 Kerne, 2017, GV100).

GPU-Architektur: Shader in ihrer natürlichen Umgebung.

AMDs erste Unified-Shader-Karten gehörten zur Serie Radeon HD 2000, das Flaggschiff Radeon HD 2900XT hatte 320 Kerne (2007, R600XT). Es folgten die Spitzenmodelle Radeon HD 3870 (320 Kerne, 2008, RV670XT), Radeon HD 4890 (800, 2009, RV790XT), Radeon HD 5870 (1600 Kerne, 2009, CypressXT), Radeon HD 6970 (1536 Kerne, 2010, CaymanXT), Radeon HD 7970 (2048 Kerne, 2012, TahitiXT), Radeon R9 290X (2816 Kerne, 2013, HawaiiXT), Radeon R9 Fury X (4096 Kerne, 2015, FijiXT) und Radeon RX Vega 64 (4096 Kerne, 2017, Vega).

Um aus einer Grafikkarte hohe 3D-Leistung zu quetschen, reicht eine hohe Anzahl an Shader-Einheiten allerdings nicht aus. Es braucht etwa noch eine passende Anzahl von Textureinheiten (TMUs) und von unter anderem für die Kantenglättungsleistung wichtigen Rasterendstufen (ROPs); außerdem muss der Grafikspeicher groß und schnell genug angebunden sein. Dazu kommen noch Caches, Register und und und... den ganzen Aufbau eines Grafikchips nennt man schlicht Grafik-Architektur – und diese schneiden AMD und Nvidia auf jeweils unterschiedliche Bedürfnisse zu.

Bis Mitte der 2000er lag der Fokus dabei auf reiner 3D-Leistung, doch mit dem Aufkommen der vollständig programmierbaren Unified Shader ließen sich Grafikchips über Schnittstellen wie CUDA und OpenCL auch für universelle Berechnungen einsetzen (GPGPU). Heutzutage muss ein Grafikchip dabei gleichzeitig eine besonders hohe 3D- und Rechenleistung liefern und auch für Spezialanwendungen wie UHD-Video oder KI-Berechnungen geeignet sein – dafür braucht man neben Shader-Kernen und Co auch noch Spezialeinheiten wie Video-De/Enkoder und etwa Tensor Cores – die sich wiederum nur eingeschränkt programmieren lassen.

Anzeige
Anzeige