Product Documentation

WindowsサーバーOSのためのGPUアクセラレーション

Apr 15, 2016

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

HDX 3D Proにより、複数のユーザーがグラフィックカードを共有できるようになります。 HDX 3D ProとXenServerのGPUパススルー機能を使用すると、単一のサーバーで複数のグラフィックカード(各仮想マシンに1つずつ)をホストできるようになります。

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

GPU共有

GPU共有により、リモートデスクトップセッションで動作するOpenGLアプリケーションおよびDirectXアプリケーションでGPUハードウェアによるレンダリング処理が可能になります。これにより、以下の効果があります。
  • ベアメタルまたは仮想マシン上で使用でき、アプリケーションのスケーラビリティとパフォーマンスが向上します。
  • 複数の同時接続セッションでGPUリソースを共有できます(ほとんどのユーザーは専用GPUのレンダリングパフォーマンスを必要としません)。
  • 特別な設定は必要ありません。

複数のGPUを持つグラフィックカードを装着したり、複数のグラフィックカードを装着したりして、ハイパーバイザー上に複数のGPUをインストールして各GPUを特定の仮想マシンに(1対1で)割り当てることができます。 ただし、サーバー上で異なるグラフィックカードを混在させることは推奨されません。

仮想マシンでは、GPUへの直接パススルーアクセスが必要です。この機能は、Citrix XenServerまたはVMware vSphereで提供されます。 HDX 3D ProとGPUパススルーを併用すると、サーバー上の各GPUで単一のマルチユーザー仮想マシンをサポートできます。

GPU共有は、特定のグラフィックカードに依存するものではありません。
  • ハイパーバイザー上では、そのハイパーバイザーのGPUパススルー機能でサポートされるハードウェアプラットフォームとグラフィックカードを選択してください。 XenServerのGPUパススルー機能でテストされたハードウェアの一覧については、「GPU Pass-through Devices」を参照してください。
  • 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.
GPU共有でのスケーラビリティは、以下の要素により異なります。
  • 実行するアプリケーション
  • 消費されるビデオRAMの量
  • グラフィックカードの処理能力

たとえば、NVIDIA Q6000およびM2070Qカードを使用してESRI ArcGISなどのアプリケーションを実行する場合、8~10人のユーザーがサポートされました。 これらのカードでは、6GBのビデオRAMが提供されます。 より新しいNVIDIA GRIDのビデオRAMは8GBで、処理能力も向上しています(より多くのCUDAコアで構成されている)。 NVIDIA GRID K2カードの場合、GRID K2カードあたり最大20人のユーザーで良好なパフォーマンスが得られました。 ほかのアプリケーションを使用する場合のスケーラビリティはさらに高く、上位クラスのGPUで32人の同時ユーザーがサポートされます。

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

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

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

DirectX、Direct3D、およびWPFレンダリングは、DDI(Display Driver Interface)Version 9ex、10、または11をサポートするGPUが搭載されたサーバーでのみ使用可能です。
  • Windows Server 2008 R2では、DirectXおよびDirect3Dで単一GPUを使用するために特別な設定は不要です。
  • Windows Server 2012のRD Session Hostサーバー上のリモートデスクトップサービス(RDS)セッションでは、デフォルトのアダプターとしてMicrosoft基本レンダリングドライバーが使用されます。 Windows Server 2012上のRDSセッションでGPUを使用するには、グループポリシーの[ローカルコンピューターポリシー]>[コンピューターの構成]>[管理用テンプレート]>[Windowsコンポーネント]>[リモートデスクトップサービス]>[リモートデスクトップセッションホスト]>[リモートセッション環境]で[Use the hardware default graphics adapter for all Remote Desktop Services sessions]を有効にします。
  • 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アクセラレーション機能を有効にするには、以下のレジストリを設定します。
  • [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