web-dev-qa-db-ja.com

NVIDIA PrimeでCUDAを使用する方法

ウェブ上でこれに関する6ダースの投稿を見つけましたが、どれも本当に質問に答えません。

ディスプレイを駆動するのではなく、計算のみを行うようにnvidia GPUをセットアップしたい。しかし、nvidia-prime構成でIntel GPUを使用するように切り替えると、nvidiaモジュールをロードできなくなります。

modprobe: ERROR: could not insert 'nvidia_352': No such device

モジュールがないと、CUDAは機能しません。

それでは、nvidia-primeがモジュールをロードすることを不可能にするのは正確には何ですか?ブラックリストに載っていません。 xorg.confファイルがないので、システムはディスクリートGPUの代わりにIntel GPUを使用することをどのように知っていますか?

Ubuntu 14.04がインストールされたDell 5510 Precisionを使用しています。GPUはQuadro M1000Mです。

マルハナバチを使用することを提案する人もいますが、それは純粋な計算負荷には必要ないはずです。

また、bumblebeeはモジュールをロードできるようです。それで、それは正確に何をしていますか?

更新:それで、何時間も解明しようとした後、最終的に質問を投稿したときにいつも答えを見つけるように見えるのはなぜですか。これは実際には部分的な答えにすぎませんが、私は何かに取り組んでいます。

これまでのところ、プライムは少なくとも2つのことを行うと判断しました。

  • Bbswitchを使用してGPUをオフにします。
  • /etc/ld.so.conf.d/x86_64-linux-gnu_GL.confの alternatives を変更します。

bbswitch を使用してGPUをオンに戻すことで、NVIDIAモジュールをロードできるようになりました。

しかし、疑問はまだ残っています:計算のみにNVIDIAカードを使用するようにシステムを構成する最良の方法は何ですか?

Intel GPUを使用するようにnvidia-primeを設定し、CUDAを機能させるために何をしたかを手動で解明する必要がありますか?

システムがディスプレイにIntel GPUを使用していることを確認するにはどうすればよいですか?

NVIDIAプライムを無効にして、すべて手動で設定するにはどうすればよいですか?

またはjsutを使用してBumblebeeとoptirunを使用する必要がありますか?ある場合、これの欠点は何ですか?

推奨事項はありますか?

10
orodbhen

私の元の投稿の更新で説明されているように、少なくともこれには大雑把な解決策が見つかったと思います。確かに2つの解決策がありますが、他にも解決策があるはずです。

1-PrimeをIntelモードで使用して、NVIDIAカードを bbswitch で再度有効にし、modprobe nvidiaを実行してモジュールをロードし、デバイスノードを作成します。

2-Bumblebee optirunを使用して、CUDAのすべてを実行できるbashセッションを起動します。

どちらのソリューションでも、ディスプレイにオンボードグラフィックスを使用しながら、計算負荷にNVIDIAカードを使用できます。 optirunのソリューションはより用途が広いように見えますが、私はそのミニマリズムのために最初のものを好みます。

私は、より多くの理解を持つ誰かがこの答えを改善することを望んでいます。

2
orodbhen

私の場合、NVidiaカードは実際にはオフになっていないことがわかりました。CUDAコードを実行するために実際に必要なことは次のとおりです。

export LD_LIBRARY_PATH=/usr/lib/nvidia-352

私がそれを実行したいシェルで(私はグローバルに代替設定を変更するとcompizなどが壊れると仮定しています...)

このポイントに到達するには(Dell Optiplex 7010、Ubuntu 14.04、CUDA 7.5、およびGTX 980を使用)、手順は次のとおりでした。

  1. [PRIMEプロファイル]タブを使用してIntelを選択します
  2. 再起動し、BIOSでIntelをデフォルトとして選択します
  3. コンピューターを終了させて​​下さい
  4. オンボードビデオにモニターを接続します:)

これまでのところ、すべてが正常に機能しているようです(nvidia-smiはカードを見る、cudaサンプルが実行される、theanoはカードを使用するなど)

私はCUDAの実行にのみNVIDIAカードを使用し、このアプローチを見つけます。

私がインテルのカードを使用し、それがコマンドlspci | grep -E "VGA|3D"で確認されるたびに:

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev ff)

NVIDIAカードの対応する行には、(rev ff)が表示され、オフになっていることを示します。

カードをオンにしてCUDA計算に使用するには、次の2つのコマンドを使用します。

Sudo prime-select nvidia
Sudo prime-switch

そのコマンドlspci | grep -E "VGA|3D"レポートの後:

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev a2)

対応する行の(rev a2)ではなく、(rev ff)に注意してください。これで計算の準備ができました。

計算後、後方アクションを使用します。

Sudo prime-select intel
Sudo prime-switch

lspci | grep -E "VGA|3D"レポート:

00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev ff)
2
Abonec

受け入れられた回答の手順を実行しても問題が解決しない場合は、これを試してください。

echo "install bbswitch /bin/true" > /etc/modprobe.d/blacklist-bbswitch.conf
update-initramfs -u

Bbswitchを完全に無効にします。欠点は、省電力のためにNVIDIAカードをオフにできないことです(_orgがprime-select intelである限り、統合グラフィックスを引き続き使用します)。

