Was ist Tensor- und Raytracing-Core, was macht er?

Auch wenn Sie schon lange einen Computer nutzen, müssen Sie den Begriff „Tensor Core“ vor allem in den letzten Jahren oft gehört haben. Diese von NVIDIA entwickelten und als Tensor Core bekannten Kerne befinden sich als spezielle Einheit innerhalb der GPU.

NVIDIA hat damit begonnen, Tensor-Kerne in seine Grafikkarten zu integrieren, wobei die Modelle den Namen „RTX“ tragen. Neben Tensor-Kernen spielen mittlerweile auch RT-Kerne (Ray Tracing) eine wichtige Rolle. Diese Kerne sind anders positioniert als die üblichen Kerne für Shader. Was genau sind also diese Einheiten, die die GPUs der grünen Linie antreiben, und wofür werden sie verwendet?

Es reicht aus, auf die Details der Arbeit einzugehen, um herauszufinden, was die Tensorkerne genau bewirken und wofür sie verwendet werden können. Mikroprozessoren führen mathematische Operationen (Addition, Multiplikation usw.) mit Zahlen aus, unabhängig von ihrer Form.

Manchmal müssen diese Zahlen in einer Mitte gruppiert werden, da sie miteinander in Zusammenhang stehen. Wenn ein Chip beispielsweise Daten verarbeitet, um Grafiken eins zu eins mit einem einzelnen ganzzahligen Wert (z. B. +2 oder +115) für einen Skalierungsfaktor oder einem Satz Gleitkommazahlen (+0,1, -0,5) zu rendern , +0) für Anpassungen eines Punktes. ,6) könnte interessiert sein.

Ein Tensor ist ein mathematisches Objekt, das die Beziehung zwischen anderen mathematischen Objekten beschreibt, die alle miteinander verbunden sind. Sie werden häufig als Zahlenfolge definiert, deren Größe wie unten dargestellt angezeigt werden kann.

Die einfachste Tensorvariante, die Sie finden können, hätte eine Nulldimension und würde aus einem einzigen Kostenwert (skalarer Größe) bestehen. Wenn wir beginnen, die Anzahl der Dimensionen zu erhöhen, stoßen wir möglicherweise auf andere gängige mathematische Strukturen:

  • 1 Dimension = Vektor
  • 2 Dimensionen = etwa Matrix.

Ein Skalar ist ein 0 x 0-Tensor, ein Vektor ist 1 x 0 und eine Matrix ist 1 x 1. Um die Sache jedoch einfacher zu machen und uns auf Tensorkerne in GPUs zu konzentrieren, werden wir nur Tensoren in Matrixform betrachten.

Einer der wertvollsten mathematischen Prozesse mit Matrizen ist der Multiplikationsprozess. Schauen wir uns nun an, wie man zwei Matrizen mit jeweils einem Wert von 4 Zeilen und Spalten multipliziert:


Das genaue Ergebnis der Multiplikation ist immer die gleiche Anzahl Zeilen wie die erste Matrix und die gleiche Anzahl Spalten wie die zweite Matrix. Wie multipliziert man diese beiden Folgen? Hier ist diese Art:

Wie Sie sehen, erfordert eine einfache Matrixmultiplikationsberechnung eine Menge Arbeit. Jede heute auf dem Markt befindliche CPU beherrscht diese Prozesse. Das bedeutet, dass jeder Desktop, Laptop oder Tablet mit elementaren Tensoren umgehen kann.

Das obige Beispiel enthält 64 Multiplikationen und 48 Additionen; Jedes kleine Produkt führt zu Kosten, die irgendwo gespeichert werden müssen, bevor sie zu den anderen drei kleinen Produkten addiert werden können, sodass der letzte Wert für den Tensor irgendwo gespeichert werden kann. Aus diesem Grund sind Matrixmultiplikationen zwar mathematisch einfach, aber rechenintensiv. Zusammenfassend lässt sich sagen, dass der Cache bei Verwendung einer großen Anzahl von Registern eine große Anzahl von Lese- und Schreibvorgängen bewältigen muss.

CPU und GPU

Die Prozessoren von AMD und Intel haben im Laufe der Jahre verschiedene Befehlssätze (wie MMX, SSE und AVX) angeboten. Die enthaltenen Befehlsprozessfunktionen ermöglichen es dem Prozessor, eine große Anzahl von Gleitkommazahlen gleichzeitig zu verarbeiten. also genau das, was Matrixmultiplikationen brauchen.

