使用cuda Thrust进行多次出现子向量搜索

时间:2019-05-06 05:51:32

标签: cuda thrust

我想使用推力库在GPU中的设备矢量中查找子矢量的出现。

说一个str =“ aaaabaaab”数组,我需要查找substr =“ ab”的出现。

如何使用thrust::find函数搜索子向量?

简而言之,如何使用推力库实现字符串搜索算法?

1 个答案:

答案 0 :(得分:1)

如果推力没有提供一个以“典型推力方式”执行此功能的函数,并且您不希望使用推力函数序列(例如循环),我会同意以下意见:效率很低。

可以编写一个相当简单的CUDA内核,以蛮力方式做到这一点。

对于相对简单的CUDA内核,我们可以通过简单地将CUDA内核代码作为函子传递给推力每个元素的操作(例如{{1}),以“非推力式”方式实现推力等效的功能。 }或thrust::transform

这里是一个例子:

thrust::for_each

对于我不知道的这类问题,这种“强力”方法是否有效。也许有更好/更有效的方法,尤其是在搜索较长字符串的情况下。