Product Documentation

Windows Server 操作系统 GPU 加速

Feb 23, 2016

通过 HDX 3D Pro,在 Windows Server 操作系统会话中运行的图形密集型应用程序可以在服务器的图形处理器 (GPU) 上呈现。 通过将 OpenGL、DirectX、Direct3D 和 Windows Presentation Foundation (WPF) 呈现移到服务器的 GPU 上,服务器的 CPU 不会因图形呈现而变慢。 此外,服务器还能够处理更多图形,因为工作负载在 CPU 和 GPU 之间进行了拆分。

使用 HDX 3D Pro 时,多个用户可以共享图形卡。 当 HDX 3D Pro 与 XenServer GPU 直通结合使用时,单台服务器可托管多个图形卡,每个虚拟机托管一个。

有关涉及到编辑注册表的过程,请注意:注册表编辑不当会导致严重问题,可能需要重新安装操作系统。 Citrix 无法保证因“注册表编辑器”使用不当导致出现的问题能够得以解决。 使用“注册表编辑器”需自担风险。 在编辑注册表之前,请务必进行备份。

GPU Sharing

GPU Sharing 使 GPU 硬件可以在远程桌面会话中呈现 OpenGL 和 DirectX 应用程序;它具有以下特点:
  • 可用于裸机或虚拟机,以提高应用程序的可扩展性及性能。
  • 启用多个并发会话以共享 GPU 资源(大多数用户并不需要专用 GPU 的呈现性能)。
  • 无需任何特殊设置。

对于 DirectX 应用程序,默认情况下仅使用一个 GPU。 该 GPU 由多个用户共享。 通过 DirectX 在多个 GPU 之间分配会话的功能尚处实验阶段,需要更改注册表。 有关详细信息,请与 Citrix 技术支持人员联系。

可以在虚拟机管理程序上安装多个 GPU,并将 VM 一对一地分配给每个 GPU:方法是安装一个配备有多个 GPU 的图形卡,或者安装多个分别配备一个或多个 GPU 的图形卡。 建议不要在服务器上混合使用异类图形卡。

虚拟机需要直接传递访问 GPU,这可通过使用 Citrix XenServer 或 VMware vSphere 实现。 当 HDX 3D Pro 与 GPU 直通结合使用时,服务器中的每个 GPU 支持一台多用户虚拟机。

GPU Sharing 不依赖任何特定的图形卡。
  • 在虚拟机管理程序上运行时,请选择与虚拟机管理程序的 GPU 直通实现兼容的硬件平台和图形卡。 有关已通过 XenServer GPU 直通证书测试的硬件列表,请访问 GPU 直通设备
  • 当系统在裸机上运行时,会在满足条件的多个 GPU 之间分配用户会话。 为了确保所有已安装的 GPU 都符合条件,请使用相同的 GPU。
使用 GPU Sharing 的可扩展性取决于多个因素:
  • 正在运行的应用程序
  • 占用的视频 RAM 量
  • 图形卡的处理能力

例如,对于运行 ESRI ArcGIS 等应用程序的 NVIDIA Q6000 和 M2070Q 卡,已报告具有 8 至 10 位用户的可扩展性。 这些卡提供 6 GB 的视频 RAM。 较新的 NVIDIA GRID 卡提供 8 GB 的视频 RAM 和显著提高的处理能力(更多 CUDA 核心)。 使用 NVIDIA GRID K2 卡时,每个 GRID K2 卡支持 20 用户时可实现良好的性能。 其他应用程序可能会提高更多,在高端 GPU 上达到 32 个并发用户。

一些应用程序处理视频 RAM 短缺的能力要优于其他应用程序。 如果硬件严重过载,可能会导致图形卡驱动程序不稳定或崩溃。 可限制并发用户的数量,以避免此类问题。

可以使用第三方工具(如 GPU-Z)来确定是否已实现 GPU 加速。 GPU-Z 可从 http://www.techpowerup.com/gpuz/ 获取。

DirectX、Direct3D 和 WPF 呈现

DirectX、Direct3D 和 WPF 呈现仅在具有支持显示驱动程序接口 (DDI) 9ex、10 或 11 版的 GPU 的服务器上可用。
  • 在 Windows Server 2008 R2 上,DirectX 和 Direct3D 不需要特殊设置即可使用单个 GPU。
  • 在 Windows Server 2012 上,RD 会话主机服务器上的远程桌面服务 (RDS) 会话将 Microsoft 基本呈现驱动程序用作默认适配器。 要在 Windows Server 2012 上的 RDS 会话中使用 GPU,请启用组策略“本地计算机策略”>“计算机配置”>“管理模板”>“Windows 组件”>“远程桌面服务”>“远程桌面会话主机”>“远程会话环境”中的对所有远程桌面服务会话使用硬件默认图形适配器
  • 在 Windows Server 2008 R2 和 Windows Server 2012 上,默认情况下,所有会话中运行的所有 DirectX 和 Direct3D 应用程序使用同一 GPU。 要为 DirectX 和 Direct3D 应用程序启用对跨所有满足条件的 GPU 分发用户会话的实验性支持功能,请在运行 Windows 服务器操作系统会话的服务器的注册表中创建以下设置:
    • [HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\Graphics Helper] "DirectX"=dword:00000001
    • [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\CtxHook\AppInit_Dlls\Graphics Helper] "DirectX"=dword:00000001
  • 要能够使用服务器的 GPU 呈现 WPF 应用程序,请在运行 Windows 服务器操作系统会话的服务器的注册表中创建以下设置:
    • [HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\Multiple Monitor Hook] "EnableWPFHook"=dword:00000001
    • [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\CtxHook\AppInit_Dlls\ Multiple Monitor Hook] "EnableWPFHook"=dword:00000001

面向 CUDA 或 OpenCL 应用程序的实验性 GPU 加速功能

支持对用户会话中运行的 CUDA 和 OpenCL 应用程序进行 GPU 加速(实验阶段)。 默认情况下,会禁用此支持功能,但可以启用该功能以进行测试和评估。

要使用 CUDA 加速功能(实验阶段),请启用以下注册表设置:
  • [HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\Graphics Helper] "CUDA"=dword:00000001
  • [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\CtxHook\AppInit_Dlls\Graphics Helper] "CUDA"=dword:00000001
要使用 OpenCL 加速功能(实验阶段),请启用以下注册表设置:
  • [HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\CtxHook\AppInit_Dlls\Graphics Helper] "OpenCL"=dword:00000001
  • [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\CtxHook\AppInit_Dlls\Graphics Helper] "OpenCL"=dword:00000001