nVidiaディスクリートカード/ Intel Integrated Graphicsを搭載したラップトップでnVidia CUDAまたはOpenCLを動作させるにはどうすればよいですか?


28

背景:私は(趣味として)3Dアーティストであり、最近Windows 7でのデュアルブートとしてUbuntu 12.04 LTSの使用を開始しました。グラフィックスカード)。ただし、Intel Integrated Graphics(Ubuntuが使用していると思われます)も備えています。

そのため、Windowsで3Dシーンを画像にレンダリングするとき、CPUを使用するかnVidia GPUを使用するかを選択できます(高速)。3Dアプリケーションから、CUDAまたはOpenCLを使用するようにGPUを設定できます。Ubuntuでは、GPUオプションはありません。

LinuxとnVidia Optimusテクノロジーの問題について(多すぎる?)研究を行った後、私はもう少し啓発されましたが、もっと混乱しました。

バッテリーの寿命は決して問題ではないので、Optimusテクノロジーについては少しも気にしません。

私の質問は次のとおりです。UbuntuのnVidia GPUでCUDAを使用するプログラム(Blenderなど)を使用するにはどうすればよいですか?nVidiaドライバーが必要ですか?(LinuxのOptimusセットアップではうまく動作しないと聞きました。)少なくともUbuntuのGPUでOpenCLを使用する方法はありますか?

回答:


27

いくつかの実験を行ったところ、CUDAにはBumblebeeは必要ないというEric Applemanの声明を確認できます。(Bumblebeeの詳細Optimusテクノロジーを搭載したNVIDIA GeForceはUbuntuでサポートされていますか?

ただし、OpenGLを使用してグラフィカルな例を表示する必要がある場合、Optimusシステム用のBumblebeeなど必要です。そうしないと、ディスプレイに何も表示されないか、エラーが発生します。

ERROR: Support for necessary OpenGL extensions missing.

CUDAプログラムを実行する場合、CUDAツールキットとnvidiaドライバーをインストールする必要があります。プログラムをコンパイルする場合は、SDKも必要です。インストーラーはhttp://developer.nvidia.com/cuda-downloadsにあります。Optimusラップトップを起動する前に、以下の手順をお読みください。

CUDAのインストール

ドライバ

Ubuntuのパッケージマネージャーからnvidiaドライバーをインストールすることをお勧めします。Bumblebeeをインストールする場合、ドライバーについて心配する必要はありません。そうでない場合は、インストール後にhttps://askubuntu.com/a/107746/6969の説明に従ってnvidiaライブラリを無効にします。そうしないと、3Dアクセラレーションが失われ、低解像度でスタックする可能性があります。

ツールキット

基本的に、インストーラーをダウンロードし、実行可能にして実行する必要があります。-インストーラーをダウンロードします。この記事の執筆時点では、4.2.9が最新のドライバーです。64ビットOSを使用しているため、64ビット11.04 Ubuntuパッケージを使用しています(ただし、12.04を実行しています)-実行可能にし、インストールを許可します/usr/local/cuda

chmod +x cudatoolkit_4.2.9_linux_64_ubuntu11.04.run
sudo ./cudatoolkit_4.2.9_linux_64_ubuntu11.04.run

CUDAのインストール場所を尋ねるインストールメッセージが表示されたら、Enterキーを押してデフォルトを受け入れます/usr/local/cuda

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

インストール後、ライブラリ検索パスにcudaライブラリディレクトリを配置することを提案するいくつかのメッセージが出力されます。

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

必要に応じてこの手順をスキップできますがLD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH、プログラムを実行するときに後で設定する必要があります。

SDK

CUDAアプリケーションをコンパイルできるようにする場合は、上記と同様の方法でSDKをインストールできます。ダウンロードして実行可能にし、実行します(rootとしてではなく、sudo!なしなど)。その一部をコンパイルするとき、私はいくつかの変更を行う必要がありましNVIDIA_GPU_Computing_SDK/C/common/common.mkた:

  • 189行目以降にOPENGLLIB := -lGL -lGLU -lX11 -lXi -lXmu、次を追加します。

    OPENGLLIB += -L/usr/lib/nvidia-current -L/usr/lib32/nvidia-current
    
  • 271について行の後に、スワップ${RENDERCHECKGLLIB}${OPENGLLIB}それがどのように見えるよう:

    LIB += $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) ${LIB} -ldl -rdynamic
    
  • さらに数行(5行)、同じことを行い-lcudaますが、削除します。
  • さらに数行(271)で行ったのと同じことを行います。

CUDAを使用する

CUDAは、nvidia駆動のXサーバーが動作する必要はありません。その場合、次のようなランダムテストプログラムを実行できます。

LD_LIBRARY_PATH = / usr / lib / nvidia-current:/ usr / lib32 / nvidia-current:$ LD_LIBRARY_PATH someComputallyIntensiveProgram

ライブラリパスにCUDAを追加していない場合は、次のものが必要です。

