2016-06-13 10 views
0

ドキュメントには、一致する値を持つベクトル(1d行列)の値のインデックスを取得する方法が表示されます。 最も近い例は次のとおりです。OpenCVベクトルの検索値

Mat b; 
Mat a = b == 5; 

だからこれは私にブールの行列を与える必要があります。そして、私はそれを5に等しい値のインデックスを抽出するために使用することができます。より効果的な方法がありますか?ベクトルのすべての値をGPUにパラレルに送信して、5に等しい唯一の(または最初の)値のインデックスを返さなければなりません。

std::find(...); 
のような "アルゴリズム"フレームワークのものであってはなりません。

並列GPUソリューションにのみ興味があります。

答えて

0

変換縮小で簡単に行うことができます。

最初に、一致するベクトル要素をそのインデックスと不一致要素に変換して、大きな数、たとえばベクトルサイズにします。

次に、削減段階で最小値を見つけます。最小値は、配列内の最初に一致する要素のインデックスです。

これはO(log(n))アルゴリズムであり、GPUで効率的に行うことができます。

あなたは自分のカーネルを推し進めるか、書くことで実装できます。

https://thrust.github.io/doc/group__transformed__reductions.html