Es gibt jedoch definitiv einen Prozessortyp, der speziell für die Ausführung von SIMD-Prozessen (Single Instruction Multiple Data) entwickelt wurde: Grafikprozessoren (GPUs).

Verschiedene Einsatzbereiche

Tensormathematik ist in der Physik und im Ingenieurwesen äußerst nützlich. Es wird verwendet, um alle möglichen komplexen Probleme in der Strömungsmechanik, dem Elektromagnetismus und der Astrophysik zu lösen, aber Computer, mit denen diese Zahlen geknackt werden, neigen dazu, die Matrixverarbeitung auf großen CPU-Clustern durchzuführen.

Ein weiterer Bereich, in dem Tensoren gerne verwendet werden, ist das maschinelle Lernen, insbesondere die Teilmenge des Deep Learning. Zu diesem Zeitpunkt werden riesige Datensammlungen in riesigen Arrays, sogenannten Grenznetzwerken, verarbeitet.

Aus diesem Grund werden alle großen Deep-Learning-Supercomputer mit GPUs betrieben, meist GPUs von NVIDIA. Einige Unternehmen wollten jedoch ihre eigenen Tensor-Core-Prozessoren produzieren. Beispielsweise kündigte Google 2016 seine erste TPU (Tensor Process Unit) an, diese Chips sind jedoch so angepasst, dass sie nur Matrixprozesse ausführen können.

In der Welt der Grafik müssen viele Daten gleichzeitig als Vektoren bewegt und verarbeitet werden. Die parallele Verarbeitungsfähigkeit von GPUs macht sie ideal für die Verarbeitung von Tensoren, und heute unterstützen sie alle einen Prozess namens GEMM (General Matrix Multiplication).

Dabei handelt es sich um einen „kombinierten“ Prozess, bei dem zwei Matrizen miteinander multipliziert werden und die entsprechende Matrize dann zu einer anderen Matrix addiert wird. Es gibt auch einige wertvolle Einschränkungen hinsichtlich des Formats von Matrizen. Diese drehen sich um die Anzahl der Zeilen und Spalten, die jede Matrix hat.


Zeilen- und Spaltenbedarf für ein GEMM: Matrix A(mxk), Matrix B(kxn), Matrix C(mxn)

Matrixprozesse laufen reibungsloser, wenn sie nur auf der für diese Prozesse vorgesehenen Hardware verarbeitet werden. Im Dezember 2017 veröffentlichte NVIDIA eine neue Grafikkarte mit GPU mit Volta-Architektur. Die Karten waren für den professionellen Markt gedacht, daher nutzte kein GeForce-Modell diesen Chip. Alle GeForce-Grafikkarten verfügen heute über Tensorkerne. Doch in jenen Jahren nahm Volta eine Sonderstellung ein, da es nur über Kerne für Tensorberechnungen verfügte.

Diese benutzerdefinierten Kerne von NVIDIA sind für die Übertragung von 64 GEMMs pro Taktzyklus auf 4 x 4-Matrizen ausgelegt, die FP16-Ladungen (16-Bit-Gleitkommazahlen) oder FP16-Multiplikation mit FP32-Addition umfassen. Die Größe solcher Tensoren ist sehr klein, sodass die Kernel bei der Verarbeitung realer Informationsmengen kleine Blöcke größerer Matrizen aufbrechen und so das Endergebnis erzeugen.

Weniger als ein Jahr später veröffentlichte der GPU-Riese die Turing-Architektur. Dieses Mal verfügten die GeForce-Modelle für Endverbraucher auch über Tensorkerne. Das System wurde aktualisiert, um andere Informationsformate wie INT8 (8-Bit-Ganzzahlwerte) zu unterstützen, ansonsten funktionierten sie jedoch weiterhin wie in Volta.

Anschließend wurde die Leistung der Tensor-Kerne (von 64 auf 256 GEMMs pro Zyklus) mit der Ampere-Architektur gesteigert. Darüber hinaus fügte das Unternehmen weitere Datenformate hinzu und bot die Möglichkeit, dünn besetzte Tensoren (Matrizen mit vielen Nullen) sehr schnell zu verarbeiten.

Das Unternehmen entwickelt mit jeder Generation Tensorkerne weiter. Mit der Ada Lovelace-Architektur und Grafikkarten der RTX 40-Serie wurden erstmals Tensor-Kerne der 4. Generation verwendet. NVIDIA hat große Fortschritte bei Deep Learning und KI-Workloads gemacht. Die Tensor-Kerne der vierten Generation von Ada nutzen die FP8 Transformer Engine, die erstmals mit der Wissenscenter-GPU Hopper H100 eingeführt wurde und die Leistung um das bis zu Fünffache steigert, was zu einer Leistung von 1,4 Tensor-PetaFLOPS führt. Darüber hinaus wird dank der Transformer Engine die Rechenleistung pro Tensor-Kern für Algorithmen verdoppelt, die FP8 anstelle von FP16 verwenden können.