LD_LIBRARY_PATH = / usr / lib / nvidia-current:/ usr / lib32 / nvidia-current:/ usr / local / cuda / lib64:/ usr / local / cuda / lib:$ LD_LIBRARY_PATH someComputallyIntensiveProgram

(プログラムが64ビットの場合、32ビットパスを削除できます)。

CUDAプログラムにOpenGLを使用して表示するものがある場合、optirunを使用する必要があります。

 optirun blender

または、デフォルトパスにCUDAを追加していない場合:

LD_LIBRARY_PATH = / usr / local / cuda / lib64:/ usr / local / cuda / lib:$ LD_LIBRARY_PATH optirunブレンダー


おかげで、私はあなたに報奨金を授与します(ただし、コミュニティWikiの回答を受け入れます)。
ピーターカセッタ

また、100人の担当者と賛成票は、Bumblebee Projectでのあなたの仕事にどれほど感謝しているかを正確に表現していません。あなたとあなたの同僚は、それを素晴らしいソフトウェアにしました。よろしくお願いします。:)
ピーターカセッタ

2
ようこそ、更新されたxorg + mesa(またはWayland?)スタックを備えたPRIMEの形式で最終的な解決策が与えられることを願っています:)
Lekensteyn

1
PRIME、Xorgはグラフィックスの表示を担当するディスプレイサーバー、MesaはOpenGL、WaylandはXorgの後継者です。
-Lekensteyn

1
CUDAには最小限のNVIDIAドライバーが必要であることに注意してください。たとえば、CUDA 6.5には少なくともNVIDIA 340.21が必要です。
山猫

15

完全な回答は次のとおりです(Alex FalappaLekensteynの回答に基づいています)。

確かに、nVidia Optimus GPUを使用してUbuntuでCUDAを実行できます。

CUDAにはバンブルビーは必要ありません。(Bumblebeeの詳細Optimusテクノロジーを搭載したNVIDIA GeForceはUbuntuでサポートされていますか?

ただし、OpenGLを使用してグラフィカルな例を表示する必要がある場合、Optimusシステム用のBumblebeeなど必要です。そうしないと、ディスプレイに何も表示されないか、エラーが発生します。

ERROR: Support for necessary OpenGL extensions missing. 

Blenderのようなグラフィックを多用するプログラムを使用する必要がある場合、Bumblebeeは現在のところ良い方法です。

Bumblebeeをインストールしたくない場合(つまり、OpenGLが不要な場合)、CUDAのインストールにスキップしてください。
そうでなければ、読み進めてください。

Bumblebeeのインストール

Nvidia Optimusを搭載したラップトップどれくらいうまく機能しますか?の指示に従ってください

これらは現在、Bumblebee開発者によって最新の状態に保たれています。

Bumblebeeをインストールして再起動すると、プログラムを使用してoptirunプログラムを起動するときに使用するグラフィックカードを選択できるようになります。
例えば:

optirun blender

すべてが正しく機能するかどうかをすばやくテストするには、次を使用します。

optirun glxspheres

すべてが正常に機能している場合、カラフルな回転する球体を備えたプログラムが表示されます。

端末のGLベンダー文字列にnvidiaという単語が含まれていることを確認します。
のみを実行するとglxspheres、代わりにベンダー文字列にIntelカードが含まれていることがわかります。

CUDAプログラムを実行する場合、CUDAツールキットとnvidiaドライバーをインストールする必要があります。プログラムをコンパイルする場合は、SDKも必要です。インストーラーはhttp://developer.nvidia.com/cuda-downloadsにあります。Optimusラップトップを起動する前に、以下の手順をお読みください。

CUDAのインストール

ドライバ

Ubuntuのパッケージマネージャーからnvidiaドライバーをインストールすることをお勧めします。Bumblebeeをインストールする場合、ドライバーについて心配する必要はありません。そうでない場合は、インストール後にhttps://askubuntu.com/a/107746/6969の説明に従ってnvidiaライブラリを無効にします。そうしないと、3Dアクセラレーションが失われ、低解像度でスタックする可能性があります。

ツールキット

基本的に、インストーラーをダウンロードし、実行可能にして実行する必要があります。-インストーラーをダウンロードします。2013年1月9日現在、5.0.35が最新のドライバーです。64ビットOSを使用しているため、64ビット11.10 Ubuntuパッケージを使用しています(ただし、12.10を実行しています)-実行可能にし、インストールを許可します/usr/local/cuda

chmod +x cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run
sudo ./cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run

CUDAのインストール場所を尋ねるインストールメッセージが表示されたら、Enterキーを押してデフォルトを受け入れます/usr/local/cuda

......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):

インストール後、ライブラリ検索パスにcudaライブラリディレクトリを配置することを提案するいくつかのメッセージが出力されます。

========================================

* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
*   for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
*   for 32-bit Linux distributions add /tmp/cuda/cuda/lib
*   for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /tmp/cuda/cuda/doc/

* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete

必要に応じてこの手順をスキップしてもかまいませんがLD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH、プログラムを実行するときに後で設定する必要があります。

SDK

