CUDA のパフォーマンスが Windows に比べて著しく低い場合、Intel をプライマリ GPU にするべきでしょうか?

CUDA のパフォーマンスが Windows に比べて著しく低い場合、Intel をプライマリ GPU にするべきでしょうか?

デュアルブートシステムでのGPU tensorflowのインストールを実行しました(Windows 10およびUbuntu 16.04.x

両方のOSのドライバのバージョンはほぼ同じです

Lenovo P50 laptop with Nvidia Quadro M1000M    

Windows 376.51 nvidia driver version
Ubuntu  375.66 nvidia driver version

ディープラーニングモデルをトレーニングすると、トレーニングセットごとにかかる時間が大きく異なります

Windows 10   + Tensorflow 1.3 GPU + CUDA =  8 min. per epoch
Ubuntu 16.04 + Tensorflow 1.3 GPU + CUDA = 45 min. per epoch

apt-getUbuntuのインストールは、ソースからのインストールではなく、すべてデフォルト経由で行われました。pip

これまでのところ、私が考えているのは、グラフィックスを描画するためにNVIDIA GPUを使用しているということであり、GPUのすべてを計算に利用できていないということです。これを確認する方法はありますか?私は両方にすべてをインストールしました。パッチも含め、CUDA 8.x

問題が何なのかさえよく分かりませんが、ドライバーが Optimus を使用するように設定されているようです。別のプロファイルに切り替える必要があるのでしょうか?

ここに画像の説明を入力してください

アイデア 1: 明日試してみるかもしれないのは、Ubuntu 16.x 内のすべての CPU 最適化を使用して、ソースから tensorflow を再コンパイルすることです。おそらく、pip インストールは Windows でのバイナリ インストールよりも面倒です...

アイデア 2: 上記の方法で何も解決しない場合は、BIOS に入り、Intel 統合グラフィックスを強制します。再インストールして、Noveua グラフィックスをインストールしてみます。次のようになります。

これは「Optimus」対応のラップトップのようです。レンダリング用に NVIDIA GPU を完全にオフにすることはできず、ハイブリッド モードのみ有効にできます。おそらく、新規インストールを実行して、すべての NVIDIA ドライバーを削除し、その方法で X が動作するかどうかを確認します。

http://guanghan.info/blog/en/my-works/building-our-personal-deep-learning-rig-gtx-1080-ubuntu-16-04-cuda-8-0rc-cudnn-7-tensorflowmxnetcaffedarknet/

"So I went to BIOS and set the integrated graphics as default and 
restart. Remember to switch the HDMI from the port on GTX1080 to that 
on the motherboard. Now the display works well. I successfully 
installed Ubuntu following its prompt guides."

https://devtalk.nvidia.com/default/topic/991849/-solved-run-cuda-on-dedicated-nvidia-gpu-while-connecting-monitors-to-intel-hd-graphics-is-this-possible-/

When installing the NVIDIA display driver, be sure to:

1. not install the openGL libs (there are command line options with 
driver runfile installers or CUDA runfile installers to allow this)
2. make sure not to make any changes to the xorg.conf configuration.

答え1

何度も探し回って、検索して、まとめ上げて、問題を見つけて修正しました。そうです、Windows では Intel GPU が使用されていましたが、Linux では未使用の状態でした。そのため、NVIDIA GPU に画面を描画させ、リソースを失わせていました。

以前のシステムの上に新しい Ubuntu 16.04 USB スティックを再インストールしました。

During reinstallation choose updates, but don't use 3rd party libraries

インストールが完了したら、Nvidia の独自ドライバーではなく、Intel Nouveau ドライバー モードになっていることを確認する必要があります。

さて、奇妙な部分がやってきました

ここのユーザーも同じ問題を指摘していましたが、デスクトップ展開の場合です

https://devtalk.nvidia.com/default/topic/991849/cuda-setup-and-installation/-solved-run-cuda-on-dedicated-nvidia-gpu-while-connecting-monitors-to-intel-hd-graphics-is-this-possible-/

基本的に...

まとめると、これを機能させるには、

1. make sure you have enabled onboard graphics in the BIOS settings (or set it as primary)

ハイブリッドモードにしました。Intelのみのオプションがないので

2. install both xorg intel driver and nvidia/cuda drivers

ここでは、フラグを渡す必要があります

--no-opengl-files //for the driver install I choose latest (384)

--no-openfl-libs // cuda 8.0 + patch here ..

必ず nouveau を無効にし、指示に記載されているすべての手順を実行してください。

大丈夫かどうかを知るための主な方法は、インストールしてglmark2、常に情報を出力していることを確認することです。

3. start nvidia-settings, and go to the PRIME settings page, set Intel (Power Saving Mode) as default
4. modify your .bashrc and set LD_LIBRARY_PATH to at least contain /usr/local/cuda/lib64:/usr/lib/nvidia-XXX where XXX in my case is 375.

このフォルダは私の場合は全く存在しませんでした。それでも私はデフォルトを追加しLD_LIBRARY_PATHPATHインストール後のcudaの指示に概説しました

4. logout to restart X or reboot
5. run glmark2 to confirm GL status

OpenGLファイルをインストールせずにインストールする必要があるため、これはおそらく不要です

<strike>6. (update) if the libGL printed from step 5 points to nvidia's driver folder, you need to remove/rename the libGL.so*/libGLX.so*/libGLdispatch.so* under nvidia driver folder so that your OS can pick up the mesa libGL library.</strike>


7. run nvidia-smi to list your dedicated NVIDIA GPU, and run your CUDA program, you should not see any errors.

一度実行するまではうまくいきませんでしたnvidia-modprobeが、その後突然すべてがうまくいきました。

更新: 残念ながら、再起動により構成が壊れてしまいました。まだ修正方法がわかりません...

関連情報