web-dev-qa-db-ja.com

NVIDIA Xサーバー設定でNVIDIA On-Demandオプションがどのように機能しますか?

Ubuntu 19.10にNvidia独自のドライバーをインストールしました。
プライムプロファイルセクションには、3つのオプションがあります。
* NVIDIA(パフォーマンスモード)
* NVIDIA On-Demand
* Intel(省電力モード)

最初と最後のオプションは非常に明白ですが、2番目のオプションがどのように機能するかわかりません。どのアプリケーションがNVIDIAドライバーを必要とし、どれを必要としないかをどのように検出しますか?

15
Md Narimani

From: パートI.インストールと構成の手順

第35章PRIMEレンダーオフロード

PRIMEレンダーオフロードは、1つのGPUでX画面をレンダリングする機能ですが、そのX画面内の特定のアプリケーションを選択して、別のGPUでレンダリングします。これは、パフォーマンスに敏感な特定のアプリケーションをレンダリングする必要がある場合を除いて、NVIDIA GPUの電源をオフにしたままにする動的電源管理と組み合わせると特に便利です。

X画面の大部分をレンダリングするGPUは「シンク」と呼ばれ、特定のアプリケーションレンダリングが「オフロード」されるGPUは「ソース」と呼ばれます。レンダーオフロードソースは、レンダーオフロードシンクに表示されるコンテンツを生成します。 NVIDIAドライバーは、PRIMレンダーオフロードソースとして機能し、GLF + OpenGLまたはVulkanのレンダリングをオフロードして、xf86-video-modesetting Xドライバーによって駆動されるX画面に表示できます。

Xサーバーの要件

NVIDIAのPRIMEレンダーオフロードサポートでは、X.Org Xサーバーで次のgitコミットが必要です。

  • 7f962c70-xsync:SyncCreate内にリソースを追加し、SyncCreateをエクスポートします

  • 37a36a6b-GLX:クライアントごとのベンダーマッピングを追加

  • 8b67ec7c-GLX:送信クライアントを使用してXIDを検索する

  • 56c0a71f-GLX:クライアントベンダーリストを変更する関数を追加

  • b4231d69-GLX:GlxServerExports :: {major、minor} Versionを設定します

これを書いている時点では、これらのコミットはX.Org Xサーバーのマスターブランチにのみあり、公式のX.Org Xサーバーリリースにはまだありません。

5

わかりました。やっとわかりました。この瞬間、NVIDIAはOpenGLアプリとVolkanアプリのレンダリングをオフロードできるようです。
このオフロードレンダリングを有効にするには、Primeプロファイルを「オンデマンド」にする必要があります。次に、volkanオフロードの場合は、この変数をetc/environmentファイル:
__NV_PRIME_RENDER_OFFLOAD=1

OpenGLアプリの場合、次の変数を配置する必要があります。
__NV_PRIME_RENDER_OFFLOAD=1
__GLX_VENDOR_LIBRARY_NAME=nvidia

再起動後、レンダリングのオフロードが開始されます。

使用されているグラフィックカードを確認するには、ターミナルで次のコマンドを入力します。
glxinfo | grep vendor

11
Md Narimani

Md Narimani answer の拡張として:これは、nvidiaドライバーバージョン440を使用するkubuntu 19.10で実際に機能していることを確認できます

いくつかの背景情報は にあります第34章PRIMEレンダーオフロード

gUIでも「オンデマンド」オプションを設定できます:Nvidia X Server Settings - PRIME Profiles: NVIDIA On-Demand
enter image description here その後、再起動します。

その後、コマンドラインから直接、環境変数を使用してアプリケーションを起動できます。これにより、必要に応じてGPUを切り替えることができます。

stefan@stefan-Zen:~$ glxheads :0
Name: :0
  Display:     0x556081a45d40
  Window:      0x7000002
  Context:     0x556081a64a70
  GL_VERSION:  3.0 Mesa 19.2.8
  GL_VENDOR:   Intel Open Source Technology Center
  GL_RENDERER: Mesa DRI Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2) 
stefan@stefan-Zen:~$ __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxheads :0
Name: :0
  Display:     0x55f6dd9097a0
  Window:      0x7000002
  Context:     0x55f6dd944878
  GL_VERSION:  4.6.0 NVIDIA 440.64
  GL_VENDOR:   NVIDIA Corporation
  GL_RENDERER: GeForce RTX 2060/PCIe/SSE2

4
Stefan Krüger