Citrix Virtual Apps and Desktops

WindowsマルチセッションOSのためのGPUアクセラレーション

HDX 3D Pro機能により、WindowsマルチセッションOSのセッションで実行しているグラフィック処理アプリケーションで、サーバー上のGPU(Graphics Processing Unit)リソースを使用できるようになります。OpenGL、DirectX、Direct3D、およびWindows Presentation Foundation(WPF)の処理をサーバーのGPUに移すことで、グラフィック処理によりサーバーのCPU速度が低下することを回避できます。また、ワークロードがCPUとGPUで分担されるため、サーバーでより多くのグラフィック処理が可能になります。

Windows Serverはマルチユーザーオペレーティングシステムなので、GPU仮想化(vGPU)を行わなくても、Citrix Virtual AppsがアクセスするGPUを複数のユーザーで共有できます。

このトピックの説明にはレジストリの編集が含まれています。レジストリエディターの使用を誤ると、深刻な問題が発生する可能性があり、Windowsの再インストールが必要になる場合もあります。レジストリエディターの誤用による障害に対して、シトリックスでは一切責任を負いません。レジストリエディターは、お客様の責任と判断の範囲でご使用ください。また、レジストリファイルのバックアップを作成してから、レジストリを編集してください。

GPU共有

GPU共有により、リモートデスクトップセッションで動作するOpenGLアプリケーションおよびDirectXアプリケーションでGPUハードウェアによるレンダリング処理が可能になります。GPU共有には、以下の特徴があります:

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

GPUは、ハイパーバイザーとGPUベンダーの要件に従って、完全パススルーモードまたは仮想GPU(vGPU)モードのいずれかで、Windows Server仮想マシンに割り当てることができます。物理Windows Serverマシンでのベアメタル展開もサポートされています。

GPU共有は、特定のグラフィックカードに依存するものではありません。

  • 仮想マシンの場合は、使用中のハイパーバイザーと互換性のあるグラフィックカードを選択します。Citrix Hypervisorのハードウェア互換性リストについては、「Hypervisorハードウェア互換性リスト」を参照してください 。
  • ベアメタルを実行するときは、オペレーティングシステムで単一のディスプレイアダプターを有効にすることをお勧めします。複数のGPUがハードウェアに取り付けられている場合は、デバイスマネージャーを使用して1つだけ残して無効にします。

GPU共有でのスケーラビリティは、以下の要素により異なります。

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

一部のアプリケーションでは、ビデオRAMの不足をより効果的に処理できます。ハードウェアが過負荷になると、グラフィックカードドライバーが不安定になるか、クラッシュが発生する可能性があります。このような問題を避けるには、同時接続ユーザーの数を制限してください。

GPUアクセラレーションが正しく動作しているかどうかを確認するには、GPU-Zなどのサードパーティ製ツールを使用できます。このツールは、http://www.techpowerup.com/gpuz/で提供されています。

  • NVIDIA GPUの高パフォーマンスビデオエンコーダーとIntel Iris Proグラフィックプロセッサへのアクセス。ポリシー設定(デフォルトで有効)によりこの機能を制御し、H.264エンコーディングのハードウェアエンコーディングを許可します(利用可能な場合)。該当するハードウェアが利用可能でない場合、VDAはソフトウェアビデオコーデックを使用して、CPUベースのエンコーディングにフォールバックします。詳しくは、「グラフィックのポリシー設定」を参照してください。

DirectX、Direct3D、およびWPFレンダリング

DirectX、Direct3D、およびWPFレンダリングは、DDI(Display Driver Interface)Version 9ex、10、または11をサポートするGPUが搭載されたサーバーでのみ使用可能です。

  • Windows Server 2008 R2では、DirectXおよびDirect3Dで単一GPUを使用するために特別な設定は不要です。
  • Windows Server 2016およびWindows Server 2012のRD Session Hostサーバー上のリモートデスクトップサービス(RDS)セッションでは、デフォルトのアダプターとしてMicrosoft基本レンダリングドライバーが使用されます。Windows Server 2012上のRDSセッションでGPUを使用するには、グループポリシーの [ローカルコンピューターポリシー]>[コンピューターの構成]>[管理用テンプレート]>[Windowsコンポーネント]>[リモートデスクトップサービス]>[リモートデスクトップセッションホスト]>[リモートセッション環境][すべてのリモートデスクトップサービスセッションにハードウェアの既定のグラフィックスアダプターを使用する] を有効にします。
  • WPFアプリケーションでのレンダリングにサーバーのGPUが使用されるようにするには、Windowsマルチセッション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マルチセッションOSのためのGPUアクセラレーション