【技术实现步骤摘要】
一种基于GPU流的快速并行字符串匹配方法和系统
本专利技术属于互联网
,更具体地,涉及一种基于GPU流的快速并行字符串匹配方法和系统。
技术介绍
作为众多科学计算领域的基础,字符串匹配问题目前得到了广泛和深入的研究。字符串匹配在入侵检测、分子生物学、信息过滤、病毒检测、拼写检查、语言翻译、数字压缩、搜索引擎等诸多问题中得到广泛应用。现有的字符串匹配算法主要包括:暴力检索(BruteForce,简称BF)算法、哈希检索(Robin-Karp,简称RK)算法、Knuth-Morria-Pratt(简称KMP)算法、BoyerMoore(简称BM)算法;其中,BF算法主要是通过暴力检索所有的字符匹配结果,直到匹配成功或匹配结束;RK算法是对BF算法的改进,其主要通过首先通过对比子串的hash值筛选子串,然后再对子串执行BF算法;KMP算法相比BF算法有比较大的改进,主要是通过消除主串指针的回溯提高算法效率;BM算法主要通过坏字符和好后缀规则加速字符移动效率,相比KMP速度快3-5倍。然而,上述现有的字符串匹配方法,均存在一些不可忽略的缺陷:第一、上述BF算法采用全部遍历字符的暴力检索,计算过程存在许多无意义的匹配计算;第二、上述BK算法首先遍历所有可能匹配的子串的hash值,且大数据集计算的时间复杂度高;第三、上述KMP算法使用移位策略加速模式串的移动,但移动策略不是最优,速度较慢;第四、上述BM算法无法面向大数据集实现数据划分和基于GPU高并发设备的并行计算。
技术实现思路
针对 ...
【技术保护点】
1.一种基于GPU流的快速并行字符串匹配方法,是应用在包括一个主节点和多个从节点的分布式计算系统中,其特征在于,所述方法包括以下步骤:/n(1)主节点接收用户提交的应用程序,对该应用程序进行解析,以得到DAG图;/n(2)主节点对步骤(1)中DAG图中任务所对应的数据进行分割处理,以得到分割后的多个数据块;/n(3)主节点将步骤(2)得到的分割后的数据块发送到从节点。/n(4)从节点判断每个数据块中是否存在多个分割点。如果是则转入步骤(5),否则转入步骤(6);/n(5)从节点按照分割点对步骤(2)得到的每个数据块进行分割,以得到多个分割后的数据块,并创建k个GPU执行流,并将分割后的数据块平均分配给k个GPU执行流进行处理,以得到k个并行执行的任务执行流,其中k为小于等于64的整数;/n(6)从节点对步骤(2)得到的每个数据块按照前55%和后55%两部分进行分割,以得到独立的两个数据块,并将分割后的两个数据块分配给两个GPU执行流处理,以得到2个并行执行的任务执行流;/n(7)从节点为步骤(5)和(6)中得到的任务执行流配置s个线程,以得到包含s个并行控制流的控制流组,其中s的取值范 ...
【技术特征摘要】
1.一种基于GPU流的快速并行字符串匹配方法,是应用在包括一个主节点和多个从节点的分布式计算系统中,其特征在于,所述方法包括以下步骤:
(1)主节点接收用户提交的应用程序,对该应用程序进行解析,以得到DAG图;
(2)主节点对步骤(1)中DAG图中任务所对应的数据进行分割处理,以得到分割后的多个数据块;
(3)主节点将步骤(2)得到的分割后的数据块发送到从节点。
(4)从节点判断每个数据块中是否存在多个分割点。如果是则转入步骤(5),否则转入步骤(6);
(5)从节点按照分割点对步骤(2)得到的每个数据块进行分割,以得到多个分割后的数据块,并创建k个GPU执行流,并将分割后的数据块平均分配给k个GPU执行流进行处理,以得到k个并行执行的任务执行流,其中k为小于等于64的整数;
(6)从节点对步骤(2)得到的每个数据块按照前55%和后55%两部分进行分割,以得到独立的两个数据块,并将分割后的两个数据块分配给两个GPU执行流处理,以得到2个并行执行的任务执行流;
(7)从节点为步骤(5)和(6)中得到的任务执行流配置s个线程,以得到包含s个并行控制流的控制流组,其中s的取值范围是128到512之间。
(8)从节点利用步骤(7)得到的控制流组中的第m个控制流对首字符表F中第m个元素Fm到第m-1个元素Fm+1之间的字符串PSm进行匹配,以得到移位后的模式串P,其中m∈[1,s];
(9)从节点判断步骤(8)移位后的模式串P和字符串PSm是否匹配成功,如果是则过程结束,否则进入步骤(10);
(10)从节点判断首字符表F中第m+s个元素Fm+s是否处于首字符表F中,如果是,则进入步骤(11),否则过程结束;
(11)从节点将首字符表F中第m个元素Fm设置为等于Fm+s,并返回步骤(8)。
2.根据权利要求1所述的基于GPU流的快速并行字符串匹配方法,其特征在于,步骤(2)具体包括以下子步骤:
(2-1)主节点对任务所对应的数据进行扫描,以得到坏字符表。
(2-2)主节点对任务所对应的数据进行扫描,以得到首字符表F。
(2-3)主节点获取从节点中的GPU总数,并根据该GPU总数确定每个GPU处理的平均数据块大小L。
(2-4)主节点根据步骤(2-3)得到的平均数据块大小L对主节点任务所对应的数据进行分割,以得到分割后的多个数据块。
3.根据权利要求2所述的基于GPU流的快速并行字符串匹配方法,其特征在于,步骤(2-4)具体为,分割过程的第一个分割点,是主节点任务所对应的数据所对应的字符串中,与距离L最近的字符所在的位置,其中L的起始点是字符串的起点,分割过程的第二个分割点,是主节点任务所对应的数据所对应的字符串中,与距离2L最近的字符所在的位置,分割过程的第三个分割点,是主节点任务所对应的数据所对应的字符串中,与距离3L最近的字符所在的位置,…,以此类推,然后以确定的这些分割点对数据进行分割,以得到分割后的多个数据块。
4.根据权利要求1至3中任意一项所述的基于GPU流的快速并行字符串匹配方法,其特征在于,坏字符表是通过如下子步骤构建:
(2-1-1)设置计数器i=1,并获取主节点任务所对应的模式串P,并获取数组skip用于记录坏字符,其中数组skip的大小为256;
(2-1-2)判断i是否等于256,如果是则过程结束,并将得到的数组skip作为最终的坏字符表,否则进入(2-1-3);
(2-1-3)判断数组skip中第i个元素所对应的字符Ci是否位于模式串P中,若是则进入步骤(2-1-4),否则将数组skip中第i个元素设置为Plen,其中Plen表示主节点任务所对应的模式串P的长度;
(2-1-4)将数组skip中第i个元素设置为Plen-1-max(PCi),其中PCi表示数组skip中第i个元素所对应的字符Ci在模式串P中的位置,max(PCi)表示字符Ci在模式串P中最右端的位置,然后进入步骤(2-1-5)。
(2-1-5)设置i=i+1,并返回步骤(2-1-2)。
5.根据权利要求4所述的基于GPU流的快速并行字符串匹...
【专利技术属性】
技术研发人员:陈海军,唐卓,曹嵘晖,刘妮,叶晖,
申请(专利权)人:湖南工商大学,
类型:发明
国别省市:湖南;43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。