OpenCVとCUDAの初歩のつまづき
OpenCV3のCUDAを使った関数を使って処理する事は可能になった。なので、本当はどの位性能が上がるものか性能評価を行いところであるが、まだ全てが実装出来ていないのでもう少しコーディングを行う必要がある。
で、自分が求めている計算すべてが既にOpenCVのCUDA版関数として実装されている訳ではないのでそういった計算を行うためにはCUDAを用いて自分で作るしかない。しかし、それが今のところ上手く行っていない。
現時点では__global__をつけた関数を実装して、それをホストから実行しようとしているのだが、以下のエラーが出てビルドが出来ない。
- __global__関数の中でblockDim、blockIdx、threadIdxがundefinedである。
- __global__関数の呼び出しで<<<、>>>を適切に解釈できない。
__global__関数も、その関数の呼び出しを行う関数もcuファイルで定義している。Visual Studio 2013のプロジェクトのコンパイラもCUDA7.5を設定しているので、cuファイルであってもビルド対象となっている。ただ、cuファイルをコンパイルする前に
opencv2/core/base.hpp(342): warning : function declared with "noreturn" does return
という警告が2個ほど出てからコンパイルが開始されるのが気になっている。何かプロジェクトの設定に失敗しているような気がする。先に進めるためにはこれらをどうにかしないといけなさそうだ。