OpencvにおけるCUDA
CUDAをOpencvで利用するためには、CMakeを用いてOpencvを自分でビルドする必要がある。 OpencvのGithubのページからソースコードをダウンロードし、CMakeでソリューションをジェネレートする。 その際Opencv_WITH_CMake(だったかな?)をONにするのを忘れない。(これ結構時間かかる。2〜5時間くらい)
そうするとcv空間に新たにcuda空間を利用することができる。 GPUを用いたコードを書く際まずGPUの情報を確認するために、cuda空間内のgetCudaEnabledDeviceCount()を呼ぶ 'cv::cuda::getCudaEnabledDeviceCount()' この関数は返り値に利用できるGPUの個数を返す。
これを利用してGPUの情報を得ようとしたが、返り値がなぜか0になってしまう。ハマった...
これは原因は詳しく調べていないが、どうやら'opencv_world310d.lib'(Releaseなら'opencv_310.lib')を併用することによるものらしい。 そこでこのライブラリを削除して見たところうまくいった。 以下はGPUの情報を得るソースコード
int gpuInfo(){ int cudaDevices = cv::cuda::getCudaEnabledDeviceCount(); if (cudaDevices > 0){ cout << "[CUDA Device 0]" << endl << "name: " << info.name() << endl << "majorVersion: " << info.majorVersion() << endl << "minorVersion: " << info.minorVersion() << endl << "multiProcessorCount: " <<info.multiProcessorCount() << endl << "sharedMemPerBlock: " << info.sharedMemPerBlock() << endl << "freeMemory: " << info.freeMemory() << endl << "totalMemory: " << info.totalMemory() << endl << "isCompatible: " << info.isCompatible() << endl; return 0; }else{ cout << "nothing" << endl; return -1; } }