AMD (NvV4-series) and Microsoft Windows Virtual Desktop (WVD)
Hi all

I am excited to share this is a blogseries around better understanding the value of NVv4-series in Azure and I will cover different views. From what NVv4-series is, which software vendors it works with and which remoting technology it can be used with, and I also cover later in a blogpost how you can scale and run different workloads and utilize the AMD CPU/GPU and how you can monitor and troubleshoot.
In this blogpost i will cover the overview of Microsoft Windows Virtual Desktop and how it can be hardware accelerated (GPU) enabled with AMD CPU/GPU more specific the NVv4 series in Azure.
You will learn what offerings Microsoft have with Windows Virtual Desktop high level and where you can access the NVv4-series in which Azure datacenter. The process which is required to start and how you can start enabling your VM’s with graphics acceleration.
I will also cover what the difference is with the difference NVv4 instances and the use cases how to use them with Windows Virtual Desktop.
Windows Virtual Desktop have now been GA for almost a year, and it have been a huge success globally. NVv4-series also have 1 year anniversary as it was GA in 4th March 2020, which I covered in a blogpost here
All remote users use modern applications
- Enterprise require modern desktop experiences to keep up with application, web and OS advancements
- Shift in how people are using tools today to work and collaboration
- GPU is as important as a CPU today – it impacts user experience
Workers are getting more feature rich experience. The modern worker interact with graphic rich web experience. Office365 requires more graphics demand such as Word, Excel, Powerpoint, Outlook, PowerBI, Teams. Video conference systems such as Zoom, Google Hangout also requires GPU. If you are considering using Teams its highly recommended to use GPU inside the WVD environment to get better user experience, even if you are using teams optimisation.
Power users are getting more rich features in Adobe to better do graphics design and image manipulation to give you some examples on why GPU is a requirement for a Power user.
Pro/Designers work with 3D design, modeling and animation, which can be all from a game developer to an animator or engineer/architect. Gpu simulation and rendering is common used with Pro/designers and requires the larger GPU instances, but with NVv4-series it’s now possible to give a user partial of a GPU and lowering the cost and give just what you need instead of paying for an entire GPU.

NVv4-series – The CPU
Inside the NVv4-series there is a AMD EPYC “ROME” Cpu platform.
More specific its the AMD EPYC 7742 processor.


