字符串匹配的方法、设备和异构计算系统的制作方法_6

文档序号:9646568阅读:来源:国知局
每个GPU核对应的待匹配的子字符串的匹配标志位的值从所述本地内存写入所述GPU的全局内存中,以使所述CPU从所述GPU的全局内存中将所述计算单元中的每个GPU核对应的待匹配的子字符串的匹配标志位的值读取到所述CPU的内存中。5.根据权利要求1-4中任一项所述的方法,其特征在于,所述计算单元中的每个GPU核分别获取对应的待匹配的子字符串之前,所述方法还包括: 所述计算单元中的每个GPU核分别从所述GPU的全局内存中读取所述自动机,其中,所述自动机是所述CPU根据所述多个模式串生成并存储到所述GPU的全局内存中的。6.根据权利要求1-4中任一项所述的方法,其特征在于,所述计算单元中的每个GPU核分别获取对应的待匹配的子字符串,包括: 所述计算单元中的每个GPU核分别从所述GPU的全局内存中将对应的待匹配的子字符串读取到自己的私有内存中。7.一种字符串匹配的方法,所述方法应用于异构计算系统中,所述异构计算系统包括:中央处理单元CPU和具有多个核的图形处理器GPU,所述GPU的多个核被划分成多个计算单元,所述多个计算单元中的每个计算单元包括多个GPU核,所述多个计算单元之间并行对数据进行处理,所述每个计算单元内部的多个GPU核之间并行对数据进行处理,其特征在于,所述方法包括: 所述CPU接收所述计算单元中的每个GPU核发送的第一匹配的结果,其中,所述每个GPU核发送的第一匹配的结果是所述每个GPU核根据获取的待匹配的子字符串和自动机中进行第一匹配得到的,其中,所述自动机是根据多个模式串预先生成的,所述自动机的每一个节点对应一个状态,在所述第一匹配的匹配过程中,所述计算单元中的每个GPU核在所述自动机的当前状态时,若没有匹配到模式串,则直接跳转到所述自动机的下一个状态进行匹配; 所述CPU根据所述每个GPU核的第一匹配的结果,确定是否对所述计算单元中的第一GPU核对应的待匹配的子字符串进行第二匹配,所述第一 GPU核为所述计算单元中的任意一个GPU核; 若所述CPU确定对所述第一 GPU核对应的待匹配的子字符串进行第二匹配,则所述CPU将所述第一 GPU核对应的待匹配的子字符串输入所述自动机进行第二匹配,并记录所述第一 GPU核对应的待匹配的子字符串的匹配信息。8.根据权利要求7所述的方法,其特征在于,所述每个GPU核发送的第一匹配的结果为所述每个GPU核对应的待匹配的子字符串的匹配标志位的值,其中,所述匹配标志位用于指示是否需要对对应的待匹配的子字符串进行所述第二匹配; 所述CPU根据所述计算单元中的每个GPU核的第一匹配的结果,确定是否对所述计算单元中的第一 GPU核对应的待匹配的子字符串进行第二匹配,包括: 所述CPU判断所述第一 GPU核对应的待匹配的子字符串的匹配标志位的值是否指示对所述第一 GPU核对应的待匹配的子字符串进行所述第二匹配; 若所述第一 GPU核对应的待匹配的子字符串的匹配标志位的值指示对所述第一 GPU核对应的待匹配的子字符串进行所述第二匹配,则所述CPU确定对所述第一 GPU核对应的待匹配的子字符串进行所述第二匹配。9.根据权利要求7所述的方法,其特征在于,所述方法还包括: 所述CPU接收待匹配的目标字符串,将所述目标字符串发送到所述GPU的全局内存中; 所述CPU按照分段规则将所述目标字符串划分成多个待匹配的子字符串,所述多个待匹配的子字符串中每一个待匹配的子字符串由所述计算单元中的一个GPU核处理。10.根据权利要求7-9中任一项所述的方法,其特征在于,所述方法还包括: 所述CPU根据所述多个模式串生成所述自动机,并将所述自动机发送到所述GPU的全局内存中。11.根据权利要求7-9中任一项所述的方法,其特征在于,所述第一GPU核对应的待匹配的子字符串的匹配信息包括:所述第一 GPU核对应的待匹配的子字符串匹配到的模式串的标识、所述第一 GPU核对应的待匹配的子字符串匹配到的模式串在所述第一 GPU核对应的待匹配的子字符串中的位置信息。12.—种图形处理器GPU,所述GPU应用于异构计算系统中,所述异构计算系统包括:中央处理单元CPU和所述GPU,所述GPU包括多个计算单元,所述多个计算单元中的每个计算单元包括多个GPU核,所述多个计算单元之间并行对数据进行处理,所述每个计算单元内部的多个GPU核之间并行对数据进行处理,其特征在于,所述计算单元中的每个GPU核包括: 获取模块,用于获取所述GPU核对应的待匹配的子字符串; 匹配模块,用于将所述待匹配的子字符串输入自动机中进行第一匹配,其中,所述自动机是根据多个模式串预先生成的,所述自动机的每一个节点对应一个状态,在所述第一匹配的匹配过程中,所述计算单元中的每个GPU核在所述自动机的当前状态时,若没有匹配到模式串,则直接跳转到所述自动机的下一个状态进行匹配; 发送模块,用于将所述待匹配的子字符串的第一匹配的结果发送给所述CPU,以使所述CPU根据所述计算单元中的每个GPU核的第一匹配的结果,对所述计算单元中的每个GPU核对应的待匹配的子字符串进行第二匹配。13.根据权利要求12所述的GPU,其特征在于,所述每个GPU核的第一匹配的结果为所述每个GPU核对应的待匹配的子字符串的匹配标志位的值,所述匹配标志位用于指示是否需要对对应的待匹配的子字符串进行所述第二匹配; 相应地,所述匹配模块还用于:更新所述待匹配的子字符串的匹配标志位的值; 所述发送模块,具体用于将所述待匹配的子字符串的匹配标志位的值发送给所述CPU。14.根据权利要求12所述的GPU,其特征在于,所述匹配模块具体用于: 若所述待匹配的子字符串匹配到了所述多个模式串中的至少一个模式串,则将所述待匹配的子字符串的匹配标志位的值更新为需要进行所述第二匹配; 若所述待匹配的子字符串没有匹配到所述多个模式串中任意一个模式串,则将所述待匹配的子字符串的匹配标志的值为更新为不需要进行所述第二匹配。15.根据权利要求13所述的GPU,其特征在于,所述发送单元具体用于: 将所述待匹配的子字符串的匹配标志位的值从所述GPU核的私有内存写入所述计算单元的本地内存中; 将所述待匹配的子字符串的匹配标志位的值从所述计算单元的本地内存写入所述GPU的全局内存中,以使所述CPU从所述GPU的全局内存中将所述待匹配的子字符串的匹配标志位的值读取到所述CPU的内存中。16.根据权利要求12-15中任一项所述的GPU,其特征在于,所述获取模块还用于: 从所述GPU的全局内存中读取所述自动机,其中,所述自动机是所述CPU根据所述多个模式串生成并存储到所述GPU的全局内存中的。17.根据权利要求12-15中任一项所述的GPU,其特征在于,所述获取模块具体用于: 从所述GPU的全局内存中将所述待匹配的子字符串读取到所述GPU核的私有内存中。18.一种中央处理器CPU,所述CPU应用于异构计算系统中,所述异构计算系统包括:所述CPU和图形处理器GPU,所述GPU包括多个计算单元,所述多个计算单元中的每个计算单元包括多个GPU核,所述多个计算单元之间并行对数据进行处理,所述每个计算单元内部的多个GPU核之间并行对数据进行处理,其特征在于,所述CPU包括: 接收模块,用于接收所述计算单元中的每个GPU核发送的第一匹配的结果,其中,所述每个GPU核发送的第一匹配的结果是所述每个GPU核根据获取的待匹配的子字符串和自动机中进行第一匹配得到的,其中,所述自动机是根据多个模式串预先生成的,所述自动机的每一个节点对应一个状态,在所述第一匹配的匹配过程中,所述计算单元中的每个GPU核在所述自动机的当前状态时,若没有匹配到模式串,则直接跳转到所述自动机的下一个状态进行匹配; 确定模块,用于根据所述每个GPU核的第一匹配的结果,确定是否对所述计算单元中的第一 GPU核对应的待匹配的子字符串进行第二匹配,所述第一 GPU核为所述计算单元中的任意一个GPU核; 匹配模块,用于若确定对所述第一 GPU核对应的待匹配的子字符串进行第二匹配,则所述CPU将所述第一 GPU核对应的待匹配的子字符串输入所述自动机进行第二匹配,并记录所述第一 GPU核对应的待匹配的子字符串的匹配信息。19.根据权利要求18所述的CPU,其特征在于,所述每个GPU核发送的第一匹配的结果为所述每个GPU核对应的待匹配的子字符串的匹配标志位的值,其中,所述匹配标志位用于指示是否需要对对应的待匹配的子字符串进行所述第二匹配; 所述确定模块具体用于:判断所述第一 GPU核对应的待匹配的子字符串的匹配标志位的值是否指示对所述第一 GPU核对应的待匹配的子字符串进行所述第二匹配; 若所述第一 GPU核对应的待匹配的子字符串的匹配标志位的值指示对所述第一 GPU核对应的待匹配的子字符串进行所述第二匹配,则确定对所述第一 GPU核对应的待匹配的子字符串进行所述第二匹配。20.根据权利要求18所述的CPU,其特征在于,所述CPU还包括:划分模块和发送模块; 所述接收模块,还用于接收待匹配的目标字符串; 所述划分模块,用于按照分段规则将所述目标字符串划分成多个待匹配的子字符串,所述多个待匹配的子字符串中每一个待匹配的子字符串由所述计算单元中的一个GPU核处理; 所述发送模块,用于将所述目标字符串发送到所述GPU的全局内存中。21.根据权利要求18-20中任一项所述的CPU,其特征在于,所述CPU还包括: 生成模块,用于根据所述多个模式串生成所述自动机,并将所述自动机发送到所述GPU的全局内存中。22.根据权利要求18-20中任一项所述的CPU,其特征在于,所述第一GPU核对应的待匹配的子字符串的匹配信息包括:所述第一 GPU核对应的待匹配的子字符串匹配到的模式串的标识、所述第一 GPU核对应的待匹配的子字符串匹配到的模式串在所述第一 GPU核对应的待匹配的子字符串中的位置信息。23.一种异构计算系统,所述异构计算系统包括:中央处理单元CPU和图形处理器GPU,所述GPU包括多个计算单元,所述多个计算单元中的每个计算单元包括多个GPU核,所述多个计算单元之间并行对数据进行处理,所述每个计算单元内部的多个GPU核之间并行对数据进行处理,其特征在于: 所述计算单元中的每个GPU核用于执行权利要求1-6中任一项所述的方法,所述CPU用于执行权利要求7-11中任一项所述的方法。
【专利摘要】本发明实施例提供一种字符串匹配的方法、设备和异构计算系统,包括:GPU的计算单元中的每个GPU核只对待匹配的子字符串进行第一匹配,通过第一匹配确定待匹配的子字符串是否匹配到了模式串,然后,每个GPU核将第一匹配的匹配结果发送给CPU,由CPU根据第一匹配结果对在第一匹配中匹配到模式串的待匹配的子字符串进行第二匹配。由于在第一匹配时,若匹配到了模式串,GPU核并不记录待匹配的子字符串的匹配信息,从而使得GPU核在匹配态和非匹配态时的执行时间相同,因此,当某个GPU核没有匹配到模式串时,也不需要等待计算单元中匹配到模式串的GPU核的执行,而是直接跳转到自动机的下一个状态进行匹配,从而缩短了GPU核的匹配时间,提高了GPU核的匹配效率。
【IPC分类】G06F17/30, G06F9/38
【公开号】CN105404635
【申请号】CN201410472862
【发明人】廖勇, 文刘飞, 朱葛
【申请人】华为技术有限公司, 电子科技大学
【公开日】2016年3月16日
【申请日】2014年9月16日
当前第6页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1