天天看点

GPGPU OpenCL 精确字符串查找

字符串查找是信息安全、信息过滤领域的重要操作,尤其是对大文本的实时处理。这篇作为实例,使用GPU OpenCL进行精确模式串查找。

1.加速方法

  (1)将少量常量数据,如模式串长度、文本长度等,保存在线程的private memory中。

  (2)将模式串保存在GPU的local memory中,加速线程对模式串的访问。

  (3)将待查找的文本保存在global memory中,使用尽可能多线程访问global memory,减小线程平均访存时间。

  (4)每个work-group中的线程操作文本中一段,多个work-group并行处理大文本。

2.同步

  (1)work-group内,使用CLK_LOCAL_MEM_FENCE、CLK_GLOBAL_MEM_FENCE

  (2)全局使用对__global int 的原子操作,来保证每个线程将结果写到全局内存的正确位置。设备支持的操作可以通过查询设备的扩展获得,如下图,可知核函数支持原子操作、printf操作:

  

GPGPU OpenCL 精确字符串查找

3.代码实例,大文本精确模式串搜索

3.1 核函数(string_search_kernel.cl):

3.2.tool.h 、tool.cpp

3.3 StringSearch.cpp

GPGPU OpenCL 精确字符串查找
GPGPU OpenCL 精确字符串查找

View Code

继续阅读