Benefits
- Up to 32 Epyc “Rome” vCores @2.44 GHz clock (even @ full TDP!!
- Very strong IPC (parity or better vs Xeon)
- Huge dedicated L3 per CCX provides isolation from noisy compute neighbours
- NV4as_v4 (4 vCPU) fits entirely in CCX

NVv4-series – The GPU
AMD INSTINCT MI25 GPU platform for NVv4-series

- 16GB memory/frame buffer
- 24.6 Gflops GPU Shader Compute
(@ 16-bit precision) - ACE (Asynchronous Compute Engine)
- SRIOV/MxGPU + GPU-P
Benefits of SR-IOV
- SRIOV is a method for providing each VM with it’s own fully-virtualized GPU (or other PCI) device
- AMD’s SRIOV is implemented via fixed-function hardware on the GPU/host
- Offers exceptional protection and security for each partitioned VM at the host level via HyperV/GPU-P
- Delivers Predictable/Fixed Performance
- Offers exceptional protection against noisy neighbors

& isolated slice of the GPU memory.
The Physical Function is the controller for access to the registers assigned to a Virtual Function.
The guest OS recognizes the GPU as a pass through device
Memory is wiped between context switches.
Predictable performance and security with hardware partitioning of the GPU
In Azure, the security of the customer’s workload is always a top priority. SR-IOV based GPU partitioning provides a strong, hardware-backed security boundary with predictable performance for each virtual machine. Microsoft partition a single AMD Radeon Instinct MI 25 GPU and allocate it up to eight virtual machines. Each virtual machine can only access the GPU resources dedicated to them and the secure hardware partitioning prevents unauthorized access by other VMs.

NVv4-series – Types of instances

NV4as_v4 is limited to 18FPS so if you require more FPS I highly recommend using min. NV8as_v4 or higher instance.
NV4as_v4 is not an instance I would use for GDI/O365/Youtube apps, but it could be used for very light GPU CAD apps
NV8as_v4 or higher instance are instances I would recommend for O365 apps/Youtube or higher Graphics demanding applications.
ACU: 230-260
Premium Storage: Supported
Premium Storage caching: Supported
Live Migration: Not Supported
Memory Preserving Updates: Not Supported
VM Generation Support: Generation 1 and 2
Accelerated Networking: Supported
Ephemeral OS Disks: Supported
Size | vCPU | Memory: GiB | Temp storage (SSD) GiB | GPU | GPU memory: GiB | Max data disks | Max NICs / Expected network bandwidth (MBps) |
---|---|---|---|---|---|---|---|
Standard_NV4as_v4 | 4 | 14 | 88 | 1/8 | 2 | 4 | 2 / 1000 |
Standard_NV8as_v4 | 8 | 28 | 176 | 1/4 | 4 | 8 | 4 / 2000 |
Standard_NV16as_v4 | 16 | 56 | 352 | 1/2 | 8 | 16 | 8 / 4000 |
Standard_NV32as_v4 | 32 | 112 | 704 | 1 | 16 | 32 | 8 / 8000 |
1 NVv4-series VMs feature AMD Simultaneous multithreading Technology
NVv4-series – Availability in which Azure datacenter.
AMERICA | EUROPE | ASIA PACIFIC |
East US | North Europe | Japan East |
Soutch Central US | UK South | Australia East |
West US 2 | West Europe | Central India |
North Central US | Southeast Asia | |
US Gov Virginia | Korea Central * | |
Canada Central |
Microsoft is keep adding more datacenter locations with NVv4-series and more capacity is added but to be updated. I highly recommend you goto following URL to see latest availability or what is planned for NVv4-series
NVv4-series – Supported operating systems and drivers
OS | Driver |
---|---|
Windows 10 Enterprise multi-session – Build 1909 Windows 10 – Build 1909 Windows Server 2016 Windows Server 2019 | 20.Q4 (.exe) |
If you are not sure ask Microsoft or an AMD representative.
NVv4-series – Recommended GPO to configure
For all Windows OS to NVv4-series configure a GPO – Select policy Configure H.264/AVC hardware encoding for Remote Desktop connections and set this policy to Enabled to enable hardware encoding for AVC/H.264 in the remote session.
If you often use applications that produce a high-frame rate content, such as 3D modeling, CAD/CAM and video applications, you may choose to enable a fullscreen video encoding for a remote session. Fullscreen video profile provides a higher frame rate and better user experience for such applications at expense of network bandwidth and both session host and client resources. It is recommended to use GPU-accelerated frame encoding for a full-screen video encoding
Configure fullscreen video encoding
Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Remote Session Environment Enabled – Prioritize H.264/AVC 444 Graphics mode for Remote Desktop connections Enabled – Configure H.264/AVC hardware encoding for Remote Desktop connections
Note
GPU-accelerated frame encoding is not available in NVv4-series VMs.
Note If you use build 1903/1909 then you may need to update the following group policy for optimal performance. These changes are not needed for any other Windows builds.
[Computer Configuration->Policies->Windows Settings->Administrative Templates->Windows Components->Remote Desktop Services->Remote Desktop Session Host->Remote Session Environment], set the Policy [Use WDDM graphics display driver for Remote Desktop Connections] to Disabled.
Note In Windows Server 2016, set option Prefer AVC Hardware Encoding to Always attempt.
NVv4-series – AMD GPU driver
You have several choice to install the AMD GPU Driver with either choosing the VM Extensions, Azure Resource Manager Template, Powershell, Teraform or manual. I am only going to cover VM extension and manual method.
NOTE: Make sure you use the latest supported AMD GPU Driver.
Install the AMD GPU Driver with VM Extension
Choose VM extension on virtual machine and click add, then choose AMD GPU extension

Wait a few minutes and the driver will be automatically installed. and you will see it under device manager as explained below under validation of GPU driver.
HINT If you have an older AMD GPU Driver installed with the extension make sure to uninstall before you reinstall the AMD extension

Install the AMD GPU Driver Manually
Login to VM and download and install the latest driver.20.Q4 (.exe), reboot the VM after the GPU driver is installed
Hint – If you need to uninstall the previous driver version then download the AMD cleanup utility here. Please do not use the utility that comes with the previous version of the driver.
Verify the AMD GPU Driver installation
In device manager

Check the version is correct (26.20.13025.5098) which is = .20.Q4 (.exe)
In program and features it says 19.30.25.05

Under “Task manager”
You can validate the AMD CPU

And the AMD GPU

Now you can start working and using the AMD GPU.
NVv4-series – AMD GPU driver supports following APIs
- OpenGL 4.6
- OpenCL™ 2.0
- DirectX® 12.0
- Vulkan® 1.1
To finish of the blog, here is a quickstep for setting up NVv4-series, good luck.

Source
https://docs.microsoft.com/en-us/azure/virtual-machines/nvv4-series
https://docs.microsoft.com/en-us/azure/virtual-machines/extensions/hpccompute-amd-gpu-windows
https://docs.microsoft.com/en-us/azure/virtual-machines/windows/n-series-amd-driver-setup