OpenCVビルドの高速化

OpenCV3.3.1を使うことにしましたが,ソースのビルドをします.OpenCVのビルドをすることが仕事でも結構あるんですが,これって本当に時間かかります.ただ,時間を食っているところって大半がCudaのビルドなんです.で,オプションを何も指定しなければ,ほぼすべてのGPUに対してビルドを実行してしまいます.自分の持っているHWでしかOpenCVを使わないなら,PCのGPUで使える設定のビルドだけしてやればOKです.下記のようにCMakeのコンフィグ生成時点で指定してあげればOKです.

1. 自分のGPUのCompute Capabilityを調べる.

自分の場合はGTX1070なので,下記の表からCompute Capability6.1だとわかります.
developer.nvidia.com

2. CMakeのコンフィグを下記のように設定します.
cmake -D OPENCV_EXTRA_MODULES_PATH=/hoge/hoge/opencv331/opencv_contrib/modules -D CMAKE_INSTALL_PREFIX=/hoge/hoge/opencv331/install -D CMAKE_BUILD_TYPE=Release -D WITH_CUDA=ON -D WITH_GSTREAMER=ON -D WITH_OPENGL=ON -D BUILD_EXAMPLE=OFF -D CUDA_ARCH_BIN="6.1" -D CUDA_ARCH_PTX="6.1" -D WITH_CUBLAS=ON  ../opencv

ここで指定している”CUDA_ARCH_BIN”, "CUDA_ARCH_PTX"という変数がポイントで,指定したアーキテクチャにだけOpenCVをビルドします.あとはマルチコアをふんだんに活かして,下記のコマンドでビルドすれば,10分以内には終わるかと!

make -j32

以上,メモメモでした.