• Full GPU Resource Utilization
• Cad/Cam/PLM
• Gaming
• HPC/Compute
1Power
Users
• High Burst GPU
Utilization
• Designer apps
• Data Visualization
2Professional Users
• Minimal GPU
Utilization
• Data Entry/LOB
• Web Browser
3Knowledge Worker
GPURequirementsPerApplication
User Scale
SingleSession
Client/ServerVM
Multi-SessionOr
AppRemoting
Virtualization Options with Hyper-V
HARDWARE PASS-THROUGH
(Discrete Device Assignment)
IHV
Driver
IHV
Driver
GPU GPU 1
2
3
PARAVIRTUALIZATION
(RemoteFX - vGPU)
MS vGPU
Driver
MS vGPU
Driver
GPU
1
2
3
Azure’s Initial Offering
SOFTWARE GPU
(WARP)
WARP WARP
CPU 1
2
3
Configuration Powershell Commands
VM Preparation #Set automatic stop action to TurnOff
Set-VM -Name $vm -AutomaticStopAction TurnOff
#Enable Write-Combining on the CPU
Set-VM -GuestControlledCacheTypes $true -VMName $vm
#Configure 32 bit MMIO space
Set-VM -LowMemoryMappedIoSpace 3Gb -VMName $vm
#Configure Greater than 32 bit MMIO space
Set-VM -HighMemoryMappedIoSpace 33280Mb -VMName $vm
Host #Dismount the device as a Display adapter from the Host
Dismount-VMHostAssignableDevice -force -LocationPath $locationPath
Assignment to VM #Assign the device to the guest VM.
Add-VMAssignableDevice -LocationPath $locationPath -VMName $vm
Group Policy in VM
for Remote
Desktop
For Windows Server 2012 R2/Windows Server 2016 only:
• Open the Group Policy Editor: gpedit.msc
• Navigate the tree: Computer Configuration -> Administrator Templates -> Windows Components ->
Remote Desktop Services -> Remote Desktop Session Host -> Remote Session Environment -> Use
the hardware default graphics adapter for all Remote Desktop Services sessions
• Configure the Policy to be "Enabled"
Hyper-V Manager Powershell Commands
Configure the Guest VM • Get-VMRemoteFx3dVideoAdapter [-VM] <VirtualMachine[]>
[<CommonParameters>]
• Set-VMRemoteFx3dVideoAdapter [-VMName] <string[]> [[-MonitorCount]
<byte>] [[-MaximumResolution] <string> {1024x768 | 1280x1024 |
1600x1200 | 1920x1200 | 2560x1600}] [[-VRAMSizeBytes] <uint64>
{67108864 | 134217728 | 268435456 | 536870912 | 1073741824}] [-
Passthru] [-ComputerName <string[]>] [-WhatIf] [-Confirm]
[<CommonParameters>]
Example: Set-VMRemoteFX3dVideoAdapter mytestvm 2 1920x1200 1024MB
Host Hyper-V • Get-VMRemoteFXPhysicalVideoAdapter [[-Name] <string[]>] [-
ComputerName <string[]>] [-Credential <pscredential[]>]
[<CommonParameters>]
• Set-VMRemoteFx3dVideoAdapter [-VM] <VirtualMachine[]> [[-
MonitorCount] <byte>] [[-MaximumResolution] <string>]
• [[-VRAMSizeBytes] <uint64>] [-Passthru] [-WhatIf] [-
Confirm][<CommonParameters>]
4:2:0 4:4:4
NV6 NV12 NV24 NC6 NC12 NC24 NC24r
Cores 6
(E5-2690v3)
12
(E5-2690v3)
24
(E5-2690v3)
6
(E5-2690v3)
12
(E5-2690v3)
24
(E5-2690v3)
24
(E5-2690v3)
GPU 1 x M60 GPU
(1/2 Physical
Card)
2 x M60 GPU
(1 Physical
Card)
4 x M60 GPU
(2 Physical
Cards)
1 x K80 GPU
(1/2 Physical
Card)
2 x K80 GPU
(1 Physical
Card)
4 x K80 GPU
(2 Physical
Cards)
4 x K80 GPU
(2 Physical
Cards)
Memory 56 GB 112 GB 224 GB 56 GB 112 GB 224 GB 224 GB
Disk ~380 GB SSD ~680 GB SSD ~1.5 TB SSD ~380 GB SSD ~680 GB SSD ~1.5 TB SSD ~1.5 TB SSD
Network Azure
Network
Azure
Network
Azure
Network
Azure
Network
Azure
Network
Azure
Network
Azure
Network +
(RoCE)
S6839 - Leveraging Microsoft Azure's GPU N-Series for Compute Workloads and Visualization
Feature RemoteFX vGPU DDA
Scale 1 GPU to Many VMs 1 or more GPU’s to 1 VM
App Compatibility DX 11.1, OpenGL 4.4, OpenCL 1.1 All GPU Capabilities provided by vendor
(DX 12, OpenGL, CUDA, etc)
AVC444 Enabled By Default (Win10/Srv2016) Available through Group Policy
(Win10/Srv2016)
GPU VRAM Up to 1 GB VRAM GPU
GPU Driver in Guest RemoteFX 3D Adapter Display Driver
(Microsoft)
GPU Vendor Driver (Nvidia)
Guest OS Support W7sp1, Win10, Server 2012r2, Server
2016
Linux, Windows 10, Server 2012r2*,
Server 2012
Hypervisor Microsoft Hyper-V
Host OS Availability Server 2012r2, Server 2016, Windows 10 Server 2016
GPU Hardware “Enterprise” GPUs (Quadro, GRID)
Server Hardware No Special requirements Modern Server, exposes IOMMU to
OS (usually SR-IOV compliant
hardware)
https://blogs.msdn.microsoft.com/rds/2014/11/05/remotefx-vgpu-updates-in-
windows-server-next/
http://social.technet.microsoft.com/wiki/contents/articles/31771.experience-
guide-for-enabling-opengl-support-for-vgpu-in-server-2016.aspx
https://blogs.msdn.microsoft.com/rds/2016/01/11/remote-desktop-protocol-rdp-10-avch-264-
improvements-in-windows-10-and-windows-server-2016-technical-preview/
https://technet.microsoft.com/en-us/library/mt608570.aspx
http://blogs.technet.com/b/virtualization/archive/2015/11/19/discrete-device-
assignment.aspx
http://blogs.technet.com/b/virtualization/archive/2015/11/20/discrete-device-
assignment-machines-and-devices.aspx
http://blogs.technet.com/b/virtualization/archive/2015/11/23/discrete-device-assignment-
gpus.aspx
https://github.com/Microsoft/Virtualization-Documentation/tree/master/hyperv-
samples/benarm-powershell/DDA
s6196-chris-huybregts-microsoft-new-gpu-virtualization-technologies

s6196-chris-huybregts-microsoft-new-gpu-virtualization-technologies