Werbung
Das Vorhandensein von mehreren tausend Shadern in einer GPU hilft dabei, eine leicht parallel auszuführende Aufgabe wie das Rendering einer 3D-Szene schnellstmöglich zu erledigen. Auf der anderen Seite bewältigt eine Grafikkarte heute noch weitere Rechenaufgaben und übernimmt beispielsweise einige Physik-Berechnungen, die nicht mehr auf dem Prozessor ausgeführt werden. Legt man außerdem zu Grunde, dass heutzutage 11 ms pro Frame als Vorgabe (90 FPS) für die gesamte Berechnung vorgesehen sind, der Physikberechnung aber meist nur 2 ms durch die Entwickler zugeteilt werden, wird deutlich, dass die Verteilung der Rechenaufgaben auf die zur Verfügung stehenden Ressourcen von entscheidender Bedeutung sind. Mit Async Compute verwenden AMD und NVIDIA eine Technik, die Physikberechnungen um den Faktor zwei beschleunigen kann.
Nun lassen sich solche Berechnungen, also die der Shader-Pipeline und Compute-Befehle, nicht gleichzeitig ausführen. NVIDIA führt dazu einige Beispiele an, die das verdeutlichen sollen. So werden beispielsweise ein Graphics-Workload mit einer Auslastung von 100 % und ein Compute-Workload mit einer Auslastung von weniger als 50 % hintereinander ausgeführt. Dies führt aber dazu, dass die GPU zu einem großen Teil nicht genutzt wird und die Ressourcen brach liegen.
Async Compute ermöglicht es an dieser Stelle, den Graphics- und Compute-Workload gleichzeitig durchzuführen, was die Gesamtzeit der Berechnung verkürzt und nur einer Minimierung der Idle-Zeit führt.
Nun können aber auch Berechnungen anfallen, die als Graphics-Workload einen Durchlauf auf meheren Iterationen vorsehen, was dazu führt, dass die GPU zwar mit diesen beschäftigt ist, der Rechenaufwand aber über die Zeit immer geringer wird. Dennoch muss sich der Compute-Workload ohne Async Compute hinten anstellen und die Dauer der gesamten Berechnungen ist relativ lange mit viel Idle-Zeit für die GPU.
Async Compute kann auch hier helfen, diese Idle-Zeiten und brachliegenden Ressourcen zu verkürzen bzw. zu verkleinern. Auch hier stellt sich wieder eine deutliche Verkürzung der gesamten Rechendauern ein.
Noch etwas komplizierter wird es, wenn Latenzen in den Berechnungen hinzukommen, die dafür sorgen, dass die GPU nicht mit ausreichend Daten gefüttert wird und auf eben diese Warten muss, um weitere Teile des Compute-Workloads zu berechnen. Hier entstehen dann trotz 100-prozentiger Auslastung der Hardware Wartezeiten zwischen den einzelnen Berechnungsschritten.
Auch hier kann NVIDIA mit Async Compute gegensteuern und zieht die immer noch unterbrochenen Compute-Workloads einfach vor, führt sie mit dem Graphics-Workload aus, plant die Wartezeiten aber in diesem Prozess mit ein und kann die Gesamtdauer wieder verkürzen.
Async Compute wird in der Spieleentwicklung künftig eine immer wichtigere Rolle spielen. Dies liegt vor allem daran, dass die Spieleentwickler immer mehr und mehr Rechenaufgaben auf die GPU umverteilen. Insofern wird eine ideale Zuteilung der unterschiedlichen Workloads immer wichtiger.