web-dev-qa-db-ja.com

マルハナバチを使用してOptimusラップトップでLinux用のOpenCVをコンパイルする際の問題

OK、かなり具体的なOptimus/CUDA/driversの質問があります:

  • 私はAcerAspire5750GでUbuntu12.04を実行しています。このラップトップにはCUDA対応のGT540MGPUが搭載されていますが、Optimusも搭載されているため、使用するにはバンブルビーを使用する必要があります。

  • 次の これらの手順ppa:ubuntu-x-swat/x-updatesから最新のNVIDIAドライバーをインストールしてから、bumblebeeをインストールしました

  • これで、GPUで問題なく実行できます(optirun glxspheresは期待どおりに機能します)

  • しかし、CUDAランタイムサポートを使用して何か(OpenCV-2.4.2)をコンパイルしようとしていますが、NVIDIACUDA開発者ドライバーがインストールされていないことに関係していると思われるコンパイラエラーが発生しました

私が知りたいのは、NVIDIA開発者ドライバーと組み合わせてbumblebeeを使用できるかどうかです。 NVIDIAの開発者ページからダウンロードしたインストーラーを使用しても安全ですか、それともバンブルビーを完全に台無しにしますか?開発者ドライバーをインストールするためのより良い方法はありますか?最新のPPAを探しましたが、見つかりませんでした。

3
ali_m

さて、結局、OpenCVをコンパイルするために開発者ドライバーを使用する必要がないことがわかりました!

ppa:ubuntu-x-swat/x-updatesから更新しなくなったため、どういうわけかソフトウェアソースを台無しにしてしまいました。 NVIDIAドライバーを304.43から295.49に更新できることを修正したとき。 OpenCVをコンパイルするための重要な要素だったのではないかと思いますが、それを機能させるために1つのmakefileを変更する必要もありました。

誰かが同じことをすることに興味があるなら、私は基本的に指示に従いました ここ 。言い換えると:

  • Sudo apt-get installまだ持っていない場合は、次のモジュールの依存関係:

    libopencv-dev build-essential checkinstall cmake pkg-config libtiff4-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libv4l-dev

  • 最新のOpenCVを ここ からダウンロードしてから:

    tar -xvf OpenCV-<version#>.tar.bz2
    cd OpenCV-<version#>/
    mkdir build
    cd build
    
  • cmakeを実行して、ビルドファイルを構成します。 cmakeに一連のオプションを渡して、OpenCVの構築方法を指定する必要があります。正確なオプションはシステムによって異なります。../CMakeLists.txtを見ると、使用可能なオプションがわかります。私が使用した正確なコマンドは次のとおりです。

    cmake -D WITH_QT=ON -D WITH_XINE=ON -D WITH_OPENGL=ON -D WITH_TBB=ON -D BUILD_EXAMPLES=ON BUILD_TESTS=ON  ENABLE_SSE3=ON ENABLE_SSE4.1=ON ENABLE_SSE4.2=ON WITH_CUDA=ON ..
    

    CUDAランタイムサポート(WITH_CUDA=ON)でコンパイルするのに特に問題があったため、ドライバーに関する元の質問がありました。

  • cmakeは、CMakeCache.txtというファイルを作成します。 libcuda.soのリンクエラーを回避するために、説明されているようにこのファイルを変更する必要があることがわかりました ここ

    開始する行を見つけます。

    CUDA_CUDA_LIBRARY:FILEPATH=
    

    そして、私の場合はlibcuda.soにパスを追加します。

    CUDA_CUDA_LIBRARY:FILEPATH=/usr/lib/nvidia-current/libcuda.so
    
  • これで、makeを実行してコンパイルし(しばらく時間がかかります...)、次にSudo make installを実行してインストールできるようになります。

誰かがこれが役に立つと思うことを願っています。

4
ali_m