Showing posts with label CUDA. Show all posts
Showing posts with label CUDA. Show all posts

July 5, 2011

CUDA4.0 実験用マシンの追加

以前、ML110G6にGeForceGTX560Tiを載せたCUDA実験機を作成したが、
電源の換装が必要であったり、全体の改修費用が高額であったり、と問題が多かった。

そこで、手軽に実験できるよう、
・電源換装の必要なし
・総額1万以内で購入できる
という観点からグラボを選定しなおした。



これをML110G6に搭載し、この記事を参考に導入を進めればCUDA対応環境での実験が可能となる。

GTX560Tiとの性能比較はまた後日。

June 23, 2011

Ubuntu10.10 での OpenCV2.3RC with CUDA4.0 の導入

前回はOpenCV2.2のsvn版をつかってCUDA対応のOpenCVを導入してみたが、
OpenCV2.3RCが出たのでインストールしてみる。
RCがとれたのでやってみたのはこっち。

環境としては
OS:Ubuntu10.10 desktop 64bit
OpenCV:OpenCV-2.3.0RC
CUDA:4.0

CUDA4.0の導入についてはこの記事を参照

まずは依存を解決する。
$ sudo apt-get install libtbb2 libtbb-dev libgtk2.0-dev build-essential pkg-config libpng12-0 libpng12-dev libpng3 libpng3-dev libpnglite-dev libpngwriter0-dev libpngwriter0c2 zlib1g-dbg zlib1g zlib1g-dev libjasper-dev libjasper-runtime libjasper1 pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools  libjpeg62 libjpeg62-dev libjpeg62-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec52 libavformat52 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev openexr libswscale0 libswscale-dev libeigen2-dev libopenexr-dev subversion subversion-tools doxygen doxygen-gui python-sphinx cmake
また、今回からgtestが必要になったようなのでそちらも導入。
$ sudo aptitude install libgtest-dev

あとはソースをsourceforgeから落としてきて導入。
また、途中でCMakeLists.txtをsedで編集している。これはUbuntuのPythonがsite-packagesを見にいかないため。
さらにdebで管理するためにCheckInstallでdeb化して導入する。RHELと異なりaptitudeで導入できる。
$ mkdir -p ~/local/src
$ cd ~/local/src
$ wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.3/OpenCV-2.3.0rc.tar.bz2
$ tar jxvf OpenCV-2.3.0rc.tar.bz2
$ cd OpenCV-2.3.0
$ sed -i s/site-packages/dist-packages/g CMakeLists.txt
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BULD_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D WITH_QT=ON -D WITH_QT_OPENGL=ON -D WITH_CUDA=ON -D BUILD_DOXYGEN_DOCS=ON ../
$ make -j2
$ sudo aptitude install checkinstall
$ sudo checkinstall
$ sudo ldconfig
checkinstall中にいろいろきかれるが適宜答えておく。
checkinstallにいろいろ聞かれるのが煩わしい人はcheckinstallの代わりに"make install"とでもしておけば良い。
これで導入は完了。

opencv_test_gpuがきちんと終わらないのは変わらないなー。
RCでも変化がないということはこちらの設定ミスを疑ってみる。
追々チェックしていく。

せっかくなので、このページにかかれているサンプルをコンパイルしてみる。
コンパイルは
$ g++ -I/usr/local/include/opencv2 -L/usr/local/lib -lopencv_gpu test.cpp
で通る。
これは問題なく動いている。

June 21, 2011

Ubuntu10.10 での OpenCV2.2 with CUDA4.0 の導入

::OpenCV2.3RCの導入法はこちら

以前にもOpenCVを導入したが、
今回はCUDA対応を施しインストールする。(他にも些細な改善をする)

環境としては
OS:Ubuntu10.10 desktop 64bit
OpenCV:OpenCV-2.2.0
CUDA:4.0

CUDAの導入については前回を参照

まずは依存を解決する。
$ sudo apt-get install libtbb2 libtbb-dev libgtk2.0-dev build-essential pkg-config libpng12-0 libpng12-dev libpng3 libpng3-dev libpnglite-dev libpngwriter0-dev libpngwriter0c2 zlib1g-dbg zlib1g zlib1g-dev libjasper-dev libjasper-runtime libjasper1 pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools  libjpeg62 libjpeg62-dev libjpeg62-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec52 libavformat52 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev openexr libswscale0 libswscale-dev libeigen2-dev libopenexr-dev subversion subversion-tools doxygen doxygen-gui python-sphinx cmake
あとはソースをsubversionから落としてきて導入。
tar版はCUDA4.0に対応していないため。
また、途中でCMakeLists.txtをsedで編集している。これはUbuntuのPythonがsite-packagesを見にいかないため。
さらにdebで管理するためにCheckInstallでdeb化して導入する。RHELと異なりaptitudeで導入できる。
$ mkdir -p ~/local/src
$ cd ~/local/src
$ mkdir OpenCV-2.2.0-svn
$ cd OpenCV-2.2.0-svn
$ svn checkout https://code.ros.org/svn/opencv/trunk/
$ cd trunk/opencv/
$ sed -i s/site-packages/dist-packages/g CMakeLists.txt
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BULD_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D WITH_QT=ON -D WITH_QT_OPENGL=ON -D WITH_CUDA=ON -D BUILD_DOXYGEN_DOCS=ON ../
$ make -j2
$ sudo aptitude install checkinstall
$ sudo checkinstall
$ sudo ldconfig
checkinstall中にいろいろきかれるが適宜答えておく。
checkinstallにいろいろ聞かれるのが煩わしい人はcheckinstallの代わりに"make install"とでもしておけば良い。
これで導入は完了。

