推力适应推力:: remove_if所以谓词检查是否存在范围

时间:2017-10-03 20:57:03

标签: cuda thrust

我有两个拉链在一起的矢量。第三个向量存储在压缩矢量中的第一个向量上找到的唯一值的子集。我试图过滤压缩的矢量,这样只有第一个矢量值出现在滤波器矢量中的行才会保留在两个压缩矢量中。

因此,让我压缩在一起的向量中的值(按左值排序):

1|0
1|1
2|1
3|1
3|2

滤波器矢量中的值是(对应于第一列和d排序):

1
3

我希望我的输出成为:

1|0
1|1
3|1
3|2

因为在滤波器矢量中未找到值2,所以滤除了2 | 1。

现在我正在计划使用Vectorized Searches模块进行实现。因此,使用thrust :: binary_search搜索滤波器向量中元组左侧的值。关于是否在被搜索的范围内找到每个元素的输出然后变成模板,我用它来对压缩矢量运行thrust :: remove_if。

由于两个压缩矢量已按左手值的顺序排序,因此效率非常低。是否有更好的方法来解决这个问题?

0 个答案:

没有答案
相关问题