CN103559017B - 基于gpu异构计算平台的字符串匹配方法及系统 - Google Patents

基于gpu异构计算平台的字符串匹配方法及系统 Download PDF

Info

Publication number
CN103559017B
CN103559017B CN201310508005.0A CN201310508005A CN103559017B CN 103559017 B CN103559017 B CN 103559017B CN 201310508005 A CN201310508005 A CN 201310508005A CN 103559017 B CN103559017 B CN 103559017B
Authority
CN
China
Prior art keywords
matched
data
gpu
cpu
matching
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310508005.0A
Other languages
English (en)
Other versions
CN103559017A (zh
Inventor
侯智瀚
杨枭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Neusoft Corp
Original Assignee
Neusoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Neusoft Corp filed Critical Neusoft Corp
Priority to CN201310508005.0A priority Critical patent/CN103559017B/zh
Publication of CN103559017A publication Critical patent/CN103559017A/zh
Application granted granted Critical
Publication of CN103559017B publication Critical patent/CN103559017B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供了一种基于GPU异构计算平台的字符串匹配方法及系统,其中的方法包括预处理阶段和匹配阶段;其中,在预处理阶段包括对特征字符串进行预处理,以及分别在CPU主存和GPU全局存储器上分配待匹配数据缓存和结果缓存;在匹配阶段对待匹配数据与特征字符串进行匹配,包括在对待匹配数据进行预处理后,在GPU中对待匹配数据与特征字符串的前缀进行匹配,将匹配成功的待匹配数据按命中位置复制到结果缓存中,然后将结果缓存中的数据复制到CPU主存的结果缓存中;在CPU中,通过散列方式找到与命中位置相对应的特征字符串,将待匹配数据与特征字符串逐字进行匹配确认。通过本发明能够缩短线程流程及减少线程流程分支,提升字符串的匹配效率。

Description

基于GPU异构计算平台的字符串匹配方法及系统
技术领域
本发明涉及信息识别技术领域,更为具体地,涉及一种基于GPU异构计算平台的字符串匹配方法及系统。
背景技术
随着信息技术的高速发展,人们对计算机处理器的计算需求量也越来越大。为了满足日益增长的计算需求量,出现了由不同类型处理器组成的新型异构计算平台,而由于GPU(Graphic Processing Unit,图形处理器)技术有着强大的计算能力和高速的存储带宽,因此,伴随着GPU技术的快速发展,基于GPU的异构计算平台开始纷纷涌现。
由于基于GPU的异构计算平台能够适应极高并行度的运算环境,并且能够表现出良好的性能,因此被广泛地应用于各个领域(例如油气勘探、金融安全评估等)的海量数据计算中。同样,在网络安全领域内,在X86架构的计算资源缺乏的情况下,由于使用CPU和GPU组成的异构计算平台在处理深度报文检测时,可以带来很高的性能提升,因此由CPU和GPU组成的异构计算平台逐渐成为计算领域的一种新的计算模型。
在采用CPU和GPU组成的异构计算平台中,CPU高效处理串行事务,而GPU则处理并行事务,基于GPU的异构计算平台通过将工作负载的不同部分指派到最适合的处理器,以极大提升深度网络报文检测系统的整体性能,然而深度报文检测的主要瓶颈在于字符串的匹配。
目前,在已有的基于GPU的字符串匹配方法中,首先在CPU上进行预处理相关操作,在匹配执行阶段,CPU仅负责数据采集、拷贝、匹配结果处理等调度性质的工作,特征匹配过程完全由GPU完成。整个系统中,CPU有较多的空闲计算资源。如果能够合理的调度这部分空闲计算资源,可以提升系统整体执行效率。
在GPU模式匹配算法方面,目前采用二维表自动基类算法,如《基于GPU的高速网络报文内容检测方法》和《Accelerating Pattern Matching Using a Novel ParallelAlgorithm on GPU》中所采用的二维表自动基类算法,其中以《Accelerating PatternMatching Using a Novel Parallel Algorithm on GPU》文中提到的PFAC算法相对较优。PFAC采用任务并行方式,每个字符都作为起始偏移,启动一个线程进行匹配,线程之间形成互补,消除了传统AC算法的回溯过程,缩小每个线程的最长执行路径,使其更适合GPU并发进行计算的特点。但它的缺点在于,每次自动机状态更新都需要执行一次大范围随机寻址的访存操作,尤其是在匹配模式串数量较多的情况下,会影响cache利用率,进而影响匹配效率。
如果仅考虑使用CPU为计算平台,用位并行过滤类算法替代二维表自动基类算法,一般都能够大幅提升匹配效率,匹配的特征串数量越多,匹配效率的提升就越明显。位并行过滤类算法更好的利用了空间局部性,在提升过滤过程的执行效率时,仅有很低的概率会执行匹配确认部分。如果匹配确认执行次数越多,过滤类算法的整体效率就越低。由于在大多数的应用场景中,匹配过程不会发生命中或者命中较少,其过滤过程的执行效率也可视为整体匹配过程的执行效率,因此,在此种场景下的过滤类算法通常优于二维表自动机类算法。
但在GPU上,却放大了过滤类算法的匹配确认过程对整体性能的影响。如果有线程进入了匹配确认过程,那么它就有较长的执行路径和较久的执行时间,干扰线程调度,加大了处理异常分支的成本,进而拖慢整体匹配效率。在一次多线程匹配结束后,需要将结果同步,此时需要等待最慢的线程执行结束,也会影响整体效率。因此,如果仅使用GPU作为计算平台,位并行过滤类算法没有明显优势,相反地会更加依赖运行环境。
综上所述,现有的基于GUP的异构计算平台在匹配字符串时存在以下两点问题:
1、没有充分利用CPU计算资源。现有的基于GPU的异构计算平台仅利用CPU执行数据采集、拷贝等调度性质的工作,而在整个系统中,CPU有较多的空闲计算资源,如果可以合理调度空闲资源,可提升整体效率。
2、模式匹配算法还有改进的余地。如上所述,将二维表类自动机算法替换成位并行过滤算法可以大幅提升不命中场景下的性能,但也因为异常分支处理使部分线程进入超长执行路径,使系统整体性能过分依赖环境,某些场景性能更差,如能解决这个问题,匹配过程的性能也将会有明显改善。
发明内容
鉴于上述问题,本发明的目的是提供一种基于GPU异构计算平台的字符串匹配方法及系统,以充分利用CPU的计算资源并且缩短线程流程及减少线程流程分支,达到提升字符串的匹配效率的目的。
一方面,本发明提供一种基于GPU异构计算平台的字符串匹配方法,包括预处理阶段和匹配阶段,其中,预处理阶段在CPU中进行,包括:
对特征字符串进行预处理;其中,以位并行过滤方式构建位向量掩码表,并将位向量掩码表的每行进行压缩,形成快速过滤子表,将位向量掩码表和快速过滤子表复制到GPU全局存储器;
分别在CPU主存和GPU全局存储器上分配待匹配数据缓存和结果缓存;
在匹配阶段对待匹配数据与特征字符串进行匹配,包括:
对待匹配数据进行预处理,将预处理后的待匹配数据从CPU主存的待匹配数据缓存中复制到GPU全局存储器的待匹配数据缓存中进行保存;
在GPU中,采用位并行过滤方式对待匹配数据与特征字符串的前缀进行匹配,将与特征字符串的前缀匹配成功的待匹配数据按命中位置复制到GPU全局存储器的结果缓存中,然后将GPU全局存储器的结果缓存中的数据复制到CPU主存的结果缓存中;
在CPU中,通过散列方式找到与命中位置相对应的特征字符串,将待匹配数据与特征字符串逐字进行匹配确认。
其中,GPU全局存储器的结果缓存中的数据包括匹配命中标识和匹配结果;其中,在对待匹配数据与特征字符串的前缀进行匹配的过程中,如果与特征字符串的前缀匹配成功,则将匹配命中标识设置为1,否则将匹配命中标识设置为0,然后将匹配命中标识复制到CPU主存的结果缓存中;在CPU中对匹配命中标识进行判断,其中,如果匹配命中标识非0,则继续将GPU全局存储器的结果缓存中的匹配结果复制到CPU主存的结果缓存中。
另一方面,本发明还提供一种基于GPU异构计算平台的字符串匹配系统,包括预处理单元和匹配单元,其中,预处理单元在CPU中进行,包括:
特征字符串预处理单元,用于对特征字符串进行预处理;其中,以位并行过滤方式构建位向量掩码表,并将位向量掩码表的每行进行压缩,形成快速过滤子表,将位向量掩码表和快速过滤子表复制到GPU全局存储器;
缓存分配单元,用于分别在CPU主存和GPU全局存储器上分配待匹配数据缓存和结果缓存;
匹配单元,用于对待匹配数据与特征字符串进行匹配,包括:
待匹配数据预处理单元,用于对待匹配数据进行预处理,将预处理后的待匹配数据从CPU主存的待匹配数据缓存中复制到GPU全局存储器的待匹配数据缓存中进行保存;
前缀匹配单元,用于在GPU中,采用位并行过滤方式对待匹配数据与特征字符串的前缀进行匹配,将与特征字符串的前缀匹配成功的待匹配数据按命中位置复制到GPU全局存储器的结果缓存中,然后将GPU全局存储器的结果缓存中的数据复制到CPU主存的结果缓存中;
匹配确认单元,用于在CPU中,通过散列方式找到与命中位置相对应的特征字符串,将待匹配数据与特征字符串逐字进行匹配确认。
利用上述根据本发明的基于GPU异构计算平台的字符串匹配方法及系统,通过利用GPU进行高速过滤,再利用CPU进行字符串匹配命中确认,同时采用流式处理的并行执行方式,在充分发挥GPU的并行计算优势以及CPU的单线程计算优势的同时,能够缩短线程流程及减少线程流程分支,提升字符串的匹配效率。
为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
附图说明
通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:
图1为根据本发明实施例的基于GPU异构计算平台的字符串匹配方法流程示意图;
图2为根据本发明实施例的基于GPU异构计算平台的字符串匹配系统逻辑结构框图。
在所有附图中相同的标号指示相似或相应的特征或功能。
具体实施方式
以下将结合附图对本发明的具体实施例进行详细描述。
针对前述现有的基于GPU的字符串匹配方法没有充分利用CPU的计算资源,以及匹配确认过程会影响整体的匹配效率和依赖运行环境的问题,本发明通过先利用GPU的并行计算能力对待匹配数据进行过滤,然后再利用CPU进行字符串匹配命中确认,同时在匹配阶段采用流式处理的并行执行方式进行字符串匹配,在充分利用GPU和CPU的优势的同时,缩短线程流程及减少线程流程分支,从而提升字符串的匹配效率。
为了详细的说明本发明提供的基于GPU异构计算平台的字符串匹配方法,图1示出了根据本发明实施例的基于GPU异构计算平台的字符串匹配方法流程。
如图1所示,本发明提供的基于GPU异构计算平台的字符串匹配方法包括预处理阶段和匹配阶段,其中,预处理阶段在CPU中进行,其工作流程包括:
S111:对特征字符串进行预处理;其中,以位并行过滤方式构建位向量掩码表,并将位向量掩码表的每行进行压缩,形成快速过滤子表,将位向量掩码表和快速过滤子表复制到GPU全局存储器。
其中,在将位向量掩码表和快速过滤子表复制到GPU全局存储器之后,将GPU全局存储器与纹理存储器绑定。
通常位并行过滤算法首先需要截取每个特征字符串的前缀,然后依据这些前缀构建位向量掩码表。也就是说,在以位并行过滤方式构建位向量掩码表的过程中,截取每个特征字符串的前缀,根据所截取的前缀构建位向量掩码表。
其中,特征字符串前缀长度是通过对特征字符串的数据及长度的统计分析得到的,一个特征字符串集合最终会选定一个或者多个特征串前缀长度。这些截取的前缀是特征字符串命中的必要条件。在下述的匹配阶段,分为过滤和匹配确认两个步骤,其中,在过滤步骤中,先匹配特征字符串的前缀,当过滤步骤执行结束,如果发生过前缀匹配,再通过匹配确认步骤来比对完整的特征字符串。
具体地,在本发明的一个示例中,集合中包含A、B、C、D四个特征字符串,假设最终确定的前缀长度包括3和5,那么特征字符串A、B、C最终截取的前缀即是它们本身,而特征字符串D长度超过5,那么特征字符串D只有前5个字符会参与过滤匹配,其余部分都要在匹配确认步骤中完成匹配。
S112:分别在CPU主存和GPU全局存储器上分配待匹配数据缓存和结果缓存。
其中,GPU全局存储器的结果缓存中的数据包括匹配命中标识和匹配结果。也就是说,GPU全局存储器的结果缓存包括两块缓存,一块是匹配命中标识,长度为1,宽度为4字节;另一块为匹配结果,长度为待匹配数据缓存大小,宽度为1字节。待匹配数据缓存的大小根据GPU计算能力和网络吞吐实际情况,既能够启动足够多的线程又使得网卡以最小延时来积攒这些长度的数据包。
在匹配阶段对待匹配数据与特征字符串进行匹配,其工作流程包括:
S121:对待匹配数据进行预处理,将预处理后的待匹配数据从CPU主存的待匹配数据缓存中复制到GPU全局存储器的待匹配数据缓存中进行保存。
其中,在将预处理后的待匹配数据从CPU主存的待匹配数据缓存中复制到GPU全局存储器的待匹配数据缓存中进行保存之后,将保存待匹配数据的GPU全局存储器与纹理存储器绑定。
具体地,将保存待匹配数据的GPU全局存储器与纹理存储器绑定的目的是为了通过缓存加快访存速度。
需要说明的是,为了提高字符串匹配时的并行执行效率,不仅需要考虑待匹配数据缓存和结果缓存的长度,还需要考虑CPU与GPU之间的数据交互。
由于PCI-E接口的传输性能总是随着数据总量的增大而增加,到一定数值达到峰值,因此,根据使用的PCI-E版本和通道数目,通过计算GPU匹配函数在匹配不同长度的数据时的执行时间,得到一个最优的数据长度,使待匹配数据的复制时间和处理该长度的GPU匹配函数的执行时间大致相等,最终使得数据复制和GPU匹配函数的并行执行程度达到最高。在本发明中,CPU使用的主存与GPU使用的显存之间的数据复制是通过PCI-E接口传输的。
也就是说,在本发明中,通过PCI-E接口将预处理后的待匹配数据从CPU主存的待匹配数据缓存中复制到GPU全局存储器的待匹配数据缓存中进行保存。
S122:在GPU中,采用位并行过滤方式对待匹配数据与特征字符串的前缀进行匹配,将与特征字符串的前缀匹配成功的待匹配数据按命中位置复制到GPU全局存储器的结果缓存中,然后将GPU全局存储器的结果缓存中的数据复制到CPU主存的结果缓存中。
其中,在对待匹配数据与特征字符串的前缀进行匹配的过程中,如果与特征字符串的前缀匹配成功,则将匹配命中标识设置为1,否则将匹配命中标识设置为0,然后将匹配命中标识复制到CPU主存的结果缓存中;在CPU中对匹配命中标识进行判断,其中,如果匹配命中标识非0,则继续将GPU全局存储器的匹配结果缓存中的匹配结果复制到CPU主存的结果缓存中。
具体地,首先仅对特征字符串的前缀进行匹配,如果未发生匹配命中,则将GPU全局存储器的结果缓存中的匹配命中标识设置为0;如果前缀匹配命中,则将GPU全局存储器的结果缓存中的匹配命中标识设置为1,同时将与特征字符串的前缀匹配成功的待匹配数据按命中位置复制到GPU全局存储器的结果缓存中。
在将GPU全局存储器的结果缓存中的匹配结果复制到CPU主存的结果缓存中的过程中,首先将GPU全局存储器的结果缓存中的匹配命中标识复制到CPU主存的结果缓存中,然后在CPU中对该匹配命中标识进行判断,如果该匹配命中标识非0,则继续将GPU全局存储器的结果缓存中的匹配结果缓存中的数据复制到CPU主存。
S123:在CPU中,通过散列方式找到与命中位置相对应的特征字符串,将待匹配数据与特征字符串逐字进行匹配确认。
具体地,使用CPU的SIMD技术快速找到CPU主存的结果缓存中的非0位置,通过散列算法找到与之相对应的原特征字符串,并逐字进行比较确认,至此整个字符串匹配过程结束。
作为本发明的一个示例,下述以网络数据报文的检测为例,对匹配阶段的工作流程作更为详细的说明。首先将来自网卡的数据报文进行预处理,包括剥离IP头,提取数据部分等,然后将处理后的数据报文从CPU主存所分配的待匹配数据缓存中复制到GPU全局存储器的待匹配数据缓存中,并将保存处理后的数据报文(即待匹配数据)的GPU全局存储器与纹理存储器绑定。
在进行字符串匹配的过程中,分为过滤和匹配确认两个步骤,其中,在过滤步骤中,采用位并行类过滤算法进行字符串匹配,每个线程处理报文的起始位置是上一个线程最短特征字符串的长度,因此相邻的线程处理的数据报文是非常接近的。在过滤匹配时,仅匹配特征字符串的前缀,如果发生前缀命中,则将成功匹配的数据按命中位置复制到CPU主存的结果缓存中,然后在CPU中再逐字进行比较确认。
需要说明的是,在整个匹配阶段的工作流程中,都是以流式并行处理方式执行匹配过程的。也就是说,在匹配阶段采用流式并行处理方式对待匹配数据与特征字符串进行匹配,该流式并行处理方式是指在GPU执行匹配的同时执行待匹配数据和匹配结果的拷入及拷出,同时,CPU进行匹配确认。
具体地,在GPU执行匹配的同时执行数据的拷入及拷出(根据GPU是否支持单向或双向并行执行的特性决定)操作,在前缀匹配结束时,将匹配结果复制到CPU主存的结果缓存中,再由CPU做命中确认处理。
一般情况下,数据的拷贝与GPU匹配函数按序依次执行,每次执行字符串匹配时,首先进行数据报文复制,复制完成后执行匹配函数,再等到匹配函数执行完成后再将匹配结果复制出去,结果复制完成后再进行下一轮的执行。这种单流模式的执行总体上执行效率很低。目前大多数GPU都支持单向或双向数据复制与匹配函数并发执行,因此采用并行执行方式,创建多个流执行。
首先第一个流将数据报文复制到GPU,然后GPU开始执行第一个流的匹配函数,此时就开始复制下一个流的数据报文给GPU,第一个流的匹配函数执行完后就可以将结果复制到CPU主存,同时第二个流的匹配函数开始执行,如果对于支持双向并行执行的GPU来说,下一个流的数据报文复制和上一个流的结果复制可以同时执行,采用这种流式并发的执行方式可以从整体上减少字符串匹配的时间延迟。
通过图1所示的流程可以看出,本发明提供的基于GPU异构计算平台的字符串匹配方法在充分发挥GPU的并行计算优势以及CPU的单线程计算优势的同时,能够缩短线程流程及减少线程流程分支,提升字符串的匹配效率。其具体体现如下所述:
1、将匹配确认部分从GPU中移除,可减少GPU线程分支的计算量,缩短最长执行路径。每个线程执行时间更平衡,减少在线程同步过程中的空等待,充分发挥GPU并行计算的优势,有较大的性能提升。
2、利用CPU单线程计算能力的优势,分担一部分确认命中的计算量给CPU,CPU的单线程计算能力优于GPU。多数情况下,使用CPU执行匹配确认要比GPU更快,如此不仅减少了GPU分支计算量,也能缩短全路径的执行时间,减少延迟。
3、采用流式并行执行方式,实现从数据报文复制到GPU,GPU执行匹配函数,再从GPU将匹配结果复制到CPU主存,并且在CPU中进行匹配确认的整条流水线并发执行。其中,通过计算每次匹配数据的最优值,使得GPU匹配函数执行和数据复制时间相差不多,系统中耗时较多的几个单元都可以同时执行,整体达到并发执行最优,大幅提升了系统的整体性能。
4、结果缓存中的数据长度和待匹配的数据长度相等,GPU执行结束后,结果缓存中需要处理的数据总量更小。在利用PFAC方法进行字符串匹配时,其在匹配结束后,每条线程会产生一个匹配结果,如果特征字符串数量超过255,那么就需要两个或更多字节来保存结果。由于PFAC方法会在待匹配数据每字节位置启动一条线程,所以一般情况下结果数据量是待匹配数据量的两倍。相比于PFAC方法,本发明所提供的匹配方法并没有带来多余的数据交互和冗余计算,相反地,其数据交互和冗余计算反而更少。
为了使上述方法所带来的有益效果更为直观的显现,下述以实验的方式和表格的形式对其作具体说明。其中,实验采用NVIDIA GTX680,待匹配数据报文长度2MB。PCI-E理论速率标准如表1所示:
PCI-E版本 基础速率 X8单向速率 X16单向速率
PCI-E1.0 2.5Gbps 16Gbps 32Gbps
PCI-E2.0 5.0Gbps 32Gbps 64Gbps
PCI-E3.0 10Gbps 64Gbps 128Gbps
表1
通过本发明,实际测得的GPU对数据报文的过滤速度(即匹配效率)如表2所示:
最短特征串长度 字符串数量1000 字符串数量10000
4 147.189Gbps 102.140Gbps
8 192.823Gbps 143.916Gbps
表2
通过表1和表2可以看出,NVIDIA GTX680的字符串过滤匹配效率已经远高于PCI-E3.0理论传输速率。在实际应用中,可以采用低端一些的显卡作为GPU计算单元,以减少成本。同时可以缩小待匹配缓存长度,降低数据缓存延时,使GPU字符串过滤匹配的速率接近PCI-E的传输速率,进而让流水线执行过程中的各个环节平衡化,以提高整体效率。
与上述方法相对应,本发明还提供一种基于GPU异构计算平台的字符串匹配系统,图2示出了根据本发明实施例的基于GPU异构计算平台的字符串匹配系统逻辑结构。
如图2所示,本发明提供的基于GPU异构计算平台的字符串匹配系统200包括预处理单元210和匹配单元220。其中预处理单元210在CPU中进行,包括特征字符串预处理单元211和缓存分配单元212,匹配单元220用于对待匹配数据与特征字符串进行匹配,包括待匹配数据预处理单元221、前缀匹配单元222和匹配确认单元223。
其中,特征字符串预处理单元211用于对特征字符串进行预处理;其中,以位并行过滤方式构建位向量掩码表,并将位向量掩码表的每行进行压缩,形成快速过滤子表,将位向量掩码表和快速过滤子表复制到GPU全局存储器;缓存分配单元212用于分别在CPU主存和GPU全局存储器上分配待匹配数据缓存和结果缓存。
待匹配数据预处理单元221用于对待匹配数据进行预处理,将预处理后的待匹配数据从CPU主存的待匹配数据缓存中复制到GPU全局存储器的待匹配数据缓存中进行保存;前缀匹配单元222用于在GPU中,采用位并行过滤方式对待匹配数据与特征字符串的前缀进行匹配,将与特征字符串的前缀匹配成功的待匹配数据按命中位置复制GPU全局存储器的到结果缓存中,然后将GPU全局存储器的结果缓存中的数据复制到CPU主存的结果缓存中;匹配确认单元223用于在CPU中,通过散列方式找到与命中位置相对应的特征字符串,将待匹配数据与特征字符串逐字进行匹配确认。
其中,特征字符串预处理单元211进一步包括前缀截取单元(图中未示出),用于在以位并行过滤方式构建位向量掩码表的过程中,截取每个特征字符串的前缀,根据所截取的前缀构建位向量掩码表。
通过本发明所提供的基于GPU异构计算平台的字符串匹配方法及系统,通过采用GPU执行过滤匹配,再利用CPU进行匹配确认,能够减少GPU线程分支的计算量,缩短最长执行路径并充分利用CPU资源,提高字符串匹配的整体效率。另外,在数据复制、GPU匹配执行以及匹配结果复制过程中采用并行执行的机制,并且通过PCI-E接口传输速率计算得出每次匹配数据的最优值,使得字符串的匹配得到最优执行。
如上参照附图以示例的方式描述了根据本发明的基于GPU异构计算平台的字符串匹配方法及系统。但是,本领域技术人员应当理解,对于上述本发明所提出的基于GPU异构计算平台的字符串匹配方法及系统,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。

Claims (9)

1.一种基于GPU异构计算平台的字符串匹配方法,包括预处理阶段和匹配阶段,其中,所述预处理阶段在CPU中进行,包括:
对特征字符串进行预处理;其中,以位并行过滤方式构建位向量掩码表,并将所述位向量掩码表的每行进行压缩,形成快速过滤子表,将所述位向量掩码表和所述快速过滤子表复制到GPU全局存储器;
分别在CPU主存和所述GPU全局存储器上分配待匹配数据缓存和结果缓存;
在所述匹配阶段对待匹配数据与所述特征字符串进行匹配,包括:
对待匹配数据进行预处理,将预处理后的待匹配数据从所述CPU主存的待匹配数据缓存中复制到所述GPU全局存储器的待匹配数据缓存中进行保存;
在GPU中,采用位并行过滤方式对待匹配数据与所述特征字符串的前缀进行匹配,将与所述特征字符串的前缀匹配成功的待匹配数据按命中位置复制到所述GPU全局存储器的结果缓存中,然后将所述GPU全局存储器的结果缓存中的数据复制到所述CPU主存的结果缓存中;
在CPU中,通过散列方式找到与所述命中位置相对应的特征字符串,将所述待匹配数据与所述特征字符串逐字进行匹配确认。
2.如权利要求1所述的基于GPU异构计算平台的字符串匹配方法,其中,在所述匹配阶段采用流式并行处理方式对待匹配数据与所述特征字符串进行匹配,所述流式并行处理方式是指在GPU执行匹配的同时,执行待匹配数据和匹配结果的拷入及拷出,同时,CPU进行匹配确认。
3.如权利要求1所述的基于GPU异构计算平台的字符串匹配方法,其中,在以位并行过滤方式构建位向量掩码表的过程中,
截取每个特征字符串的前缀,根据所截取的前缀构建位向量掩码表。
4.如权利要求1所述的基于GPU异构计算平台的字符串匹配方法,其中,在将所述位向量掩码表和所述快速过滤子表复制到GPU全局存储器之后,将所述GPU全局存储器与纹理存储器绑定。
5.如权利要求1所述的基于GPU异构计算平台的字符串匹配方法,其中,在将预处理后的待匹配数据从所述CPU主存的待匹配数据缓存中复制到所述GPU全局存储器的待匹配数据缓存中进行保存之后,将保存待匹配数据的GPU全局存储器与纹理存储器绑定。
6.如权利要求1所述的基于GPU异构计算平台的字符串匹配方法,其中,所述GPU全局存储器的结果缓存中的数据包括匹配命中标识和匹配结果;其中,在对待匹配数据与所述特征字符串的前缀进行匹配的过程中,
如果与所述特征字符串的前缀匹配成功,则将所述匹配命中标识设置为1,否则将所述匹配命中标识设置为0,然后将所述匹配命中标识复制到所述CPU主存的结果缓存中;
在CPU中对匹配命中标识进行判断,其中,如果所述匹配命中标识非0,则继续将所述GPU全局存储器的结果缓存中的匹配结果复制到所述CPU主存的结果缓存中。
7.如权利要求1所述的基于GPU异构计算平台的字符串匹配方法,其中,通过PCI-E接口将预处理后的待匹配数据从所述CPU主存的待匹配数据缓存中复制到所述GPU全局存储器的待匹配数据缓存中进行保存。
8.一种基于GPU异构计算平台的字符串匹配系统,包括预处理单元和匹配单元,其中,所述预处理单元在CPU中,包括:
特征字符串预处理单元,用于对特征字符串进行预处理;其中,以位并行过滤方式构建位向量掩码表,并将所述位向量掩码表的每行进行压缩,形成快速过滤子表,将所述位向量掩码表和所述快速过滤子表复制到GPU全局存储器;
缓存分配单元,用于分别在CPU主存和所述GPU全局存储器上分配待匹配数据缓存和结果缓存;
所述匹配单元,用于对待匹配数据与所述特征字符串进行匹配,包括:
待匹配数据预处理单元,用于对待匹配数据进行预处理,将预处理后的待匹配数据从所述CPU主存的待匹配数据缓存中复制到所述GPU全局存储器的待匹配数据缓存中进行保存;
前缀匹配单元,用于在GPU中,采用位并行过滤方式对待匹配数据与所述特征字符串的前缀进行匹配,将与所述特征字符串的前缀匹配成功的待匹配数据按命中位置复制到所述GPU全局存储器的结果缓存中,然后将所述GPU全局存储器的结果缓存中的数据复制到所述CPU主存的结果缓存中;
匹配确认单元,用于在CPU中,通过散列方式找到与所述命中位置相对应的特征字符串,将所述待匹配数据与所述特征字符串逐字进行匹配确认。
9.如权利要求8所述的基于GPU异构计算平台的字符串匹配系统,其中,所述特征字符串预处理单元进一步包括:
前缀截取单元,用于在以位并行过滤方式构建位向量掩码表的过程中,截取每个特征字符串的前缀,根据所截取的前缀构建位向量掩码表。
CN201310508005.0A 2013-10-23 2013-10-23 基于gpu异构计算平台的字符串匹配方法及系统 Active CN103559017B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310508005.0A CN103559017B (zh) 2013-10-23 2013-10-23 基于gpu异构计算平台的字符串匹配方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310508005.0A CN103559017B (zh) 2013-10-23 2013-10-23 基于gpu异构计算平台的字符串匹配方法及系统

Publications (2)

Publication Number Publication Date
CN103559017A CN103559017A (zh) 2014-02-05
CN103559017B true CN103559017B (zh) 2016-08-24

Family

ID=50013274

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310508005.0A Active CN103559017B (zh) 2013-10-23 2013-10-23 基于gpu异构计算平台的字符串匹配方法及系统

Country Status (1)

Country Link
CN (1) CN103559017B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105892931A (zh) * 2014-05-16 2016-08-24 上海京知信息科技有限公司 一种支持基于智能闪存缓存的异构cpu-gpu系统架构的操作系统原型
CN105404635B (zh) * 2014-09-16 2019-05-28 华为技术有限公司 字符串匹配的方法、设备和异构计算系统
CN105897587B (zh) * 2016-03-31 2018-11-09 湖南大学 一种数据包分类方法
CN109871848B (zh) * 2017-12-01 2022-01-25 北京搜狗科技发展有限公司 一种移动终端的文字识别方法及装置
WO2020086381A1 (en) * 2018-10-23 2020-04-30 Nvidia Corporation Effective and scalable building and probing of hash tables using multiple gpus
CN109902059B (zh) * 2019-02-28 2021-06-29 苏州浪潮智能科技有限公司 一种cpu与gpu之间的数据传输方法
CN111898747B (zh) * 2019-05-05 2023-06-30 杭州海康威视数字技术股份有限公司 一种特征比对方法及电子设备
CN113347214B (zh) * 2021-08-05 2021-11-12 湖南戎腾网络科技有限公司 一种高频状态匹配方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929900A (zh) * 2012-01-16 2013-02-13 中国科学院北京基因组研究所 一种字符串匹配的方法及装置
CN103324698A (zh) * 2013-06-08 2013-09-25 北京航空航天大学 一种基于数据级并行gpu加速的大规模哼唱旋律匹配系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010165169A (ja) * 2009-01-15 2010-07-29 Kddi Corp モーションキャプチャデータの楽曲同期システムにおけるリズムマッチング並列処理装置およびそのコンピュータプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929900A (zh) * 2012-01-16 2013-02-13 中国科学院北京基因组研究所 一种字符串匹配的方法及装置
CN103324698A (zh) * 2013-06-08 2013-09-25 北京航空航天大学 一种基于数据级并行gpu加速的大规模哼唱旋律匹配系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
GPU-to-GPU and Host-to-Host Multipattern String Matching on a GPU;Xinyan Zha等;《IEEE transactions on computers》;20130630;第62卷(第6期);第1156-1169页 *
一种基于CPU-GPU协同的特征码匹配机制;杨科等;《科学技术与工程》;20120229;第12卷(第5期);第1056-1060页 *
基于GPU的位并行多模式串匹配研究;赵光南等;《计算机工程》;20110731;第37卷(第14期);第265-267页 *

Also Published As

Publication number Publication date
CN103559017A (zh) 2014-02-05

Similar Documents

Publication Publication Date Title
CN103559017B (zh) 基于gpu异构计算平台的字符串匹配方法及系统
CN101296114B (zh) 基于流的并行模式匹配方法和系统
CN101957863B (zh) 数据并行处理方法、装置及系统
CN104969213B (zh) 用于低延迟数据存取的数据流分割
CN102831120B (zh) 一种数据处理方法及系统
CN103365726B (zh) 一种面向gpu集群的资源管理方法和系统
CN104821924B (zh) 一种网络数据包处理方法、装置和网络处理设备
CN102299843A (zh) 一种基于gpu和缓冲区的网络数据处理方法及系统
CN103595805A (zh) 一种基于分布式集群的数据放置方法
CN108268385A (zh) 具有集成目录高速缓存的优化的高速缓存代理
DE102019129899A1 (de) Skalierbare leichtgewichts-protokolle für paketreihung in leitungsgeschwindigkeit
CN104572505A (zh) 一种保证海量数据缓存最终一致性的系统及方法
CN110995652B (zh) 一种基于深度迁移学习的大数据平台未知威胁检测方法
CN104899161B (zh) 一种基于云存储环境的连续数据保护的缓存方法
CN104866528B (zh) 多平台数据采集方法及系统
CN106575220A (zh) 多个经集群极长指令字处理核心
Engelhardt et al. GraVF-M: graph processing system generation for multi-FPGA platforms
Tseng et al. Accelerating open vSwitch with integrated GPU
CN108494705A (zh) 一种网络报文高速处理系统和方法
Kim et al. Accelerating GNN training with locality-aware partial execution
CN107832119A (zh) 一种降低内存重复拷贝的kvm虚拟机热迁移优化方法
CN102497410B (zh) 一种云计算系统计算资源动态分区的方法
CN104932982B (zh) 一种消息访存的编译方法及相关装置
CN109558376A (zh) 一种面向MapReduce框架的有效计算与数据传输重叠执行方法
CN109246331A (zh) 一种视频处理方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant