web-dev-qa-db-ja.com

igpuをxserverに、nvidia gpuをcudaに設定する方法は?

Ubuntu 16.04

uname -aの出力:

Linux Host 4.4.0-22-generic #40-Ubuntu SMP Thu May 12 22:03:46 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

デスクトップグレード:

  • CPU:Intel
  • GPU:361.42のNvidia

私が欲しいもの:

  • intel GPUは、オンボードDPに接続されているxserverとモニターを実行します。
  • nvidia GPUは、CUDA固有の計算などにのみ使用されます。
  • nvidia GPUを完全に制御(リアルタイム、統計、温度ファンの速度...)

私の問題:

  • nvidia-sminvidia-settingsも動作せず、nvidia GPUを制御できません(エラーはさらに下に引用されています)

私の物語:

私の問題の短い要約の後、トピックに飛び込みたい。 Ubuntu 16.04のリリース以来、私はいじくり回しており、次のことを達成できていません。

  • インテルGPU(i7 6700K)がXserverとそれに関連するすべてのものを駆動するようにします。
  • 専用のnvidia GPUは、Cudaベースの計算などにのみ使用したいです。
  • 問題を解決した後、システムに複数のnvidia GPUを追加します。

私の初期状態の短い要約:

Apt-getを介してnvidiaとintel(intel-microcodeとnvidia-361.42)の専用ドライバーをインストールし、mokutul --disable-validationを介してセキュアブートを無効にしました。
次に、Intelカードを使用するようにnvidia-primeを設定しました。
次に、xorg.confを編集して、intel gpuとintelドライバーを含む1つの画面のみを表示しました。 (必要に応じて詳細をお尋ねください)
GPUをBlenderでレンダリングするためにテストしたところ、すべてが正常に見えましたが、gpuの統計情報を取得できず、nvidia-settingsが空に見えました。

エラー:

Sudo nvidia-smi
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system:
Please also try adding directory that contains libnvidia-ml.so to your system PATH.

リリース以来、これまでのすべての試みと研究を通して学んだこと(短いバージョン、いつでも詳細を尋ねる):

私の2つの問題は関連していますが、同じではありません。

Nvidia-settings Empty:

  • これは、nvidia GPUにXserverが接続されている場合にのみこれらの設定が表示されるためです
  • これに対する解決策は、xorg.confに新しい画面を追加して、未使用のxserverをnvidia GPUで実行することです。
  • しかし、これは現在可能ではなく(他の問題を参照)、望ましくありません。純粋にnvidia GPUにCudaに焦点を合わせたいので

Nvidia-smiが機能しない:

  • 私のGPU(550ti)はそれをサポートしていないため、bbswitchは問題ではありません(dmesgのエラー)
  • nvidia primeは、x86_64-linux-gnu_gl_confのエントリを/usr/lib/nvidia-361/ld.so.conf(nvidia GPUを選択)または/usr/lib/nvidia-361-prime/ld.so.conf(intel GPUを選択)に変更します
  • インテル選択の構成には、すべてのnvidia選択のconfに存在する必須のnvidiaモジュールへの必須のパスがありません。
  • prime-selectを介してnvidiaに切り替えると、ディスプレイが統合GPUに接続されているためXserverがありませんが、仮想コンソールでログインするとnvidia-smiは機能します

私の仮定:

  • Nvidiaプライムは悪く、私が望む方法を望んでいません。
  • 私は何らかの形で素数を克服し、システムを構成する必要があります(手動で新しい構成を作成することもできますか?)

私の試み:

  • Nvidia-primeをアンインストールしようとしましたが、後になって初めて、これが機能しないことを認識しました。 x86_64-linux-gnu_gl_confのconfファイルが削除されると、結果は完全に混乱します...
  • 不足しているパスをx86_64-linux-gnu_gl_confファイルに手動で追加することも試みましたが、何をしているのかよく分からず、成功しませんでした。

私の質問:

1)nvidia-smi問題を解決するにはどうすればよいですか?私は正しい軌道に乗っていますか?誰かが私がどのように進めることができるかについての指示を持っていますか?

