Citrix Virtual Apps and Desktops

GPU acceleration for Windows multi-session OS

Citrix Virtual Apps and Desktops support graphics-heavy applications running in Windows Multi-session OS sessions to render on the server’s graphics processing unit (GPU). By moving OpenGL, DirectX, Direct3D, and Windows Presentation Foundation (WPF) rendering to the server’s GPU, the server’s CPU can be used more efficiently.

Since Windows Server is a multi-user operating system, multiple users can share a GPU accessed by Citrix Virtual Apps without the need for GPU virtualization (vGPU).

For procedures that involve editing the registry, use caution: Editing the registry incorrectly can cause serious problems that might require you to reinstall your operating system. Citrix cannot guarantee that problems resulting from the incorrect use of Registry Editor can be solved. Use Registry Editor at your own risk. Be sure to back up the registry before you edit it.

GPU sharing

GPU Sharing enables GPU hardware rendering of OpenGL and DirectX applications in remote desktop sessions. It has the following characteristics:

  • Can be used on bare metal or virtual machines to increase application scalability and performance.
  • Enables multiple concurrent sessions to share GPU resources (most users do not require the rendering performance of a dedicated GPU).
  • Requires no special settings.

A GPU can be assigned to the Windows Server virtual machine in either full pass-through or virtual GPU (vGPU) modes following Hypervisor and GPU vendor requirements. Bare-metal deployments on physical Windows Server machines are also supported.

GPU Sharing does not depend on any specific graphics card.

  • For virtual machines, select a graphics card that is compatible with the Hypervisor in use. For a XenServer hardware compatibility list, see Hypervisor Hardware Compatibility List.
  • When running on bare metal, it is recommended to have a single display adapter enabled by the operating system. If multiple GPUs are installed on the hardware, disable all but one of them using Device Manager.

Scalability using GPU Sharing depends on several factors:

  • The applications being run
  • The amount of video RAM they consume
  • The graphics card’s processing power

Some applications handle video RAM shortages better than others. If the hardware becomes overloaded, instability or a crash of the graphics card driver might occur. Limit the number of concurrent users to avoid such issues.

  • Access to a high-performance video encoder for NVIDIA GPUs and Intel Iris Pro graphics processors. A policy setting (enabled by default) controls this feature and allows the use of hardware encoding for H.264 encoding (where available). If such hardware is not available, the VDA falls back to CPU-based encoding using the software video codec. For more information, see Graphics policy settings.

To confirm that GPU acceleration is occurring, the Graphics Status Indicator can be used:

Graphics Indicator

DirectX, Direct3D, and WPF rendering

DirectX, Direct3D, and WPF rendering are only available on servers with a GPU that supports a display driver interface (DDI) version of 9ex, 10, or 11.

  • On Windows Server 2016 and later, Remote Desktop Services (RDS) sessions on the RD Session Host server use the Microsoft Basic Render Driver as the default adapter. To use the GPU in RDS sessions on Windows Server 2016 and later, enable the Use the hardware default graphics adapter for all Remote Desktop Services sessions setting in the group policy Local Computer Policy > Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Remote Session Environment.
  • To enable WPF applications to render using the server’s GPU, create the settings in the registry of the server running Windows Multi-session OS sessions. For information on the registry setting, see Windows Presentation Foundation (WPF) rendering in the list of features managed through the registry.

GPU acceleration for CUDA or OpenCL applications

GPU acceleration of CUDA and OpenCL applications running in a user session is disabled by default.

To use the CUDA acceleration features, enable the registry settings. For information, see GPU acceleration for CUDA or OpenCL applications in the list of features managed through the registry.

GPU acceleration for Windows multi-session OS