我想使用推力库在GPU中的设备矢量中查找子矢量的出现。
说一个str =“ aaaabaaab”数组,我需要查找substr =“ ab”的出现。
如何使用thrust::find
函数搜索子向量?
简而言之,如何使用推力库实现字符串搜索算法?
答案 0 :(得分:1)
如果推力没有提供一个以“典型推力方式”执行此功能的函数,并且您不希望使用推力函数序列(例如循环),我会同意以下意见:效率很低。
可以编写一个相当简单的CUDA内核,以蛮力方式做到这一点。
对于相对简单的CUDA内核,我们可以通过简单地将CUDA内核代码作为函子传递给推力每个元素的操作(例如{{1}),以“非推力式”方式实现推力等效的功能。 }或thrust::transform
。
这里是一个例子:
thrust::for_each
对于我不知道的这类问题,这种“强力”方法是否有效。也许有更好/更有效的方法,尤其是在搜索较长字符串的情况下。