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

文档序号:9646568阅读:来源:国知局
子字符串;
[0039]匹配模块,用于将所述待匹配的子字符串输入自动机中进行第一匹配,其中,所述自动机是根据多个模式串预先生成的,所述自动机的每一个节点对应一个状态,在所述第一匹配的匹配过程中,所述计算单元中的每个GPU核在所述自动机的当前状态时,若没有匹配到模式串,则直接跳转到所述自动机的下一个状态进行匹配;
[0040]发送模块,用于将所述待匹配的子字符串的第一匹配的结果发送给所述CPU,以使所述CPU根据所述计算单元中的每个GPU核的第一匹配的结果,对所述计算单元中的每个GPU核对应的待匹配的子字符串进行第二匹配。
[0041]结合本发明第三方面,在本发明第三方面的第一种可能的实现方式中,所述每个GPU核的第一匹配的结果为所述每个GPU核对应的待匹配的子字符串的匹配标志位的值,所述匹配标志位用于指示是否需要对对应的待匹配的子字符串进行所述第二匹配;
[0042]相应地,所述匹配模块还用于:更新所述待匹配的子字符串的匹配标志位的值;
[0043]所述发送模块,具体用于将所述待匹配的子字符串的匹配标志位的值发送给所述CPU。
[0044]结合本发明第三方面的第一种可能的实现方式,在本发明第三方面的第二种可能的实现方式中,所述匹配模块具体用于:
[0045]若所述待匹配的子字符串匹配到了所述多个模式串中的至少一个模式串,则将所述待匹配的子字符串的匹配标志位的值更新为需要进行所述第二匹配;
[0046]若所述待匹配的子字符串没有匹配到所述多个模式串中任意一个模式串,则将所述待匹配的子字符串的匹配标志的值为更新为不需要进行所述第二匹配。
[0047]结合本发明第三方面的第一种可能的实现方式,在本发明第三方面的第三种可能的实现方式中,所述发送单元具体用于:
[0048]将所述待匹配的子字符串的匹配标志位的值从所述GPU核的私有内存写入所述计算单元的本地内存中;
[0049]将所述待匹配的子字符串的匹配标志位的值从所述计算单元的本地内存写入所述GPU的全局内存中,以使所述CPU从所述GPU的全局内存中将所述待匹配的子字符串的匹配标志位的值读取到所述CPU的内存中。
[0050]结合本发明第三方面以及本发明第三方面的第一种至第三种可能的实现方式,在本发明第三方面的第四种可能的实现方式中,所述获取模块还用于:
[0051 ] 从所述GPU的全局内存中读取所述自动机,其中,所述自动机是所述CPU根据所述多个模式串生成并存储到所述GPU的全局内存中的。
[0052]结合本发明第三方面以及本发明第三方面的第一种至第三种可能的实现方式,在本发明第三方面的第五种可能的实现方式中,所述获取模块具体用于:
[0053]从所述GPU的全局内存中将所述待匹配的子字符串读取到所述GPU核的私有内存中。
[0054]本发明第四方面提供一种中央处理器CPU,所述CPU应用于异构计算系统中,所述异构计算系统包括:所述CPU和图形处理器GPU,所述GPU包括多个计算单元,所述多个计算单元中的每个计算单元包括多个GPU核,所述多个计算单元之间并行对数据进行处理,所述每个计算单元内部的多个GPU核之间并行对数据进行处理,所述CPU包括:
[0055]接收模块,用于接收所述计算单元中的每个GPU核发送的第一匹配的结果,其中,所述每个GPU核发送的第一匹配的结果是所述每个GPU核根据获取的待匹配的子字符串和自动机中进行第一匹配得到的,其中,所述自动机是根据多个模式串预先生成的,所述自动机的每一个节点对应一个状态,在所述第一匹配的匹配过程中,所述计算单元中的每个GPU核在所述自动机的当前状态时,若没有匹配到模式串,则直接跳转到所述自动机的下一个状态进行匹配;
[0056]确定模块,用于根据所述每个GPU核的第一匹配的结果,确定是否对所述计算单元中的第一 GPU核对应的待匹配的子字符串进行第二匹配,所述第一 GPU核为所述计算单元中的任意一个GPU核;
[0057]匹配模块,用于若确定对所述第一 GPU核对应的待匹配的子字符串进行第二匹配,则所述CPU将所述第一 GPU核对应的待匹配的子字符串输入所述自动机进行第二匹配,并记录所述第一 GPU核对应的待匹配的子字符串的匹配信息。
[0058]结合本发明第四方面,在本发明第四方面的第一种可能的实现方式中,所述每个GPU核发送的第一匹配的结果为所述每个GPU核对应的待匹配的子字符串的匹配标志位的值,其中,所述匹配标志位用于指示是否需要对对应的待匹配的子字符串进行所述第二匹配;
[0059]所述确定模块具体用于:判断所述第一 GPU核对应的待匹配的子字符串的匹配标志位的值是否指示对所述第一 GPU核对应的待匹配的子字符串进行所述第二匹配;
[0060]若所述第一 GPU核对应的待匹配的子字符串的匹配标志位的值指示对所述第一GPU核对应的待匹配的子字符串进行所述第二匹配,则确定对所述第一 GPU核对应的待匹配的子字符串进行所述第二匹配。
[0061 ] 结合本发明第四方面,在本发明第四方面的第二种可能的实现方式中,所述CPU还包括:划分模块和发送模块;
[0062]所述接收模块,还用于接收待匹配的目标字符串;
[0063]所述划分模块,用于按照分段规则将所述目标字符串划分成多个待匹配的子字符串,所述多个待匹配的子字符串中每一个待匹配的子字符串由所述计算单元中的一个GPU核处理;
[0064]所述发送模块,用于将所述目标字符串发送到所述GPU的全局内存中。
[0065]结合本发明第四方面以及本发明第四方面的第一种和第二种可能的实现方式,在本发明第四方面的第三种可能的实现方式中,所述CPU还包括:
[0066]生成模块,用于根据所述多个模式串生成所述自动机,并将所述自动机发送到所述GPU的全局内存中。
[0067]结合本发明第四方面以及本发明第四方面的第一种和第二种可能的实现方式,在本发明第四方面的第四种可能的实现方式中,所述第一 GPU核对应的待匹配的子字符串的匹配信息包括:所述第一 GPU核对应的待匹配的子字符串匹配到的模式串的标识、所述第一 GPU核对应的待匹配的子字符串匹配到的模式串在所述第一 GPU核对应的待匹配的子字符串中的位置信息。
[0068]本发明第五方面提供一种异构计算系统,所述异构计算系统包括:中央处理单元CPU和图形处理器GPU,所述GPU包括多个计算单元,所述多个计算单元中的每个计算单元包括多个GPU核,所述多个计算单元之间并行对数据进行处理,所述每个计算单元内部的多个GPU核之间并行对数据进行处理,其中,所述计算单元中的每个GPU核用于执行本发明第一方面以及本发明第一方面的第一种至第五种可能的实现方式提供的任一项所述的方法,所述CPU用于执行本发明第二方面以及本发明第二方面的第一种至第四种可能的实现方式提供的任一项所述的方法。
[0069]本发明实施例提供的字符串匹配的方法、设备和异构计算系统,GPU的计算单元中的每个GPU核只对对应的待匹配的子字符串进行第一匹配,通过第一匹配能够确定各待匹配的子字符串是否匹配到了某一个模式串,然后,将第一匹配的匹配结果发送给CPU,由CPU根据第一匹配结果对在第一匹配中匹配到模式串的待匹配的子字符串进行第二匹配。由于每个GPU核在第一匹配的匹配过程中,在匹配到模式串后并不记录待匹配的子字符串的匹配信息,从而使得GPU核在匹配态和非匹配态时所需的执行时间相同,因此,当GPU核在非匹配态时,不需要浪费时间等待计算单元中的其他GPU核的执行,而是直接跳转到该自动机的下一个状态进行匹配,从而缩短了 GPU核的匹配时间,提高了 GPU核的匹配效率,也提高了 GPU核的计算资源的利用率。
【附图说明】
[0070]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0071]图1为现有技术中异构计算环境下字符串模式匹配的流程示意图;
[0072]图2为本发明各实施例所适用的一种异构计算系统的结构示意图;
[0073]图3为多核CPU的一种结构示意图;
[0074]图4为GPU的一个计算单元的结构示意图;
[0075]图5为本发明实施例一提供的字符串匹配的方法的流程图;
[0076]图6为自动机的一种结构示意图;
[0077]图7为现有技术中GPU的执彳丁时序的不意图;
[0078]图8为本实施例提供的字符串匹配的方法中GPU的执行时序的示意图;
[0079]图9为本发明实施例二提供的字符串匹配的方法的流程图;
[0080]图10为GPU的内存的一种结构示意图;
[0081]图11为本发明实施例三提供的字符串匹配的方法的流程图;
[0082]图12为CPU的执行时序的示意图;
[0083]图13为目标字符串的一种分段示意图;
[0084]图14为本发明实施例四提供的GPU核的结构示意图;
[0085]图15为本发明实施例五提供的CPU的结构示意图;
[0086]图16为本发明实施例六提供的CPU的结构示意图;
[0087]图17为本发明实施例七提供的异构计算系统的结构示意图。
【具体实施方式】
[0088]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0089]本发明各实施例的方法适用于异构计算系统,图2为本发明各实施例所适用的一种异构计算系统的结构示意图,如图2所示,该异构计算系统包括-.CPU和GPU,所述GPU包括多个计算单元,多个计算单元中的每个计算单元包括多个GPU核,该多个计算单元之间并行对数据进行处理,每个计算单元内部的多个GPU核之间并行对数据进行处理,每个计算单元中有一个控制单元。其中,该CPU可以包括一个或多个处理器核,图3为多核CPU的一种结构示意图,如图3所示,CPU包括4个CPU核,每个CPU核包括控制单元和运算单元,其中,控制单元主要负责取指令、指令解码等指令执行流程的控制,运算单元用于根据控制单元发送的指令进行运算,CPU的各个处理器核相对独立进行运算。图4为GPU的一个计算单元的结构示意图,如图4所示,该计算单元包括4个GPU核和一个控制单元,该控制单元主要负责取指令、指令解码等指令执行流程的控制,GHJ核用于根据控制单元发送的指令进行运算。由于GPU的计算单元内部的各个GPU核共享一个控制单元,因此,GPU采用SM)的执行方式,即计算单元内的各个GPU核在同一时刻执行相同的指令处理不同的数据。
[0090]图5为本发明实施例一提供的字符串匹配的方法的流程图,如图5所示,本实施例提供的字符串匹
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1