archy13 - stock.adobe.com
Neue Chip-Typen treiben die GPU-Virtualisierung voran
Intel, AMD und Nvidia bringen vermehrt GPU-Virtualisierung auf den Markt. Doch die Konzepte unterscheiden sich und verfolgen unterschiedliche Ansätze.
Es gibt derzeit mehrere Optionen für IT-Administratoren, die die Vorteile der GPU-Virtualisierung ausnutzen wollen: Dazu gehören Intel Graphics Virtualization Technology, Advanced Micro Devices Multiuser GPUs und Nvidia virtuelle GPUs. Aber das Konzept von GPU-Cores ändert sich gerade, und die Chip-Hersteller arbeiten an neuen Core-Typen.
Eine Graphics Processing Unit (GPU) ist im Prinzip ein spezialisierter Processor – gewöhnlich als „shader“ bezeichnet – mit seinem eigenen Instruktions-Set, der Transformationen und andere komplexe mathematische Prozesse schnell und effizient bewältigt. GPUs waren lange Zeit nicht präsent in den Rechenzentren der Unternehmen, und die Virtualisierungstechnologien haben großenteils über die Unterstützung von GPUs hinweggesehen.
Rechenintensive Techniken wie Big Data, Machine Learning und Business-Intelligence-Visualisierungswerkzeuge werden vermehrt eingesetzt und die Leistungsfähigkeit von GPUs kann die mathematischen Prozesse optimieren und die Workload-Performance im Rechenzentrum beschleunigen. Virtualisierung erweitert sich in Richtung GPUs und ermöglicht es den Administratoren, GPU-Ressourcen bereitzustellen und sie mit virtuellen Maschinen (VMs) zu teilen.
Größere GPU-Hersteller wie Intel, Advanced Micro Devices (AMD) und Nvidia haben alle softwarebasierte Technologien für die Integration mit Hypervisoren geschaffen, um GPUs zu virtualisieren und um diese virtuellen GPUs für virtuelle Maschinen verfügbar zu machen. Ab 2019 stellen GPU-Hersteller in der Regel GPU-Virtualisierung zur Verfügung, und neue und leistungsstärkere GPU-Chips kommen in regelmäßigen Abständen auf den Markt.
Intel GVT
Die Graphics Virtualization Technology (GVT) von Intel benutzt einen Software-Layer, der Hypervisoren wie zum Beispiel KVM oder Xen unterstützt und der virtuelle Maschinen in die Lage versetzt, per OpenCL Zugang zu virtualisierten GPUs zu bekommen.
Es gibt drei hauptsächliche Varianten von GVT. Mit GVT-d können Administratoren Intel-GPUs für eine virtuelle Maschine reservieren. GVT-g ermöglicht Administratoren, eine virtualisierte GPU in einem Timesharing-Verfahren mehreren VMs zur Verfügung zu stellen, wobei der native Graphics Driver eingesetzt wird. Und mit GVT-s schließlich können die Administratoren eine virtualisierte GPU unter Einsatz eines virtualisierten Grafiktreibers mehreren VMs parallel zur Verfügung stellen.
AMD MxGPU
Die Technologie Multiuser GPU (MxGPU) von AMD verwendet Grafikkarten mit AMD MxGPU-Chips. Statt auf einem Software-Layer beruht MxGPU auf der Technologie „Single Root I/O Virtualization“ für GPU-Virtualisierung und unterstützt die Hypervisoren VMware ESXi, KVM und Xen, wobei spezielle Treiber zum Einsatz kommen.
MxGPU gibt bis zu 16 virtualisierten Workloads die Möglichkeit, eine physische GPU zu teilen, wobei der Zugang zur GPU mit OpenCL erfolgt. MxGPU ist für VDI-Installationen geeignet, bei denen jede VM im Allgemeinen einem User entspricht.
Nvidia vGPU
Die Virtual-GPU-Technologie (vGPU) von Nvidia nutzt ebenfalls einen Software-Layer über dem Hypervisor und erlaubt so jeder VM, die darunter liegende physische GPU zu teilen. Die Nvidia-vGPU kann im Durchreich-Modus (Pass-Through Mode) arbeiten, womit in erster Linie jede VM zu einem bestimmten Zeitpunkt Zugang zur GPU erhält. Dies führt zur besten Performance für jede VM, da sie abwechselnd die volle Kontrolle über die physische GPU erhalten.
Wenn jedoch mehrere VMs zur gleichen Zeit die GPU brauchen, muss der Server über mehr GPUs verfügen – was die Kosten der Installation erhöhen kann. Aber die vGPU-Technologie kann auch in einer mehr konventionellen Art und Weise funktionieren, wenn sie mehrere vGPUs von der physischen GPU erzeugt und diese vGPUs den VM-Workloads zur Verfügung stellt.
Man muss beachten, dass das Konzept der GPU Cores wegen zweier entscheidender Faktoren etwas verschwimmen kann: Core Count und Core Roles. Ein GPU Core Count kann radikal verschieden von einem traditionellen CPU Core Count sein.
Während eine CPU etwa acht bis 24 CPU Cores haben kann, könnte dagegen ein GPU-Subsystem – zum Beispiel eine Expansion Card in einem Server – Hunderte oder sogar Tausende von GPU Cores zur Verfügung stellen. Ein Highend-Beispiel ist der Nvidia Quadro RTX 8000, der 4.608 Compute Unified Device Architecture Cores und 576 Tensor Cores mit 48 GByte an virtuellem RAM besitzt.
Core Roles vermischen sich ebenfalls. Traditionell übernahmen CPU Cores anwendungsbezogene Aufgaben, während GPU Cores sich um mathematische und grafikbezogene Aufgaben kümmerten. 2019 dagegen versuchen Hersteller wie AMD, die CPU- und GPU-Funktionalität in Compute Cores miteinander zu mischen, die beide Arten von Aufgaben auf dem gleichen Chip ausführen. Während solche Konzepte nichts an den zugrundeliegenden Vorteilen der GPU-Virtualisierung ändern, sind sie in der Lage, die Art und Weise zu verändern, wie Ressourcen virtualisiert und Workloads in der Zukunft zur Verfügung gestellt werden.