XenApp and XenDesktop

Windows Server オペレーティングシステム の GPU アクセラレーション

HDX™ 3D Pro を使用すると、Windows Server OS セッションで実行されているグラフィック負荷の高いアプリケーションを、サーバーのグラフィック処理ユニット (GPU) でレンダリングできます。OpenGL、DirectX、Direct3D、および Windows Presentation Foundation (WPF) のレンダリングをサーバーの GPU に移行することで、サーバーの CPU がグラフィックレンダリングによって遅くなることはありません。さらに、ワークロードが CPU と GPU の間で分割されるため、サーバーはより多くのグラフィックを処理できます。

Windows Server はマルチユーザーオペレーティングシステムであるため、XenApp® によってアクセスされる GPU は、GPU 仮想化 (vGPU) を必要とせずに複数のユーザーで共有できます。

レジストリの編集を伴う手順については、注意してください。レジストリを誤って編集すると、オペレーティングシステムの再インストールが必要になるような深刻な問題が発生する可能性があります。Citrix® は、レジストリエディターの誤った使用によって生じる問題が解決できることを保証できません。レジストリエディターは自己責任で使用してください。編集する前に必ずレジストリをバックアップしてください。

GPU 共有

GPU 共有により、リモートデスクトップセッションで OpenGL および DirectX アプリケーションの GPU ハードウェアレンダリングが可能になります。その特徴は次のとおりです。

  • アプリケーションのスケーラビリティとパフォーマンスを向上させるために、ベアメタルまたは仮想マシンで使用できます。
  • 複数の同時セッションで GPU リソースを共有できます (ほとんどのユーザーは専用 GPU のレンダリングパフォーマンスを必要としません)。
  • 特別な設定は不要です。

ハイパーバイザーに複数の GPU をインストールし、これらの GPU のそれぞれに VM を 1 対 1 で割り当てることができます。これには、複数の GPU を搭載したグラフィックカードをインストールするか、それぞれに 1 つ以上の GPU を搭載した複数のグラフィックカードをインストールします。サーバー上で異種グラフィックカードを混在させることは推奨されません。

仮想マシンは、GPU への直接パススルーアクセスを必要とします。これは、Citrix XenServer®、VMware vSphere vDGA、および Intel GVT-d で利用できます。HDX 3D Pro を GPU パススルーで使用する場合、サーバー内の各 GPU は 1 つのマルチユーザー仮想マシンをサポートします。

GPU 共有は、特定のグラフィックカードに依存しません。

  • ハイパーバイザーで実行する場合は、ハイパーバイザーの GPU パススルー実装と互換性のあるハードウェアプラットフォームとグラフィックカードを選択してください。XenServer GPU パススルーで認定テストに合格したハードウェアのリストは、GPU Passthrough Devices で入手できます。
  • ベアメタルで実行する場合は、オペレーティングシステムによって有効化された単一のディスプレイアダプターを使用することをお勧めします。ハードウェアに複数の GPU がインストールされている場合は、デバイスマネージャーを使用して、1 つを除くすべての GPU を無効にしてください。

GPU 共有を使用したスケーラビリティは、いくつかの要因に依存します。

  • 実行されているアプリケーション
  • それらが消費するビデオRAMの量
  • グラフィックカードの処理能力

一部のアプリケーションは、他のアプリケーションよりもビデオRAM不足をうまく処理します。ハードウェアが極度に過負荷になると、グラフィックカードドライバーの不安定化やクラッシュを引き起こす可能性があります。このような問題を避けるために、同時実行ユーザーの数を制限してください。

GPUアクセラレーションが機能していることを確認するには、GPU-Zなどのサードパーティツールを使用します。GPU-Zはhttps://www.techpowerup.com/gpuz/で入手できます。

ダイレクトエックス、ダイレクトスリーディー、およびダブリューピーエフのレンダリング

DirectX、Direct3D、およびWPFレンダリングは、ディスプレイドライバーインターフェイス (DDI) バージョン9ex、10、または11をサポートするGPUを搭載したサーバーでのみ利用可能です。

  • Windows Server 2008 R2では、DirectXとDirect3Dは単一のGPUを使用するために特別な設定を必要としません。
  • Windows Server 2016およびWindows Server 2012では、RDセッションホストサーバー上のRemote Desktop Services (RDS) セッションは、Microsoft Basic Render Driverをデフォルトのアダプターとして使用します。Windows Server 2012のRDSセッションでGPUを使用するには、グループポリシーの「ローカルコンピューターポリシー > コンピューターの構成 > 管理用テンプレート > Windowsコンポーネント > Remote Desktop Services > リモートデスクトップセッションホスト > リモートセッション環境」にある「すべてのRemote Desktop Servicesセッションでハードウェアのデフォルトグラフィックアダプターを使用する」設定を有効にします。
  • WPFアプリケーションがサーバーのGPUを使用してレンダリングできるようにするには、Windows Server OSセッションを実行しているサーバーのレジストリに次の設定を作成します。
    • [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アクセラレーションPOC機能を使用するには、次のレジストリ設定を有効にします。

  • [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 アクセラレーション POC 機能を使用するには、次のレジストリ設定を有効にします。

  • [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
Windows Server オペレーティングシステム の GPU アクセラレーション