0
Huazuo Gao

作業中に暗号通貨をマイニングするように設定されたegpuで、thinkpad T420で1070 tiを使用しています。 GPUは、この方法で2〜3か月後に理論的には自己負担します。

Nvidia 387 export LD_LIBRARY_PATH =/usr/lib/nvidia-387では、cudaを使用してethminerで動作することがわかりました。

ただし、「prime-select intel」の後にシステムを動作させ続けることができる唯一の方法は、選択を行ってログオフしたときに2番目のモニターをカードに接続したことです。そうしないと、「システムが低グラフィックモードで実行されています」エラーが表示されるか、画面が連続して表示されます。もちろん、Intelグラフィックを使用してログインすると、GPUに接続されたモニターには何も表示されないため、GPUから取り外し、システム(DVIドック出力)に接続してデュエルモニターのセットアップを実行する必要があります。

これは、gpu-managerがbbswitchが機能しないことを検出し、xorg設定を削除するためだと考えています。

同様の状況にある少数の人のための回避策を示すためにこれを投稿していますが、再起動ごとにケーブルを移動しなければならないので、これを防ぐためのアイデアがある人がいるかどうかを確認します不便。

log_file:/var/log/gpu-manager.log

last_boot_file:/ var/lib/ubuntu-drivers-common/last_gfx_boot new_boot_file:/ var/lib/ubuntu-drivers-common/last_gfx_bootは/ run/udc-fglrx-was-loadedファイルにアクセスできません/ libでfglrxモジュールを探しています/modules/4.4.0-104-generic/updates/dkms /lib/modules/4.4.0-104-generic/updates/dkmsでnvidiaモジュールを探していますnvidiaモジュールが見つかりました:nvidia_387_drm.ko nvidiaがロードされていますか?はいnvidiaはアンロードされましたか? NVIDIAはブラックリストに登録されていますか?はいfglrxはロードされていますか? fglrxはアンロードされましたか? fglrxはブラックリストに登録されていますか?インテルはロードされていますか?はいradeonはロードされていますか? radeonはブラックリストに登録されていますか? no amdgpuはロードされていますか? no amdgpuはブラックリストに登録されていますか? nouveauはロードされていますか? nouveauはブラックリストに登録されていますか?はいfglrxカーネルモジュールは利用可能ですか? nvidiaカーネルモジュールは利用できますか? yesベンダー/デバイスID:8086:126 BusID "PCI:0 @ 0:2:0" boot vga? yesベンダー/デバイスID:10de:1b82 BusID "PCI:5 @ 0:0:0"ブートvgaですか? 「/ dev/dri/card1」は「i915」でスキップ「/ dev/dri/card0」は「nvidia-drm」でスキップ「/ dev/dri/card1」は「i915」でスキップ「/ dev/dri/card0」、「nvidia-drm」により駆動「/ dev/dri/card1」、「i915」によりスキップ「/ dev/dri/card0」、「nvidia-drm」により駆動「i915」出力によって駆動されるdev/dri/card1 "0:card1-LVDS-1出力1:card1-HDMI-A-2/dev/dri/card1:2の接続出力数オフロードが必要ですか?はい最後のカード番号= 2 amdがありますか?インテルはありますか?はい、nvidiaはありますか?はいカードは何枚ですか? 2システムは変更されましたか? main_Arch_pathなしx86_64-linux-gnu、other_Arch_path i386-linux-gnu現在の代替:/usr/lib/nvidia-387-prime/ld.so.conf現在のコア代替:(null)現在のegl代替:/ usr/lib/nvidia -387-prime/ld.so.conf nvidiaは有効になっていますか? nvidia eglは有効になっていますか? no fglrxは有効になっていますか?メサは有効になっていますか? no mesa eglは有効になっていますか? pxpressは有効になっていますか?プライムは有効ですか? yes Prime EGLは有効になっていますか?はいnvidiaは利用可能ですか?はいnvidia eglは利用可能ですか? fglrxは利用可能ですか? no fglrx-coreは利用可能ですか?メサは利用可能ですか?はいmesa eglは利用可能ですか?はいpxpressは利用可能ですか?プライムは利用できますか?はいPrime EGLは利用可能ですか? Intel IGPが検出されなかったIntelハイブリッドシステムNvidiaドライバーバージョン387.34が検出された/ sys/class/dmi/id/product_version = "ThinkPad T420"/sys/class/dmi/id/product_name = "4236L23" 1回目の試行:bbswitchをロードbbswitchをロード「load_state = -1 unload_state = 1」パラメータエラー:/ proc/acpi/bbswitchを開けませんxorg.confを削除しています。パス:/etc/X11/xorg.confは/usr/share/gpu-manager.d/hybrid-power-savingにアクセスできません現在のbbswitchステータスを変更する必要はありません

この後、nano xorg.confが空の場合。私はバックグラウンドでマイニングを行っているモニター切り替えのトリックを行った後にこれを投稿していますが、私のxorg.confはまだ空です。私の推測では、lightdmの再起動時に何らかの理由でモニターをGPUに接続したままにすると、xorg.confが削除されても問題ないということです。何か案は?

0
nhorning