Sift on GPU
SiftGPUを動かしてみたのでメモ
環境:CentOS6.0(64bit), GeForce9600GT
CUDAインストール
ここから、nvidiaドライバとCUDAのツールキットをダウンロードする。
http://developer.nvidia.com/cuda-toolkit-41
NVIDIA-Linux-x86_64-285.05.33.run cudatoolkit_4.1.28_linux_64_rhel5.x.run gpucomputingsdk_4.1.28_linux.run
まずドライバを入れる。このままインストールすると、Nouveau kernel driverが邪魔と怒られるのでdisableする必要がある。
/boot/grub/grub.confの、起動するOSのkernelの行の末尾にrdblacklist=nouveauと追記すれば良い。
こんな感じ。
kernel /vmlinuz-2.6.32-71.29.1.el6.x86_64 ro root=/dev/mapper/vg_quad00-lv_root rd_LVM_LV=vg_quad00/lv_root rd_LVM_LV=vg_quad/lv_swap rd_LVM_LV=vg_quad00/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=ja_JP.UTF-8 KEYBOARDTYPE=pc KEYTABLE=jp106 crashkernel=128M rhgb quiet rdblacklist=nouveau
再起動して、GUIをおとす。
$ init 3
NVIDIAのドライバをインストール。
$ bash NVIDIA-Linux-x86_64-285.05.33.run $ init 5
CUDAのツールキットもインストール
$ bash cudatoolkit_4.1.28_linux_64_rhel5.x.run $ bash gpucomputingsdk_4.1.28_linux.run
LD_LIBRARY_PATHは通しておいた方がよい。
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
Sift GPU
ここのコードをありがたく使わせていただきます。
http://cs.unc.edu/~ccwu/siftgpu/
展開して普通にmakeすれば基本的に大丈夫だが、いろいろライブラリがいるので必要に応じてインストール。
自分の環境だと、devil、glewをソースからコンパイルして入れた。OpenGLあたりも入ってなければ多分必要。
http://openil.sourceforge.net/
http://glew.sourceforge.net/
無事コンパイルできたらサンプルを動かしてみる。
$ cd SiftGPU/bin $ ./SimpleSIFT [GPU VENDOR]: NVIDIA Corporation 474MB TEXTURE: 8192 [SiftGPU Language]: GLSL Image size : 800x600 Image loaded : ../data/800-1.jpg #Features: 3359 #Features MO: 3927 [RUN SIFT]: 0.575 Image size : 640x480 Image loaded : ../data/640-1.jpg #Features: 2377 #Features MO: 2784 [RUN SIFT]: 0.125 [SiftMatchGPU]: GLSL 2276 sift matches were found;
速い!そのうちCPUと速度比較とかしてみたいと思います。