CUDAアプリケーションをコンパイルできるようにする場合は、上記と同様の方法でSDKをインストールできます。ダウンロードして実行可能にし、実行します(rootとしてではなく、sudo!なしなど)。

CUDAを使用する

CUDAは、nvidia駆動のXサーバーが動作する必要はありません。その場合、次のようなランダムテストプログラムを実行できます。

LD_LIBRARY_PATH = / usr / lib / nvidia-current:/ usr / lib32 / nvidia-current:$ LD_LIBRARY_PATH someComputallyIntensiveProgram

ライブラリパスにCUDAを追加していない場合は、次のものが必要です。

LD_LIBRARY_PATH = / usr / lib / nvidia-current:/ usr / lib32 / nvidia-current:/ usr / local / cuda / lib64:/ usr / local / cuda / lib:$ LD_LIBRARY_PATH someComputallyIntensiveProgram

(プログラムが64ビットの場合、32ビットパスを削除できます)。

CUDAプログラムにOpenGLを使用して表示するものがある場合、optirunを使用する必要があります。

 optirun blender

または、デフォルトパスにCUDAを追加していない場合:

LD_LIBRARY_PATH = / usr / local / cuda / lib64:/ usr / local / cuda / lib:$ LD_LIBRARY_PATH optirunブレンダー

Blender Buildのインストール

(プリコンパイルされたCUDAカーネルを使用)

を実行するとoptirun blender、BlenderからCUDAカーネルのコンパイルに失敗したというメッセージと、端末に次のようなメッセージが表示される場合があります。

Compiling CUDA kernel ...
nvcc warning : Option '--opencc-options (-Xopencc)' is obsolete and ignored, when
targeting compute_20, sm_20, or higher
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
CUDA kernel compilation failed, see console for details.

BlenderのGPUレンダリング機能を使用する場合は、プリコンパイルされたCUDAカーネルを使用したBlenderビルドが必要になる場合があります。Blender.orgのビルドにはすべて、CUDAカーネルがプリコンパイルされています。ppa:cheleb / blender-svnビルド(この質問に関する詳細情報)はサポートしていません。

公式のBlenderビルドをインストールするには、この回答に記載されている指示に従ってください。

にBlenderをインストールした場合/usr/lib/blenderは、ターミナルからBlenderを実行し、GPUレンダリングを以下で使用できるはずです。

 optirun '/usr/lib/blender/blender'

最近のバージョンのBumblebee(bumblebee / stable PPAからインストール)にはusermodコマンドは必要ありません。askubuntu.com/a/36936/6969のインストール手順を更新し続けるので、インストール手順をコピーするのではなく、その投稿にリンクしてください。
-Lekensteyn

@Lekensteynわかりました、できました!
ピーターカセッタ

2

Linuxでのハイブリッドグラフィックス(通常はIntel統合グラフィックスとNvidiaディスクリートグラフィックス)のサポートは、現在少し面倒です。Xサーバーの分野では何かがゆっくりと動いていますが、息を止めないでください。

ご想像のとおり、バンブルビーは現在のところ良い方法です。

最近、Intel / Nvidiaグラフィックスを搭載したAsus N55ラップトップを購入し、Blender CyclesレンダラーでCUDAを使用できるようになりました。

Ubuntu 12.04をインストールしたとき、Intelグラフィックスドライバーを介してデフォルトで統合グラフィックスを使用しました。noveauグラフィックスドライバーはインストールされません。

次に、ターミナルを開いて、次のことを行いました。

sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia

その後、私はしました(インストール手順で推奨されているように):

sudo usermod -a -G bumblebee $USER

その後、再起動しました。

プログラムの起動時に使用するドライバーを選択するには、optirunプログラムを使用します。次に例を示します。

optirun blender

すべてが正常に機能するかどうかをテストするには、次を使用します。

optirun glxspheres

GLベンダー文字列にNvidiaという単語が含まれていることを確認します。代わりに実行する場合:

glxspheres

ベンダー文字列にはIntelの単語が含まれている必要があります


Bumblebeeをインストールする前にnVidiaドライバーをインストールする必要がありますか?あなたの答えの言い方に基づいて、私は推測していない。また、UbuntuでOptimusカードを使用してCUDAを使用できる人がいるのを見るのもいいことです!15人の担当者を獲得したら、すぐにこれに投票します。:)
ピーターカセッタ

さて、バンブルビーをインストールしました。使用しoptirun、BlenderがnVidia GPUを使用して3Dビューポートをレンダリングしていることを確認できます。ただし、Blenderユーザー設定のドロップダウンには「GPU」オプションはありません。「CPU」のみをリストします。このスクリーンショットをご覧ください。CUDAを使用するには、追加のドライバーをインストールする必要がありますか?
ピーターカセッタ

1

Bumblebeeを使用してCUDAのすべての例を実行するには、ここからドライバー295.40をインストールする必要があり、インストール中にを無効にないことを選択しますconfig x11

次に、同じドライバーを使用して例をコンパイルし、プログラムを実行する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.