Heterogeneous Queuing: AMD will CPU und GPU enger zusammenarbeiten lassen

Heterogeneous Queuing (hQ), so heißt die Hard- und Sofwareerweiterung für HSA, die unter Umgehung des Betriebssystems schnelle Kommunikation und Aufgabenteilung zwischen den CPU- und GPU-Kernen ermöglicht.

In Pocket speichern vorlesen Druckansicht 74 Kommentare lesen
Lesezeit: 3 Min.
Von
  • Andreas Stiller

AMDs HQ: die Appllikation verteilt die Jobs direkt ohne OS-Beteiligung an die CPU- und GPU-Kerne

(Bild:  AMD)

Als Erweiterung im Rahmen der Heterogeneous System Architecture (HSA) stellte AMD ein neues Konzept zur engmaschigen Verzahnung und zur Zusammenarbeit von CPU und GPU vor: Heterogeneous Queuing (hQ). Vorraussetzung dafür ist eine Accelerated Processing Unit (APU, Kombiprozessor aus CPU und GPU) mit gemeinsamem Speicher für beide Kerntypen (hUMA).

hQ richtet sowohl für die CPU- als auch für die GPU-Aufgaben sogenannte Application Task-Queues ein, die unter Umgehung des Betriebssystems die Arbeit verteilen können. Das Ganze erfolgt mit kurzer Latenz im User-Modus, was den langen Weg über den Kernel und die Kern-Mode-Treiber deutlich verkürzt.

Bislang war nur die CPU für den Programmablauf zuständig (Master/Slave), nun kann aber auch umgekehrt die GPU die CPU direkt mit Jobs füttern. All das ließe sich auch allein in Software realisieren, im Sinne der Performance hat AMD aber Arbitration und Scheduling in die Hardware verlagert. 10 bis 15 Queue-Sätze kann diese gleichzeitig verarbeiten. Die Kommunikation läuft über ein offenes "Standard Task Dispatch Packet Format", das allen HSA-Partnern zur Verfügung steht. Diese können darüber ihrer eigenen Hardware einen schnellen Weg zur CPU bahnen. Applikationen, etwa Bild- und Video-Bearbeitung, Finanzsoftware und so weiter können dann mit hQ nicht nur große Jobs sondern auch kleinere Aufgaben je nach Erfordernis auf die jeweils bestgeeigneten Kerne aufteilen.

Als Programmier- und Laufzeitumgebung auf oberer Ebene hat AMD vor allem das in Entwicklung befindliche Java 9 im Auge. Diese Java-Version soll erstmalig – abgesehen von speziellen Seitenentwicklungen wie Rootbeer – GPUs einbinden. Java-Applikationen würden dann automatisch von den kurzen Wegen zwischen CPU und GPU profitieren.

Microsoft bietet mit .Net solche Perspektive derzeit nicht, offeriert lediglich das schon etwas angestaubte Forschungsprojekt "Research Accelerator 2.2 ". Microsoft hat aber mit dem nicht verwalteten C++-AMP (Accelerated Massive Parallelism) eine für hQ geeignete heterogene Parallelisierung auf Basis von DirectX11-Compute im Angebot. Allerdings wird C++-AMP von Microsoft äußerst stiefmütterlich behandelt und die AMP-Nutzerszene ist vernachlässigbar klein. Ansonsten lässt sich hQ auf unterer Ebene in Programme mit OpenCl und OpenCV oder in die HPC-Bibliotheken wie BLAS, FFT, LAPACK einbinden.

Welche kommenden AMD-Chips hQ unterstützen, hat AMD noch nicht verraten. Sonys PS4-Prozessor nutzt – so weit bekannt anders als Microsoft bei der XBox 1 – hUMA und könnte möglicherweise hQ einsetzen. Ansonsten kann man bei AMDs nächster Prozessorgeneration Kaveri auf hQ hoffen. (as)