tat*_*at0 5 search cuda binary-search lower-bound thrust
我正在尝试使用Thrust来检测是否可以在另一个数组中找到数组的每个元素以及在哪里(两个数组都已排序).我遇到了矢量化搜索例程(lower_bound和binary_search).
lower_bound将为每个值返回索引,该索引可以在列表中插入,并遵循其排序.
我还需要知道是否找到了值(可以使用binary_search完成),而不仅仅是它的位置.
是否有可能在不进行两次搜索的情况下有效地实现这两种搜索(调用binary_search然后调用lower_bound)?
我知道在标量情况下,如果找不到值,lower_bound将返回指向数组末尾的指针,但这在矢量化版本中不会发生.
谢谢!
您可以检查返回的元素是否lower_bound与您搜索的元素相同。例如给出a = {1,3,5}并搜索b = {1,4},结果将是c = {0,2}。我们有a[c[0]] == b[0],如此b[0]在a,但a[c[1]] != b[1]如此b[1]不在a。
(请注意,您需要确保不会进行任何越界内存访问,因为lower_bound可能会返回超出数组末尾的索引。)
| 归档时间: |
|
| 查看次数: |
1221 次 |
| 最近记录: |