One key benefit of Windows Virtual Desktop (WVD) is the ability to spin up Windows 10 instances with Graphics Cards (GPU’s) on the fly. Where as traditionally it would take significantly longer to deliver GPU graphics to on-premises VDI solutions, due to procurement, logistics and implementation.
You can find out more about the different types of available GPU instances in azure here: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sizes-gpu
In this article, i use the “Standard_NV6” virtual machine for all demos.
How a GPU works:
So before we get started on GPU testing, its prudent to quickly summarise how they work and differences between CPU’s. In essence a GPU is a specific piece of hardware designed to map the way 3D engines execute their code. This could include geometry and execution, memory access, texture mapping and shaders.
It was Nvidia who first used the term “GPU” with the launch of the original GeForce 256 “circa August 1999” this was for carrying out hardware transform and lighting calculations.
GPU’s have thousands of cores where as a CPU has much less, for example 100 cores. GPU’s have difficulty executing recursive code, where as CPU’s are less likely to stuggle.
A GPU is for graphics problems with large parallel architecture consisting of thousands of smaller efficient cores designed for handling many tasks simultaneously.
A CPU address’s sequential processing and uses cache, coherency, and isolation between x number of cores (great for applications (repetitive actions)).
As depicted in the image below, this shows you the core difference of GPU’s/CPU’s.
CPU: Sequential Series processing with Multiple core with large caches optimised for series applications. Point to note (newer CPUs have more parallelism).
GPU: Parallel Processing with thousands of small cores. High Compute density, graphics is the best known case for parallelism.
Configuration of a GPU:
The first thing to do is deploy a Azure Windows 10 Multi session instance with the correct graphics cards selected (instance selected).
Once you have deployed the NV6 Azure instance or other, you will need to install the graphics drivers before being able to use the GPU.
You can find out more here: https://docs.microsoft.com/en-us/azure/virtual-machines/linux/n-series-driver-setup
Once the drivers are installed, you should be able to verify using “Device Manager” as shown below.
Once this is completed, you will then need to configure a Group Policy so that the GPU is used as the default graphics adapter “Use the hardware default graphics adapter for all Remote Desktop Services sessions” .
The final item you will need to complete is, to enable “GPU-accelerated frame encoding” as by default, Remote Desktop encodes all graphics and does not leverage available GPUs for this encoding. You need to configure this for a GPU to be used…
You can validate and confirm GPU rendering using the following command:
Example Screenshot of Nvidia-SMI
GPU, None GPU and Surface Pro Graphics testing
To complete testing of the GPU/None-GPU, I created my own GPU testing application using HTML5 WEBGL as the mechanism to generate graphical load. One example of WebGL is https://akirodic.com/p/jellyfish/.
For testing I created one WVD none GPU Instance on windows 10 Multi session, one WVD GPU instance on windows 10 Multi session and one Surface Pro 6 with 8GB’s of Ram.
The purpose of this test was to generate load on the azure instances and a surface pro. This was to identify the impact/benefits of using/not using GPU’s in Windows Virtual Desktop and to possibly understand the use cases of a GPU in a Cloud Modern Workspace (CMW). The testing did conclude that using WVD with a GPU, does prove to show better performance than the other two devices (None GPU and Surface pro). At the end of the video, you will note there is a test of using Affinity Designer both on a GPU and a none GPU Azure instance. The GPU instance performed better than all other tested instances/devices. The None GPU instance, did show promise and could possibly be deemed acceptable for a task/knowledge worker type profile when using graphical design (not 3D/ rendering) applications. As hinted earlier, using newer/latest versions of Intel CPU’s could improve graphical performance as the new CPU’s have some parallelism.
Video (1) – GPU Testing Video using homemade GPU testing script.“
RemoteApp GPU Testing
The second test was quite simple really, We used the Geeks3D furMark application to test the performance of the GPU using remote applications (RemoteApp) Affinity as a Remote Application and a asteroid video. As you can see from the video, performance was good in general with no graphics issues seen.
Video (2) – “RemoteApp GPU Testing Video”
Remote App Testing with no GPU
The final and third test was carried with no GPU. As shown you can see, a Graphics image application called Affinity Designer works well with no major issues (a little pixelation). Geeks 3D furMark would not run as the application could not detect a GPU and the WebGL application Fish GL was very clunky and jumpy as predicted.
Video (3) – “RemoteApp No GPU Testing Video”
The GPU Testing Videos shows there are benefits in using a GPU in Windows Virtual Desktop. There are clearly specific use cases when and when not to use GPU’s as most standard applications function correctly without a GPU.
Testing did show that using GPU’s does provide significant improvements to graphics and user experience for WVD users. However the need for a GPU is subject to the user-base requirements (graphics Applications) due to cost. for example: the design application tested, could still be used without a GPU. There was minor pixelation when using the none GPU, and this did not in-peed the function of the application. However when running WebGL tests, it was clear the none GPU instance struggled and was running at 95/100% CPU. where as the GPU instance offloaded to the Graphics card showed the CPU was running at around 15% utilisation.
In conclusion, cost is something to bare in mind as GPU Azure instances are quite costly. It is suggested, that you consider using newer azure CPU’s for Azure WVD, as you could benefit from the improved parallelism in new chips.
Future of WVD: Things will inevitability change as Microsoft announced @ ignite 2019, that an new enhanced remote display driver is coming which would improve general graphics performance.
as always, any questions, please use the comments box.
If you want a copy of my GPU testing app, please use the comments box below…. Thanks for reading/watching.