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; } }
CUDAでのビルド
CUDA8.0、visualstudio2015で開発中ハマったのでメモ
簡略化のために、CUDAのサンプル(C:¥ProgramData¥NVIDIA Corporation¥CUDA Samples¥v8.0¥0_Simple¥template)を用いて環境を作り、自分のソースコードを作ってビルドしたところ、MSB3721のエラーが発生。
「NCIDIA CUDA Toolkit5.5 Release Notes」29ページ「1.11.4.1CUDA Compiler」によると CUDA compiler(nvcc)はpathにユニコード文字を許していないようである。
今回、プロジェクトのpathにたまたま日本語を含んでいたため、別のディレクトリに移動するとエラーは解決。
まだそんなことやってんの?
まだ
そんなことやってんの?