2)gpuのXserverなしで(xorg.confのgpuの画面なしで)nvidia gpu(xorg.confのcoolbits)のファン制御と追加制御を有効にすることは可能ですか?

返事に対して事前に感謝します。私は文字通りウェブをとかしました、くしは私の問題です。
重要な情報を見逃した場合は、ログファイルなどを要求することをtellしないでください。

ありがとう

画像

追加のドライバータブ画像: enter image description here

10
winnetou

受け入れられた回答は、Xサーバーを使用してNvidiaデバイスを有効にします。これは必要ではなく、Xサーバーがカードのメモリを使用することを意味します。

代わりに、ドライバーFAQで説明されているようにnvidia-modprobeをインストールする必要があります(以下のリンクにあります)。

私の推奨する解決策は次のとおりです。

1) ftp://download.nvidia.com/XFree86/Linux-x86_64/ のrunfileを使用して、--no-opengl-filesおよび--dkmsフラグを指定して、最新のNvidiaドライバーをインストールします。
2) ftp://download.nvidia.com/XFree86/nvidia-modprobe/ からnvidia-modprobeおよびmake allを介して対応するSudo make installバージョンをインストールします

--dkmsフラグは、カーネルをアップグレードするときにカーネルモジュールが確実に再コンパイルされるようにします。

3
leezu

私(この投稿の作成者)は、自分で必要な解決策を見つけました!

同様の状況にあり、このヘルプを必要とする他の人のためのソリューションを説明します!

解決:
NVIDIAドライバーのインストールVIA提供されるRUNFILE AT http://www.nvidia.com/object/unix.html FLAG "--no-opengl-files" !!

これは、nvidia openglファイルが既存のmesaファイルを上書きするのを防ぐだけでなく、nvidia primeなしでドライバーをインストールします!!

したがって、リポジトリからドライバーをインストールするのではなく、ドライバーを手動でインストールするだけで、私の問題はすべて解決されます。リポジトリからのパッケージは「Optimus-Friendly」であるため、無駄なトラブルメーカーがすべてバンドルされています。

二度目

xorg.confを専用GPU用の別の画面で拡張して、nvidia-settingsにエントリがあるようにします。

私のはこんな感じ

Section "ServerLayout"
    Identifier     "Layout0"
    Screen 0       "intel" 0 0
    Screen 1       "nvidia550ti" 3000 0
EndSection

Section "Device"
    Identifier     "intel"
    Driver         "intel"
    BusID          "PCI:0@0:2:0"
EndSection

Section "Device"
    Identifier     "nvidia550ti"
    Driver         "nvidia"
    BoardName      "GeForce GTX 550ti"
    BusID          "PCI:2@0:0:0"
EndSection

Section "Screen"
    Identifier     "intel"
    Device         "intel"
EndSection

Section "Screen"
    Identifier     "nvidia550ti"
    Device         "nvidia550ti"
    Option         "AllowEmptyInitialConfiguration" "on"
    Option         "Coolbits" "4"
    Option         "ConstrainCursor" "on"
EndSection
3
winnetou

上記のソリューションで述べたように、openglなしでnvidiaドライバーを再インストールしましたが、うまくいきませんでした。さらに、これらのソリューションは、ドライバの一部の機能(opengl)を削除することを意味するため、非常に不十分です。

ドライバーを再インストールする必要のない、はるかに簡単なソリューションを見つけました。

  • Nvidiaドライバーを正常にインストールしました
  • Nvidia-settings gui、PRIME untunderプロファイルでは、Intel GPUをメインGPUとして選択します
  • 再起動後、nvidia-smiは機能しませんが、ライブラリパスに/ usr/lib/nvidia-387を追加して修正しました。
    export LD_LIBRARY_PATH=/usr/lib/nvidia-387:$LD_LIBRARY_PATH

インストールされているドライバーによっては、ライブラリパスに別のフォルダーを追加する必要がある場合があることに注意してください(例:/ usr/lib/nvidia-384)。
このコマンドをファイル〜/ .bashrcに追加して、新しいbashをロードするときにパスを自動的にエクスポートできます。

1
revers