Für Programmierer ist es einfach, auf Tensorkerne auf allen Volta-, Turing-, Ampere- und Ada-Lovelace-Chips zuzugreifen: Der Code verwendet ein „Flag“, um der API und den Treibern anzuzeigen, dass Sie die Tensorkerne verwenden möchten, der Datentyp ist Eine Art, die von den Kernen unterstützt wird, und die Matrizen müssen ein Vielfaches von 8 groß sein. Danach erledigt die Hardware alles Weitere automatisch.

Tensorkerne sind sehr erfolgreich darin, das Geschäftsleben zu erleichtern. Aber wenn Sie eine Karte der GeForce RTX-Serie verwenden und sich nicht mit komplexen Dingen befassen, was sind diese Spezialeinheiten für Sie?

Tensor wird nicht für die Bildkodierung oder -dekodierung verwendet, solange der übliche Prozess erfolgt. Allerdings führte NVIDIA 2018 bei der Integration von Tensorkernen in Consumer-Artefakte (Turing GeForce RTX) eine weitere Technologie ein: DLSS – Deep Learning Awesome Sampling.

Nach all dem komplizierten Rechengerede dürfte nun alles etwas geregelter sein. Wie Sie wissen, ist die DLSS-Technologie mittlerweile nicht mehr wegzudenken und wird in viele der neuen Spiele integriert.

DLSS ist eine wichtige Upscaling-Technologie, die nach dem Rendern eines Frames mit niedriger Auflösung die Auflösung des Ergebnisses erhöhen kann, um sie an die nativen Bildschirmabmessungen des Monitors anzupassen. Beispielsweise möchte ich mit 1080p rendern und dann die Größe auf 1400p ändern. Wenn wir zu diesem Zweck DLSS verwenden, können wir durch die Verarbeitung von weniger Pixeln ansprechende Bilder auf dem Bildschirm erzielen, ohne große Einbußen bei der Leistung hinnehmen zu müssen.

In der Zeit, als NVIDIA diese Technologie zum ersten Mal einsetzte, wurden ausgewählte Spiele analysiert, indem sie mit niedrigen Auflösungen, hohen Auflösungen, mit und ohne Anti-Aliasing ausgeführt wurden. NVIDIA verwendet ein spezielles Randnetz, um auf seinen Premium-Computern ein 1080p-Bild in ein makelloses Bild mit höherer Auflösung umzuwandeln.

DLSS Version 1.0 war nicht herausragend. An einigen Stellen gingen Details verloren und es konnten seltsame Leuchten beobachtet werden. Außerdem nutzte diese Version nicht die Tensorkerne der Grafikkarte (dies erfolgte im NVIDIA-Netzwerk).

Bei der Veröffentlichung der Version 2.0 Anfang 2020 wurden einige wesentliche Verbesserungen vorgenommen. Vor allem wurden die großartigen Computer von NVIDIA nur zur Erstellung eines generischen Upgrade-Algorithmus verwendet. In der neuen Version von DLSS werden Daten aus dem gerenderten Frame verwendet, um Pixel (über die Tensorkerne Ihrer GPU) mithilfe des neuronalen Modells zu rendern. Dadurch wurden Tensorkerne viel wertvoller, DLSS hat fantastische Arbeit geleistet.

Die visuelle Ausgabe von DLSS ist möglicherweise nicht immer vollständig. Entwickler haben jedoch die Möglichkeit, weitere visuelle Effekte hinzuzufügen oder dieselben Grafiken auf einer größeren Auswahl an Plattformen anzubieten.

Beispielsweise wird DLSS häufig mit Raytracing in „RTX-fähigen“ Spielen eingeführt. GeForce RTX-GPUs verfügen außerdem über zusätzliche Prozesseinheiten, sogenannte RT-Kerne (Ray Tracing). RT-Kerne sind spezielle logische Kerne, die entwickelt wurden, um die Berechnung von Strahl-Dreieck-Schnittpunkten und BVH-Kreuzungsberechnungen (Bounding Volume Hierarchy) zu beschleunigen. Diese beiden Prozesse werden verwendet, um herauszufinden, wo Licht mit anderen Objekten in einer Szene interagiert.

