[发明专利]基于GPU计算的字符串匹配方法和系统有效
| 申请号: | 201310509249.0 | 申请日: | 2013-10-23 | 
| 公开(公告)号: | CN103559018A | 公开(公告)日: | 2014-02-05 | 
| 发明(设计)人: | 侯智瀚;杨枭 | 申请(专利权)人: | 东软集团股份有限公司 | 
| 主分类号: | G06F9/38 | 分类号: | G06F9/38 | 
| 代理公司: | 北京鸿元知识产权代理有限公司 11327 | 代理人: | 陈英俊 | 
| 地址: | 110179 辽*** | 国省代码: | 辽宁;21 | 
| 权利要求书: | 查看更多 | 说明书: | 查看更多 | 
| 摘要: | |||
| 搜索关键词: | 基于 gpu 计算 字符串 匹配 方法 系统 | ||
1.一种基于GPU计算的字符串匹配方法,包括CPU预处理阶段和GPU匹配阶段;其中,
在所述CPU预处理阶段的过程中:
对所述特征字符串进行预处理;其中,首先构建位向量掩码表,并根据所述位向量掩码表生成快速过滤子表;然后将所述位向量掩码表和所述快速过滤子表拷贝到GPU全局存储器;
分别在CPU主存和所述GPU全局存储器上分配待匹配数据缓存和结果缓存;
对待匹配数据进行预处理,并将预处理后的待匹配数据从所述CPU主存中的所述待匹配数据缓存中复制到所述GPU全局存储器中的所述待匹配数据缓存中保存;
在所述GPU匹配阶段的过程中,
根据对所述特征字符串进行预处理所构建的位相量掩码表以及生成的快速过滤子表,采用GPU多线程任务并行执行方式对每个GPU线程中的预处理后的待匹配数据分别与预处理后的所述特征字符串前缀和所述特征字符串后缀进行匹配;
将匹配成功的待匹配数据与相应的所述特征字符串逐字进行确认,并保存在所述结果缓存中,最后将结果缓存的数据拷贝到所述CPU主存中的所述结果缓存中。
2.如权利要求1所述的基于GPU计算的字符串匹配方法,其中,
在所述CPU预处理阶段的过程中,
将拷贝有所述位向量掩码表和所述快速过滤子表的所述GPU全局存储器与纹理存储器绑定;
将保存有所述待匹配数据的GPU全局存储器与所述纹理存储器绑定。
3.如权利要求2所述的基于GPU计算的字符串匹配方法,其中,
在通过GPU多线程任务并行执行方式对预处理后的待匹配数据与所述特 征字符串前缀和所述特征字符串后缀分别进行匹配的过程中,
根据所述每个GPU线程的标识确定预处理后的待匹配数据的起始偏移,根据第一特征字符串前缀的长度和第二特征字符串前缀的长度确定所述GPU线程的匹配窗口;
从距离所述预处理后的待匹配数据的起始偏移的第一特征字符串前缀长度的位置上,获取一个算法字符,根据所述算法字符在所述纹理存储器中查到所述快速过滤子表的相应比特位,根据所述相应比特位判断所述GPU线程是否继续执行;如果所述相应比特位为0,结束所述GPU线程执行,如果所述相应比特位为1,则所述GPU线程继续执行;
如果所述相应比特位为1时,根据所述算法字符在所述纹理存储器中查到所述位向量掩码表获取一个位向量掩码值,将所述位向量掩码值设为初始状态向量,以所述算法字符的位置作为起点,在所述GPU线程的匹配窗口内正向依次获取所述算法字符,以位并行方式进行向量更新,在所述向量更新过程中,所述预处理后的待匹配数据与所述特征字符串后缀进行匹配;
根据所述特征字符串后缀的匹配结果,将在以位并行方式进行向量更新中获取的最后的状态向量作为初始向量,以距离所述预处理后的待匹配数据的起始偏移的第二特征字符串前缀长度的位置作为起点,在所述GPU线程的匹配窗口内反向依次获取算法字符,以位并行方式进行反向向量更新;在所述反向向量更新中,所述预处理后的待匹配数据与所述特征字符串前缀进行匹配。
4.如权利要求3所述的基于GPU计算的字符串匹配方法,其中,
在所述每个GPU线程在一个匹配窗口内进行字符串匹配的过程中,
所述匹配窗口的长度等于一个第一特征字符串长度跟一个第二特征字符串长度的和;相邻两个所述GPU线程处理预处理后的待匹配数据的起始位置的距离为一个所述第一特征字符串长度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东软集团股份有限公司,未经东软集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310509249.0/1.html,转载请声明来源钻瓜专利网。





