It’s not uncommon for customers to ask for the possibilities to deliver a GPU (graphics processing unit) powered desktop with Windows Virtual Desktop. If employees have to work with multimedia enabled applications, you can hardly do without it. Or for example, a construction company that wants to deliver the Autodesk AutoCAD, Autodesk Revit and Autodesk InfraWorks CAD applications.
Within Microsoft Azure you can easily spin up a GPU powered VM and use it with Windows Virtual Desktop as I will show you step-by-step in this blog.
This blog will include the following steps;
- Azure Subscription Usage + Quotas check
- Deploy a Windows Virtual Desktop Host pool with GPU powered VMs
- Installing the GPU driver / extension
- Configure GPU-accelerated app rendering and frame encoding
- Test the results
Step 1 : Azure Subscription Usage + Quotas check
Before you start with the deployment of GPU powered virtual machines within your Azure environment, it is good to check your current Usage and Quotas for your subscription first.
This is because every Azure subscription has a quota for Standard NV Family vCPUs (GPU enabled VMs) and a Total Regional vCPUs. It may be possible that you quota is not enough for your planned deployment. Also, keep in mind that the quotas are per region. Therefor it is good to request any increase that is needed in forehand. It can take multiple days to process your request, and it is not always be horned, for example, in the case there is not enough space available in your region.
To check your quota, open the Subscriptions blade within the Microsoft Azure portal. Open your subscription and open to the Usage + quotas page.
When selecting the Microsoft.Compute provider, you will find your quotas in the first few lines as shown in the screenshot above.
Step 2 : Deploy a Windows Virtual Desktop Host pool with GPU powered VMs
Second step is to deploy a new Windows Virtual Desktop host pool. I will not describe these steps in this blog because I already wrote a step-by-step blog about How to deploy and manage Windows Virtual Desktop “Spring Release”, you can find that one here.
Its imported during the Windows Virtual Desktop Host pool deployment, that you select a “NV” serie as Virtual machine size. Because this serie have a GPU included (NVIDIA or AMD). Keep in mind that only the VN serie GPU VMs are supported for Windows Virtual Desktop.
Step 3 : Installing the GPU driver / extension
If the GPU driver is not part of your custom image, or its not installed automatically via a VM extension a “Microsoft Basic Display Adapter” will be visible in the Device Manager, also the GPU information is not visible on the Performance tab in the Task Manager (see screenshot below).
Before you can use the GPU, the driver needs to be installed. This can be done via the manual driver installation, or via the VM Extension.
In this blog I will show you how to install the VM extension, if you want to install the driver manually, and you are using a VM with the NVIDIA GPU, you can download the drivers here.
To install the VM Extension, navigate to the VM within the Azure Portal and open de Extensions tab of the VM. Next, click the +Add button.
If you have a VM with a NVIDIA GPU, click on the NVIDIA GPU Driver Extension, if you have a VM with an AMD GPU, click on the AMD GPU Driver Extension.
Click Create
Click OK
After a view minutes the Extension is installed and the VM will get a reboot.
After the reboot, the NVIDIA Tesla M60 Display adapter (in this case) will be visible in the Device Manager, also the GPU is now visible on the Performance tab of the Task Manager.
To get more information about the the driver and the GPU status run the following command;
c:\Program Files\NVIDIA Corporation\NVSMI>nvidia-smi.exe
Step 4 : Configure GPU-accelerated app rendering and frame encoding
On a multi-session OS, applications and desktops are rendering with the CPU by default. To let the applications and desktops rendering with the GPU, Group Policy settings needs to be configured.
For example all take the Google Chrome browser. In the screenshot above I have opened the https://akirodic.com/p/jellyfish website and set the count to 250. As you can see in the Task Manager, the CPU is heavily used, and the GPU not at all.
With Google Chrome (And the new Microsoft Edge browser) you can check if hardware acceleration is enabled by navigating to chrome://gpu (for the Edge browser it is edge://gpu), in this case you can see that it is disabled at this moment.
To enable the GPU rendering via policy settings, open the Group Policy Editor, create or edit a GPO that will be applied to this Windows Virtual Desktop Session Host. Navigate to Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Remote Session Environment
Set the following settings to Enabled
- Use hardware graphics adapters for all Remote Desktop Services sessions
- Prioritize H.264/AVC 444 graphics mode for Remote Desktop Connections
- Configure H.264/AVC hardware encoding for Remote Desktop Connections
Open an elevated Command Prompt and run gpupdate /force. After the Policy update has been completed, restart the VM.
After the reboot, when opening the https://akirodic.com/p/jellyfish website you now will see the the GPU is used for rendering.
And when navigating to chrome://gpu, you will see that hardware acceleration is enabled.
Step 5 : Test the results
Now that are the configuration is finished it’s time to test the results.
For the first test I started Autodesk Revit and opened a Basic Sample Project. As you can see in the Task Manager, the GPU is being used.
UNIGINE has some great Benchmarks for GPUs that can be download for free here. In this case I have installed the Valley Benchmark and as you can see again, the GPU is used for the rendering.