私はあなたが望む設定を取得しました(私もそれが欲しかったです;)):

  • intel GPUは、オンボードDPに接続されているxserverとモニターを実行します。
  • nvidia GPUは、CUDA固有の計算などにのみ使用されます。
  • nvidia GPUを完全に制御(リアルタイム、統計、温度ファンの速度...)

bumblebeeを使用します。

ただし、詳細を説明する前に、nvidia-settingsまたはxorg.confまたはnvidia primeの構成を変更する場合、システムを再起動する必要があることを警告する必要があります(おそらく既に知っています)。再起動しないと、システムが一貫性のない状態になる可能性があります。


私の構成では、xorg.confには触れませんでした。私にとってそうすることは、常に痛みの原因でした。元の状態のままにしてください。新規インストールを実行したくない場合は、/etc/X11/ls /etc/X11/xorg.conf*)でいくつかのバックアップを見つけることができます。

最初のステップは、nvidia-settingsを機能させることです。成功した場合は、すでに述べたように、nvidia PRIMEを使用してIntel GPUに切り替えることができます。 NVIDIA GPUをCUDA計算にのみ使用する場合は、NVIDIA GPUをインテルGPUにポイントする必要があります(CUDAデバッガーcuda-gdbを使用する場合は特に必要です)。

その後、 bumblebee をインストールしてみてください:

Sudo apt install bumblebee

リブート。を使用してバンブルビーの状態を監視できます

Sudo service bumblebeed status

または

bumblebeed -vv

Bumblebeeは、NVIDIA GPUをアクティブにし、必要な場合にのみカーネルにnvidiaドライバーを挿入しようとします。実行するコマンドの前にoptirunを追加することにより、bumblebeeを使用できます。

マルハナバチを機能させるには、/etc/bumblebee/bumblebee.confを手動で編集して、nvidiaドライバーの名前とパスを正しく設定する必要がありました。

[...]
Driver=nvidia
[...]
KernelDriver=nvidia_361
[...]
LibraryPath=/usr/lib/nvidia-361:/usr/lib32/nvidia-361

その後、Sudo service bumblebeed restartの後、バンブルビーシステムをアクティブにすることができました。

実際、nvidia-smiは戻ります

$ nvidia-smi
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system:
Please also try adding directory that contains libnvidia-ml.so to your system PATH.

しかしoptirun nvidia-smi

$ optirun nvidia-smi
Fri Jun 17 11:47:48 2016       
+------------------------------------------------------+                       
| NVIDIA-SMI 361.42     Driver Version: 361.42         |                       
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 970M    Off  | 0000:01:00.0     Off |                  N/A |
| N/A   53C    P1    18W /  N/A |     18MiB /  3071MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0     20678    G   /usr/lib/xorg/Xorg                               4MiB |
+-----------------------------------------------------------------------------+

お役に立てれば。

1
Michele

主にリマインダーとして:ubuntu 18.04でレンダリングにigpuを使用し、cudaにnvidia gpuを使用し、デフォルトのnvidiaドライバーをインストールし、nvidia-settingsを開き、intel gpuを使用するように設定します。その後、nouveauドライバーとnvidiaドライバーの一部をブラックリストに追加します。

/etc/modprobe.d/blacklist-nvidia.confを開き、次のように行をコメントします。

#blacklist nvidia
blacklist nvidia-drm
#blacklist nvidia-modeset
#alias nvidia off
alias nvidia-drm off
#alias nvidia-modeset off

その後、/ etc/modprobe.d/blacklist-nvidia-nouveau.confを開き、次の行を追加します。

blacklist nouveau
options nouveau modeset=0

nouveauが無効になっていることを確認するには、/ etc/modprobe.d/blacklist.confでそれらをブラックリストに追加することもできます。最後に追加します。

#Blacklist nouveau drivers
blacklist nouveau
blacklist lbm-nouveau
alias nouveau off
alias lbm-nouveau off

その後再起動します。

nvidia-smiと入力してnvidiaがロードされていることを確認し、lspci -nnk | grep -iA2 3Dと入力して使用中のドライバーを確認するとnvidiaであり、nouveauではありません。

0
user840583