Zusammenfassend lässt sich sagen, dass Raytracing ein sehr aufwändiger Prozess ist. Aus diesem Grund sollten Spieleentwickler die Anzahl der in einer Szene ausgeführten Strahlen und Sprünge begrenzen, um eine spielbare Leistung zu erzielen. Dieser Prozess kann auch zu körnigen Bildern führen und es muss ein Entrauschungsalgorithmus angewendet werden, was die Prozesskomplexität erhöht.

DLSS 3

NVIDIA stellte nicht nur die Tensor- und RT-Kerne der nächsten Generation mit der Ada Lovelace (RTX 40)-Architektur vor, sondern stellte gleichzeitig auch eine neue Version von DLSS vor. Die schlechte Nachricht ist, dass DLSS 3 nur auf Grafikkarten der RTX 40-Serie unterstützt wird.

DLSS 3 ist ein revolutionärer Durchbruch in der KI-gesteuerten Grafik, der die Leistung erheblich verbessert und gleichzeitig eine hervorragende Bildqualität und Reaktionsfähigkeit beibehält. Aufbauend auf DLSS Awesome Resolution fügt DLSS 3 die optische Multi-Frame-Generierung hinzu, um völlig neue Frames zu rendern, und integriert die NVIDIA Reflex-Technologie mit geringer Latenz für optimale Reaktion. DLSS 3 basiert auf den neuen Tensorkernen der vierten Generation und dem Optical Flow Accelerator der NVIDIA Ada Lovelace-Architektur, die die Grafikkarten der GeForce RTX 40-Serie antreibt.

Der DLSS Frame Generation Convolutional Autoencoder benötigt vier Eingaben: aktuelle und vorherige Spielframes, ein vom Optical Flow Accelerator von Ada erzeugtes optisches Flussfeld und Spiel-Engine-Informationen wie Bewegungsvektoren und Tiefe.

RT Cores sind NVIDIAs proprietäre Hardwarekerne, die speziell für die Bewältigung der Rechenlast im Zusammenhang mit Echtzeit-Raytracing in Spielen entwickelt wurden. Ähnlich wie Tensor-Kerne werden Ray-Tracing-Kerne auch in Spielen verwendet, um die Belastung der CUDA-Kerne für die grundlegende Grafikverarbeitung zu verringern. Ihre Verwendung ist jedoch sehr unterschiedlich.

Was ist Raytracing?

Was Sie im wirklichen Leben sehen, ist das Ergebnis von Photonen unterschiedlicher Wellenlänge, die auf die Netzhaut Ihres Auges treffen, nachdem sie von der Augenlinse fokussiert und gesammelt wurden. 3D-Echtzeit-Computergrafiken wurden in vergleichbarer Form nicht erstellt. Denn die Simulation der Funktionsweise von Licht erfordert unglaublich umfangreiche Berechnungen. Raytracing wurde ursprünglich häufig für die Offline-Verarbeitung verwendet, da die Berechnung eines Frames Stunden dauern kann. Raytracing wurde häufig für visuelle Effekte in Hollywood-Blockbuster-Animationsfilmen eingesetzt.

RT-Kerne dienen dazu, die grundlegenden mathematischen Prozesse zu beschleunigen, die zum Verfolgen virtueller Lichtstrahlen in einer Szene erforderlich sind. Natürlich ist auch hier nicht alles genau so wie im wirklichen Leben. Aber dank Simulationen kann die Beleuchtung vorgenommen werden, alles erhält ein realistischeres Aussehen.

Aufgaben von RT Core

RT-Kernel sind nicht multilateral wie CUDA. Es wird durch eine spezielle Architektur für spezielle Berechnungen oder Algorithmen unterstützt, um eine höhere Effizienz zu erreichen. Diese Architektur wurde entwickelt, um Raytracing-Befehle in Spielen zu definieren und zu beschleunigen.

CUDA-Kerne dienen allgemeineren Zwecken, um allgemeine Rechenarbeit zu erledigen. Grafikprozessoren der neuen Generation verfügen über Tausende von CUDA-Kernen. Diese berechnen die Schattierung jedes Pixels, das Sie auf dem Bildschirm sehen, und erzeugen alle anderen Effekte, die Sie in zeitgenössischen klassischen Grafiken sehen.

Kurz gesagt, wenn ein Raytracing-Berechnungsprozess stattfindet, werden RT-Kerne in die Prozessgrenze der Grafikkarte einbezogen und übernehmen diese Aufgabe. Das heißt, die RT-Kerne übernehmen die Raytracing-bezogenen Arbeitslasten und führen dann die Berechnungen durch, um die Szene und die Pixel zu rendern.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert