Enable GPU acceleration for Azure Virtual Desktop
Azure Virtual Desktop supports graphics processing unit (GPU) acceleration in rendering and encoding for improved app performance and scalability using the Remote Desktop Protocol (RDP). GPU acceleration is crucial for graphics-intensive applications and can be used with all supported operating systems for Azure Virtual Desktop.
There are three components to GPU acceleration in Azure Virtual Desktop that work together to improve the user experience:
GPU-accelerated application rendering: Use the GPU to render graphics in a remote session.
GPU-accelerated frame encoding: The Remote Desktop Protocol encodes all graphics rendered for transmission to the local device. When part of the screen is frequently updated, it's encoded with the H.264/AVC video codec.
Full-screen video encoding: A full-screen video profile provides a higher frame rate and better user experience, but uses more network bandwidth and both session host and client resources. It benefits applications such as 3D modeling, CAD/CAM, or video playback and editing.
Tip
You can enable full-screen video encoding even without GPU acceleration.
You can also increase the default chroma value to improve the image quality.
This article shows you which Azure VM sizes you can use as a session host with GPU acceleration, and how to enable GPU acceleration for rendering and encoding. You can use Microsoft Intune or Group Policy to configure your session hosts.
Supported GPU-optimized Azure VM sizes
The following Azure VM sizes are optimized for GPU acceleration and are supported as session hosts in Azure Virtual Desktop:
- NVv3-series
- NVv4-series. GPU-accelerated frame encoding isn't available with NVv4-series VMs.
- NVadsA10 v5-series
- NCasT4_v3-series
The right choice of VM size depends on many factors, including your particular application workloads, desired quality of user experience, and cost. In general, larger and more capable GPUs offer a better user experience at a given user density. Smaller and fractional GPU sizes allow more fine-grained control over cost and quality.
VM sizes with an NVIDIA GPU come with a GRID license that supports 25 concurrent users.
Important
Azure NC, NCv2, NCv3, ND, and NDv2 series VMs aren't generally appropriate as session hosts. These VM sizes are tailored for specialized, high-performance compute or machine learning tools, such as those built with NVIDIA CUDA. They don't support GPU acceleration for most applications or the Windows user interface.
Prerequisites
Before you can enable GPU acceleration, you need:
An existing host pool with session hosts using supported GPU-optimized Azure VM sizes.
To configure Microsoft Intune, you need:
Microsoft Entra ID account that is assigned the Policy and Profile manager built-in RBAC role.
A group containing the devices you want to configure.
To configure Group Policy, you need:
A domain account that is a member of the Domain Admins security group.
A security group or organizational unit (OU) containing the devices you want to configure.
Install supported graphics drivers in your virtual machine
To take advantage of the GPU capabilities of Azure N-series VMs in Azure Virtual Desktop, you must install the appropriate graphics drivers. Follow the instructions at Supported operating systems and drivers to install drivers.
Important
Only Azure-distributed drivers are supported.
When installing drivers, here are some important guidelines:
For VMs sizes with an NVIDIA GPU, only NVIDIA GRID drivers support GPU acceleration for most applications and the Windows user interface. NVIDIA CUDA drivers don't support GPU acceleration for these VM sizes. To download and learn how to install the driver, see Install NVIDIA GPU drivers on N-series VMs running Windows and be sure to install the GRID driver. If you install the driver by using the NVIDIA GPU Driver Extension, the GRID driver is automatically installed for these VM sizes.
For VMs sizes with an AMD GPU, install the AMD drivers that Azure provides. To download and learn how to install the driver, see Install AMD GPU drivers on N-series VMs running Windows.
Enable GPU-accelerated application rendering, frame encoding, and full-screen video encoding
By default, remote sessions are rendered with the CPU and don't use available GPUs. You can enable GPU-accelerated application rendering, frame encoding, and full-screen video encoding using Microsoft Intune or Group Policy.
Note
GPU-accelerated frame encoding isn't available with NVv4-series VMs.
Select the relevant tab for your scenario.
To enable GPU-accelerated application rendering using Microsoft Intune:
Sign in to the Microsoft Intune admin center.
Create or edit a configuration profile for Windows 10 and later devices, with the Settings catalog profile type.
In the settings picker, browse to Administrative templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Remote Session Environment.
Select the following settings, then close the settings picker:
For GPU-accelerated application rendering, check the box for Use hardware graphics adapters for all Remote Desktop Services sessions.
For GPU accelerated frame encoding, check the box for Configure H.264/AVC hardware encoding for Remote Desktop connections.
For full-screen video encoding, check the box for Prioritize H.264/AVC 444 Graphics mode for Remote Desktop connections.
Expand the Administrative templates category, then set toggle the switch for each setting as follows:
For GPU-accelerated application rendering, set Use hardware graphics adapters for all Remote Desktop Services sessions to Enabled.
For GPU accelerated frame encoding, set Configure H.264/AVC hardware encoding for Remote Desktop connections to Enabled.
For full-screen video encoding, set Prioritize H.264/AVC 444 Graphics mode for Remote Desktop connections to Enabled.
Select Next.
Optional: On the Scope tags tab, select a scope tag to filter the profile. For more information about scope tags, see Use role-based access control (RBAC) and scope tags for distributed IT.
On the Assignments tab, select the group containing the computers providing a remote session you want to configure, then select Next.
On the Review + create tab, review the settings, then select Create.
Once the policy applies to the computers providing a remote session, restart them for the settings to take effect.
Verify GPU acceleration
To verify that a remote session is using GPU acceleration, GPU-accelerated application rendering, frame encoding, and full-screen video encoding:
Connect to one of the session hosts you configured, either through Azure Virtual Desktop or a direct RDP connection.
Open an application that uses GPU acceleration and generate some load for the GPU.
Open Task Manager and go to the Performance tab. Select the GPU to see whether the GPU is being utilized by the application.
Tip
For NVIDIA GPUs, you can also use the
nvidia-smi
utility to check for GPU utilization when running your application. For more information, see Verify driver installation.Open Event Viewer from the start menu, or run
eventvwr.msc
from the command line.Navigate to one of the following locations:
For connections through Azure Virtual Desktop, go to Applications and Services Logs > Microsoft > Windows > RemoteDesktopServices-RdpCoreCDV > Operational.
For connections through a direct RDP connection, go to Applications and Services Logs > Microsoft > Windows > RemoteDesktopServices-RdpCoreTs > Operational.
Look for the following event IDs:
Event ID 170: If you see AVC hardware encoder enabled: 1 in the event text, RDP is using GPU-accelerated frame encoding.
Event ID 162: If you see AVC available: 1, Initial Profile: 2048 in the event text, RDP is using full-screen video encoding (H.264/AVC 444).
Related content
Increase the default chroma value to improve the image quality.