opencv_test_gpuでいくつか通らないテストがあるのだけどどうしたもんかな…
来月にはOpenCVの新しいヴァージョンも出るらしいので、それに期待かな。
ま、追々対応していく。とりあえず完了。

せっかくなので、このページにかかれているサンプルをコンパイルしてみる。
コンパイルは
$ g++ -I/usr/local/include/opencv2 -L/usr/local/lib -lopencv_gpu test.cpp
で通る。
一応動いているみたいで一安心。

Ubuntu10.10 での CUDA4.0 導入

以前、GPUを換装したので、CUDA環境をインストールしてみる。

前提とする環境は
OS:Ubuntu10.10 desktop 64bit
GPU:GeForce GTX 560Ti
CUDA:4.0

まず、公式サイトからCUDA関連ファイルをDLしておく。
必要なのは
・Developer Drivers for Linux : devdriver_4.0_linux_64_270.41.19.run
・CUDA Toolkit for Ubuntu Linux 10.10 : cudatoolkit_4.0.17_linux_64_ubuntu10.10.run
・GPU Computing SDK code samples : gpucomputingsdk_4.0.17_linux.run
・CUDA Tools SDK : cudatools_4.0.17_linux_64.run
の4つ。サンプルとかは適当に。

大まかな流れとしては
・依存の解決
・ドライバの導入
・Toolkitの導入
・SDKの導入
となる。

まず、依存関係をクリアする。
Ubuntu11.4の場合はこれの他に、gcc-4.4,g++-4.4の(バージョンを明記した)導入が必要(11.4は4.5系)
$ sudo aptitude install libxi-dev libxmu-dev freeglut3-dev libglut3-dev g++
で、ディスプレイドライバをいじるのでXを落として、セットアップスクリプトを実行。
$ sudo service gdm stop
$ sudo sh devdriver_4.0_linux_64_270.41.19.run
色々聞かれるが適度に妥当に答える。
おわったら"startx"などでグラフィカルモードにもどる。

次にCUDAのToolkitを導入する。
$ sudo ./cudatoolkit_4.0.17_linux_64_ubuntu10.10.run
これでCUDAのライブラリ等も導入された。
ライブラリを登録する。
/etc/ld.so.conf.d/以下にcuda.confというファイルを作成し、
/lib/local/cuda/lib
/lib/local/cuda/lib64
と編集する。編集が終わったら、"sudo ldconfig"で反映しておく。
また、"/usr/loca/cuda/bin"をPATHに追加しておく。
追加の仕方は各自調査のこと。

また、cudatoolsも導入しておく。
$ sudo sh cudatools_4.0.17_linux_64.run

さて、ここで、なぜか/usr/lib/libGL.soがリンク切れをしている。(mesaのパッケージに問題有るのかな?)
正しい解決方法を探すのが面倒だったので
$ sudo rm /usr/lib/libGL.so
$ sudo ln -s /usr/lib/libGL.so.1 /usr/lib/libGL.so
としておく。

これでSDKを導入する準備ができた。
SDKはデフォルトでは各自のホームディレクトリ以下に入る。
よって"sudo"する必要はない。
$ sh ./gpucomputingsdk_4.0.17_linux.run
導入が終わったら、
$ cd ~/NVIDIA_GPU_Computing_SDK
$ make
で一式をコンパイルする。

コンパイルが終わったら、
$ ~/NVIDIA_GPU_Computing_SDK/C/bin/linux/release/deviceQuery
で動作確認。

今後、Kernelアップデートするたびに、ドライバのインストールを繰り返す必要があるかも。
なにかオシャレな対策はないのかな…?

以上

OpenCVとの連携はこちらを参照のこと。

June 14, 2011

HP ProLiant ML110G6 に GeForceGTX560Ti を導入する

CUDA を使いたいので ML110 G6 にGPUを導入することにした。
GT430 とかでスモールスタートするのもいいが、もうちょっと気合を入れてみたい。
(ML110G6+1万円で組める激安CUDA環境はこちら)
お財布との相談の結果、 GeForceGTX560Ti をねらうことにする。
2万円前半台でそこそこ性能は良さそう。
560Tiを使うにはML110G6の電源は貧弱なので電源も換装することにした。

実際に購入した製品は
グラフィックカード:MSI:N560GTX-Ti TwinFrozrII
電源:Scythe:剛力短2 700W 80PLUSブロンズ SPGT2-700P

ML110 G6は電源はATXそのままなのだが、ケースの関係上ショートサイズの電源を選ぶ必要がある。

電源は何事もなく換装完了し、グラボの搭載をしようとしたのだが、どうにもうまく嵌らない。
というのもこのグラボ、2スロット占有であり、どうも拡張スロットのセパレータであるケースの突起が邪魔なようだ。
邪魔なのでペンチで突起ごとケースを歪ませて対応した。

LinuxでGPUのベンチをどう取ったらいいのか迷ったので、Windows7を導入。
FFXIVベンチを走らせてみた。
HighでもLowでも3000強。期待より低い。というかHighとLowで変化がないのは何でだぜ…

小さいケースに無理くり押し込んだ手前、温度上昇が気になる。
ベンチをループさせながらGPU-ZでGPUの温度変化を追ってみた。
・FanSpeed55%で温度60度で安定
・GPULoadがそもそも40%ぐらいまでしか上昇しない…
・30分実験継続して温度の上昇傾向なし
・ベンチを終了すると室温+10度程度で安定
LoadがMAXまでいかないのは、GPU以外が足を引っ張ってるからなのかな…
まぁ、暴走したら対策を考えよう。とりあえずは大丈夫そう。

あとは、CUDAの導入OpenCVのCUDA対応、PyCUDAの導入という流れを考えている。