我无法在文档中找到任何实现,这将显示我如何检索具有匹配值的向量(1d矩阵)中的值的索引。 最接近的例子是:
Mat b;
Mat a = b == 5;
所以这应该给我一个布尔矩阵。然后我可以使用它来提取等于5的值的索引。是否有更高效的方法?它应该将向量中的所有值并行发送到GPU,然后返回唯一(或第一个)等于5的值的索引。 它不应该是"算法"框架,如:
std::find(...);
只对并行GPU解决方案感兴趣。
答案 0 :(得分:0)
可以通过变换减少轻松完成。
首先,将匹配的矢量元素转换为索引,将不匹配的元素转换为大数,例如矢量大小。
然后在缩小阶段,你会找到最小值,它是数组中第一个匹配元素的索引。
这是一个O(log(n))算法,可以通过GPU有效地完成。
您可以通过推动或编写自己的内核来实现它。
https://thrust.github.io/doc/group__transformed__reductions.html