CN109375989A - 一种并行后缀排序方法及系统 - Google Patents
一种并行后缀排序方法及系统 Download PDFInfo
- Publication number
- CN109375989A CN109375989A CN201811052774.3A CN201811052774A CN109375989A CN 109375989 A CN109375989 A CN 109375989A CN 201811052774 A CN201811052774 A CN 201811052774A CN 109375989 A CN109375989 A CN 109375989A
- Authority
- CN
- China
- Prior art keywords
- suffix
- type
- lms
- character string
- parallel
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 206010040736 Sinoatrial block Diseases 0.000 claims description 18
- 230000009191 jumping Effects 0.000 claims description 2
- 230000003993 interaction Effects 0.000 abstract 1
- 238000013507 mapping Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种并行后缀排序方法及系统,通过对于长度为n的字符串X,当其大小远大于计算机的Cache大小,使用将SA分块的方法,增加了Cache的命中率,减少了Cache与内存的交互次数,从而大大减少了字符串的排序时间。本发明利用现代多核计算机的并行计算资源,用多线程把排序过程中的数据访问操作并行化,有效提高算法的运行速度,归纳排序过程的并行度高,系统可以获得较高的加速比,大大提升了工作效率。
Description
技术领域
本发明涉及数据处理领域,更具体的,涉及一种并行后缀的排序方法及系统。
背景技术
现代计算机的CPU从内存读写数据要经过缓存(Cache),算法的数据局部 性对算法运行速度有很大影响。对大规模的字符串进行后缀排序时,串行IS算 法由于数据局部性较差,数据读写延迟长,降低了算法的运行速度,导致算法性 能未能有效发挥,大大降低了计算机的工作效率和增加了时间成本。
发明内容
为了解决现有技术中串行IS算法的运行速度较低,计算机不能发挥全部性能 的不足,本发明提供了一种并行后缀的排序方法及系统。
为实现以上发明目的,采用的技术方案是:
一种并行后缀排序方法,包括以下步骤:
步骤S101:扫描字符串X,找出字符串中所有的LMS子串;
步骤S102:初始化SA,将LMS子串放入SA中,对SA进行分块;
步骤S103:对块中前继为L型元素进行归纳排序,生成最小堆;
步骤S104:开启多个线程以并行的方式将多个堆中的元素写回SA;
步骤S105:判断是否已经遍历所有块,若是,执行步骤S106,若否,跳回 步骤S103,对下一块执行S103~S105步骤;
步骤S106:对块中前继为S型元素进行归纳排序,生成最大堆;
步骤S107:开启多个线程以并行的方式将多个堆中的元素写回SA;
步骤S108:判断是否已经遍历所有块,若是,执行步骤S109,若否,跳回 步骤S106,对下一块执行S106~S108步骤;
步骤S109:对SA中LMS子串进行命名,生成新的字符串X1;
步骤S110:判断字符串X1中是否有重复,若有,将字符串X1作为输入字 符串,跳回步骤S101,若否,执行步骤S111;
步骤S111:对SA进行并行归纳排序,输出结果。
优选的,所述步骤S101查找LMS子串的具体过程如下:
令suffix(X,i)为字符串X中i位置开始至末尾的字符串,即X[i…n-1],t为长度为n的数组,用t其记录suffix(X,i)的类型,记为t[i];从后往前遍历字符串X,当 X[i]<X[i+1],或者X[i]=X[i+1]且t[i+1]为S型时,suffix(X,i)为S型,并记录在t[i]中; 当X[i]>X[i+1],或者X[i]=X[i+1]且t[i+1]为L型时,suffix(X,i)为L型,并记录在t[i] 中;若字符串X的最后一个字符“$”为最小字符,其后缀类型为S型;当t[i] 为S且t[i-1]为L时,X[i]为LMS字符;找出字符串X中的所有相邻的两个LMS 字符中间的字符串,即LMS子串。
优选的,步骤S104、S107所述的以多线程并行的方式将最大堆/最小堆写到 SA中的方法是:开启多个线程,根据线程和堆的数量决定每个线程负责堆的写 回的数量;以多线程并行的方式获取各个堆中元素的位置,并将元素写入其SA 中的对应位置。
优选的,步骤S111所述的归纳排序方法如下:在SA数组中,每个字符各有 一个桶,桶是按字典大小顺序排列的,每一个桶中分为两个区域,分别为L桶和 S桶,分别放置L型后缀和S型后缀,L桶位于S桶的左侧;先从左往右扫描SA 块中的元素,从字符串X中获取块中每一个字符的前继后缀;如果该前继后缀类 型为L,判断其前继后缀是否属于当前块,若是,则将该前继后缀放入其对应桶 中,若不属于当前块,则将该前继后缀放入对应的最小堆中,堆中元素按照<字 符值,后继后缀次序>排序,且计算并存储其在SA中对应位置;再从右往左扫描 SA块中的元素,从字符串X中获取块中每一个元素的前继后缀;如果该前继类型为S,判断其前继后缀是否属于当前块,若属于则将该前继后缀放入其对用桶 中,若不属于,则将该前继后缀放入对应的最大堆中,堆中元素按照<字符值, 后继后缀次序>排序,且计算并存储其在SA中对应位置。
同时,本发明还提供了一种应用以上方法的并行后缀排序系统,包括前置单 元,解析单元,以及储存单元;所述的前置单元用于执行步骤S101~S102;所述 的解析单元用于执行步骤S103~S111;所述的存储单元负责存放多线程并行归纳 排序产生的临时数据。
优选的,所述的前置单元包括决策子单元、LMS子串计算子单元和SA分块 子单元;
所述的决策子单元用于从存储单元中读取字符串X,使用L/S后缀识别器 识别字符串X,得到其后缀类型数组t,统计每个后缀的L和S型的数量,并写 入存储单元;所述的LMS子串计算子单元用于从存储单元中读取后缀类型数组t, 计算得到所有的LMS字符,再计算得出LMS子串位置,并写入存储单元;所述 的SA分块子单元用于将SA分为若干个均匀的块。
优选的,所述的解析单元包括L型前继计算子单元、S型前继计算子单元、 最小堆元素并行写回子单元、LMS子串命名子单元、最大堆元素并行写回子单元、 LMS子串命名单元、LMS子串重复判断单元;
所述的L型前继计算子单元从存储单元中读取SA块,从左到右扫描SA 块,找到前继后缀类型为L的所有后缀,判断该后缀是否属于当前块,若属于当 前块则将其写到当前块中,否则根据 的映射关系,其中总块数≥总堆数,将其添加至对应的 最小堆中;
所述的最小堆元素并行写回子单元从存储单元中取出最小堆,开启多个线 程,根据线程和堆的数量,决定每个线程负责堆的数量,以多线程并行的方式将 最小堆数组MINHEAP中的所有元素写入SA中;
所述的S型前继计算子单元从存储单元中读取SA块,从右到左扫描SA 块,找到前继后缀类型为S型的所有后缀,判断该后缀是否属于当前块,若属于 当前块则将其写到当前块中,否则根据 的映射关系,其中总块数≥总堆数,将其添加至对应 的最大堆中;
所述的最大堆元素并行写回子单元从存储单元中取出最大堆,开启多个线 程,根据线程和堆的数量,决定每个线程负责堆的数量,以多线程并行的方式将 最大堆数组MAXHEAP中的所有元素写入SA中;
所述的LMS子串命名单元对SA中的LMS子串进行命名,生成新的字符串 X1;
所述的LMS子串重复判断单元用于判断新命名的字符串X1是否有重复字 符,若有,将其作为输入字符串递归执行步骤S101,若无,则执行步骤S111。
与现有技术相比,本发明的有益效果是:
(1)利用现代多核计算机的并行计算资源,用多线程把排序过程中的数据 访问操作并行化,有效提高算法的运行速度。
(2)归纳排序过程的并行度高,系统可以获得较高的加速比。
附图说明
图1为本发明的方法流程图。
图2为本发明的系统框架图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
以下结合附图和实施例对本发明做进一步的阐述。
实施例1
如图1所示,一种并行后缀排序方法,包括以下步骤:
步骤S101:找出字符串X中的LMS子串,具体实施如下:
(1)字符串X的最后一个元素为额外添加的“$”,为字符串中最小的字符。 定义X[i]<X[i+1],则suffix(X,i)为S型;当X[i]>X[i+1],则suffix(X,i)为L型;当 X[i]=X[i+1],则suffix(X,i)与suffix(X,i+1)同类型。使用L/S后缀识别器从右往左扫描 字符串X,得到的结果存储在长度为n的数组t中。
(2)在扫描的过程中同时统计各个桶的大小以及各个桶的L型和S型后缀 数量。用数组bucket记录在字符串X中各个字符出现的次数。从左到右遍历字 符串X,每遍历一个字符,bucket[X[i]]加一。从左往右遍历bucket数组,令bucket[i] +=bucket[i-1],用lbucket数组记录各个字符L桶的起始位置,每个字符L桶的 起始位置即为该字符在SA对用桶的起始位置,即lbucket[i]=bucket[i-1];用 sbucket数组记录各个字符S桶的起始位置,每个字符的S桶的末位为在SA中下 一字符起始位置的前一位置,即sbucket[i]=bucket[i]-1。
(3)记录LMS字符位置。从左到右扫描数组t,当t[i]为S型且t[i-1]为L型, 则是X[i]为LMS字符,将字符串X中的所有LMS字符位置记录在position数组中, 即position[index]==i。
(4)位置相邻的两个LMS中间的字符串(包括LMS字符)为一个LMS子 串,即X[position[i]]到X[position[i+1]]中间包括的字符及起始和末位的LMS字符 为一个LMS子串。
步骤S102:初始化SA数组和对SA进行分块。初始化长度为n的SA数组, 令其所有元素初始值为-1。将S101中得到的LMS子串放入SA中的其各个桶的末 位,即从左往右遍历数组position,将position[i]赋给SA[sbucket[X[position[i]]]], 并使对应桶计数器递减。将SA进行切分,分为若干个包含相同个数的块。
步骤S103:对块中前继为L型元素进行归纳排序,具体实施如下:
(5)初始化最小堆数组MINHEAP。
(6)从左往右遍历SA块,判断每个元素的前继后缀是否为L型,若为L型, 则判断该前继后缀是否属于当前块,即判断是否X[SA[i]-1]小于等于当前块的末尾 元素且lbucket[X[SA[i]-1]]是否小于等于当前块的末尾位置,若属于,则执行(7), 若不属于,则执行(8)。
(7)当该前继后缀属于当前块中,则将suffix(X,SA[i]-1)起始位置放入SA中 对应的L桶中,即SA[lbucket[X[SA[i]-1]]]=SA[i]–1,并使对应桶计数器减递加。
(8)当该前继后缀不属于当前块,则根据其所属的块号,按照前继后缀所 属的块对应堆号=[前继后缀所属的块号/(总块数/总堆数)]的映射关系,其中总块 数≥总堆数,将其添加至对应的最小堆中,即insert(node)并执行MIN-HEAPIFY() 进行堆调整,其中node.c=X[SA[i]-i],node.num=SA[i], node.local=lbucket[node.c]]++,直至遍历完该块。
步骤S104:遍历完SA中的某一块后,开启多个线程,根据线程和堆的数量, 决定每个线程负责写回堆的数量,其中每个堆由一个线程写回,每个线程负责一 个或者多个堆的写回,直至堆中无元素。
步骤S105:判断SA中的所有块是否遍历完成,若是,则执行S106,否则继 续遍历SA,即按照从步骤S103开始,继续对下一块进行操作。
步骤S106:对SA数组前继为S型元素进行归纳排序,具体实施如下:
(9)初始化最大堆数组MAXHEAP,从右往左遍历SA块,当SA[i]>0,从字 符串X中获取其前继后缀,并判断该前继后缀是否为S型,若为S型,则判断该 前继后缀是否属于当前块,即判断X[SA[i]-1]小于等于当前块的末尾元素且 sbucket[X[i]]小于等于当前块的末尾位置,若属于,则执行(10),若不属于,则执 行(11)。
(10)当该前继后缀存在于当前块中,则将该前继后缀放入SA中对应的S 桶中,即SA[sbucket[X[SA[i]-1]]--]=SA[i]-1。
(11)当该前继后缀不存在于当前块中,则根据其所属的块号,将其添加至 对应的最大堆中,即insert(node)并执行MAX-HEAPIFY()进行堆调整,其中 node.c=X[SA[i]-1],node.num=SA[i],node.local=sbucket[node.c]]--,直至遍历完 该块。
步骤S107:遍历完SA中的某一块后,开启多个线程,根据线程和堆的数量, 决定每个线程负责写回堆的数量,其中每个堆由一个线程写回,每个线程负责一 个或者多个堆的写回,直至堆数组中无元素。
步骤S108:判断对SA中的所有块是否遍历完成,若是,则执行步骤S109, 否则继续遍历SA,即按照从步骤S106开始,继续对下一块进行操作。
步骤S109:对SA中的LMS子串进行命名,得到数组X1。
步骤S110:判断X1中是否有重复字符,若有,将其作为新的数组递归执行 步骤S101,若无,则执行步骤S111。
步骤S111:对SA数组进行并行归纳排序,同步骤S103至S107一致。
实施例2
如图2所示,一种并行后缀排序系统,包括前置单元,解析单元,以及储存 单元;所述的前置单元用于执行步骤S101~S102;所述的解析单元用于执行步骤 S103~S111;所述的存储单元负责存放多线程并行归纳排序产生的临时数据。
所述的前置单元包括决策子单元、LMS子串计算子单元和SA分块子单元;
所述的决策子单元用于从存储单元中读取字符串X,使用L/S后缀识别器 识别字符串X,得到其后缀类型数组t,统计每个后缀的L和S型的数量,并写 入存储单元;所述的LMS子串计算子单元用于从存储单元中读取后缀类型数组t, 计算得到所有的LMS字符,再计算得出LMS子串位置,并写入存储单元;所述 的SA分块子单元用于将SA分为若干个均匀的块。
所述的解析单元包括L型前继计算子单元、S型前继计算子单元、最小堆元 素并行写回子单元、LMS子串命名子单元、最大堆元素并行写回子单元、LMS子 串命名单元、LMS子串重复判断单元;
所述的L型前继计算子单元从存储单元中读取SA块,从左到右扫描SA块, 找到前继后缀类型为L的所有后缀,判断该后缀是否属于当前块,若属于当前块 则将其写到当前块中,否则根据其属于的块号加入其对应的最小堆中;
所述的最小堆元素并行写回子单元从存储单元中取出最小堆,开启多个线 程,根据线程和堆的数量,决定每个线程负责堆的数量,以多线程并行的方式将 最小堆数组MINHEAP中的所有元素写入SA中;
所述的S型前继计算子单元从存储单元中读取SA块,从右到左扫描SA块, 找到前继后缀类型为S型的所有后缀,判断该后缀是否属于当前块,若属于当前 块则将其写到当前块中,否则根据其属于的块号加入其对应的最大堆中;
所述的最大堆元素并行写回子单元从存储单元中取出最大堆,开启多个线 程,根据线程和堆的数量,决定每个线程负责堆的数量,以多线程并行的方式将 最大堆数组MAXHEAP中的所有元素写入SA中;
所述的LMS子串命名单元对SA中的LMS子串进行命名,生成新的字符串 X1;
所述的LMS子串重复判断单元判断新命名的字符串X1是否有重复字符,若 有,将其作为输入字符串递归执行步骤S101,若无,则执行步骤S111。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非 是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明 的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施 方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进 等,均应包含在本发明权利要求的保护范围之内。
Claims (7)
1.一种并行后缀排序方法,其特征在于,包括以下步骤:
步骤S101:扫描字符串X,找出字符串中所有的LMS子串;
步骤S102:初始化SA,将LMS子串放入SA中,对SA进行分块;
步骤S103:对块中前继为L型元素进行归纳排序,生成最小堆;
步骤S104:开启多个线程以并行的方式将多个堆中的元素写回SA;
步骤S105:判断是否已经遍历所有块,若是,执行步骤S106,若否,跳回步骤S103,对下一块执行S103~S105步骤;
步骤S106:对块中前继为S型元素进行归纳排序,生成最大堆;
步骤S107:开启多个线程以并行的方式将多个堆中的元素写回SA;
步骤S108:判断是否已经遍历所有块,若是,执行步骤S109,若否,跳回步骤S106,对下一块执行S106~S108步骤;
步骤S109:对SA中LMS子串进行命名,生成新的字符串X1;
步骤S110:判断字符串X1中是否有重复,若有,将字符串X1作为输入字符串,跳回步骤S101,若否,执行步骤S111;
步骤S111:对SA进行并行归纳排序,输出结果。
2.根据权利要求1所述的一种并行后缀排序方法,其特征在于,所述步骤S101查找LMS子串的具体过程如下:
令suffix(X,i)为字符串X中i位置开始至末尾的字符串,即X[i…n-1],t为长度为n的数组,用t其记录suffix(X,i)的类型,记为t[i];字符串X的最后一个字符“$”为额外添加的字符,其为最小字符,其后缀类型为S型;从后往前遍历字符串X,当X[i]<X[i+1],或者X[i]=X[i+1]且t[i+1]为S型时,suffix(X,i)为S型,并记录在t[i]中;当X[i]>X[i+1],或者X[i]=X[i+1]且t[i+1]为L型时,suffix(X,i)为L型,并记录在t[i]中;当t[i]为S且t[i-1]为L时,X[i]为LMS字符;找出字符串X中的所有相邻的两个LMS字符中间的字符串,即LMS子串。
3.根据权利要求1所述的一种并行后缀排序方法,其特征在于,步骤S104、S107所述的以多线程并行的方式将最大堆/最小堆写到SA中的方法是:开启多个线程,根据线程和堆的数量决定每个线程负责堆的写回的数量;以多线程并行的方式获取各个堆中元素的位置,并将元素写入其SA中的对应位置。
4.据权利要求1所述的一种并行后缀排序系统,其特征在于,步骤S111所述的归纳排序方法如下:在SA数组中,每个字符各有一个桶,桶是按字典大小顺序排列的,每一个桶中分为两个区域,分别为L桶和S桶,分别放置L型后缀和S型后缀,L桶位于S桶的左侧;先从左往右扫描SA块中的元素,从字符串X中获取块中每一个字符的前继后缀;如果该前继后缀类型为L,判断其前继后缀是否属于当前块,若是,则将该前继后缀放入其对应桶中,若不属于当前块,则将该前继后缀放入对应的最小堆中,堆中元素按照<字符值,后继后缀次序>排序,且计算并存储其在SA中对应位置;再从右往左扫描SA块中的元素,从字符串X中获取块中每一个元素的前继后缀;如果该前继类型为S,判断其前继后缀是否属于当前块,若属于则将该前继后缀放入其对用桶中,若不属于,则将该前继后缀放入对应的最大堆中,堆中元素按照<字符值,后继后缀次序>排序,且计算并存储其在SA中对应位置。
5.一种并行后缀排序系统,其特征在于,包括前置单元,解析单元,以及存储单元;所述的前置单元用于执行步骤S101~S102;所述的解析单元用于执行步骤S103~S111;所述的存储单元负责存放多线程并行归纳排序产生的临时数据。
6.根据权利要求5所述的并行后缀排序系统,其特征在于,所述的前置单元包括决策子单元、LMS子串计算子单元和SA分块子单元;
所述的决策子单元用于从存储单元中读取字符串X,使用L/S后缀识别器识别字符串X,得到其后缀类型数组t,统计每个后缀的L和S型的数量,并写入存储单元;所述的LMS子串计算子单元用于从存储单元中读取后缀类型数组t,计算得到所有的LMS字符,再计算得出LMS子串位置,并写入存储单元;所述的SA分块子单元用于将SA分为若干个均匀的块。
7.根据权利要求5所述的并行后缀排序系统,其特征在于,所述的解析单元包括L型前继计算子单元、S型前继计算子单元、最小堆元素并行写回子单元、LMS子串命名子单元、最大堆元素并行写回子单元、LMS子串命名单元、LMS子串重复判断单元所述的L型前继计算子单元从存储单元中读取SA块,从左到右扫描SA块,找到前继后缀类型为L的所有后缀,判断该后缀是否属于当前块,若属于当前块则将其写到当前块中,否则根据其属于的块号加入其对应的最小堆中;
所述的最小堆元素并行写回子单元从存储单元中取出最小堆,开启多个线程,根据线程和堆的数量,决定每个线程负责堆的数量,以多线程并行的方式将最小堆数组MINHEAP中的所有元素写入SA中;
所述的S型前继计算子单元从存储单元中读取SA块,从右到左扫描SA块,找到前继后缀类型为S型的所有后缀,判断该后缀是否属于当前块,若属于当前块则将其写到当前块中,否则根据其属于的块号加入其对应的最大堆中;
所述的最大堆元素并行写回子单元从存储单元中取出最大堆,开启多个线程,根据线程和堆的数量,决定每个线程负责堆的数量,以多线程并行的方式将最大堆数组MAXHEAP中的所有元素写入SA中;
所述的LMS子串命名单元对SA中的LMS子串进行命名,生成新的字符串X1;
所述的LMS子串重复判断单元用于判断新命名的字符串X1是否有重复字符。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811052774.3A CN109375989B (zh) | 2018-09-10 | 2018-09-10 | 一种并行后缀排序方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811052774.3A CN109375989B (zh) | 2018-09-10 | 2018-09-10 | 一种并行后缀排序方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109375989A true CN109375989A (zh) | 2019-02-22 |
CN109375989B CN109375989B (zh) | 2022-04-08 |
Family
ID=65404882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811052774.3A Active CN109375989B (zh) | 2018-09-10 | 2018-09-10 | 一种并行后缀排序方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109375989B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110837584A (zh) * | 2019-10-18 | 2020-02-25 | 中山大学 | 一种分块并行构造后缀数组的方法及系统 |
CN110852046A (zh) * | 2019-10-18 | 2020-02-28 | 中山大学 | 一种文本后缀索引的分块归纳排序方法及系统 |
WO2021196745A1 (zh) * | 2020-03-31 | 2021-10-07 | 上海商汤智能科技有限公司 | 数据处理装置、集成电路和ai加速器 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020172971A1 (en) * | 1997-08-20 | 2002-11-21 | Toa Gosei Kabushi Kaisha | Apparatus for manifesting latent characteristics existing in sequences of symbols |
US20110191382A1 (en) * | 2010-01-29 | 2011-08-04 | International Business Machines Corporation | Serial and parallel methods for i/o efficient suffix tree construction |
CN103810228A (zh) * | 2012-11-01 | 2014-05-21 | 辉达公司 | 用于经采样的后缀数组的并行重建的系统、方法和产品 |
CN103871404A (zh) * | 2012-12-13 | 2014-06-18 | 北京百度网讯科技有限公司 | 一种语言模型的训练方法、查询方法和对应装置 |
EP2759952A1 (en) * | 2013-01-28 | 2014-07-30 | Hasso-Plattner-Institut für Softwaresystemtechnik GmbH | Efficient genomic read alignment in an in-memory database |
CN104899476A (zh) * | 2015-06-15 | 2015-09-09 | 中国人民解放军国防科学技术大学 | 一种对多序列bwt索引构建进行并行加速的方法 |
CN107015868A (zh) * | 2017-04-11 | 2017-08-04 | 南京大学 | 一种通用后缀树的分布式并行构建方法 |
CN107015951A (zh) * | 2017-03-24 | 2017-08-04 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种后缀数组的正确性验证方法及系统 |
-
2018
- 2018-09-10 CN CN201811052774.3A patent/CN109375989B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020172971A1 (en) * | 1997-08-20 | 2002-11-21 | Toa Gosei Kabushi Kaisha | Apparatus for manifesting latent characteristics existing in sequences of symbols |
US20110191382A1 (en) * | 2010-01-29 | 2011-08-04 | International Business Machines Corporation | Serial and parallel methods for i/o efficient suffix tree construction |
CN103810228A (zh) * | 2012-11-01 | 2014-05-21 | 辉达公司 | 用于经采样的后缀数组的并行重建的系统、方法和产品 |
CN103871404A (zh) * | 2012-12-13 | 2014-06-18 | 北京百度网讯科技有限公司 | 一种语言模型的训练方法、查询方法和对应装置 |
EP2759952A1 (en) * | 2013-01-28 | 2014-07-30 | Hasso-Plattner-Institut für Softwaresystemtechnik GmbH | Efficient genomic read alignment in an in-memory database |
CN104899476A (zh) * | 2015-06-15 | 2015-09-09 | 中国人民解放军国防科学技术大学 | 一种对多序列bwt索引构建进行并行加速的方法 |
CN107015951A (zh) * | 2017-03-24 | 2017-08-04 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种后缀数组的正确性验证方法及系统 |
CN107015868A (zh) * | 2017-04-11 | 2017-08-04 | 南京大学 | 一种通用后缀树的分布式并行构建方法 |
Non-Patent Citations (1)
Title |
---|
NONG GE: ""Practical Linear-Time O(1)-Workspace Suffix Sorting for Constant Alphabets"", 《ACM TRANSACTIONS ON INFORMATION SYSTEMS》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110837584A (zh) * | 2019-10-18 | 2020-02-25 | 中山大学 | 一种分块并行构造后缀数组的方法及系统 |
CN110852046A (zh) * | 2019-10-18 | 2020-02-28 | 中山大学 | 一种文本后缀索引的分块归纳排序方法及系统 |
CN110852046B (zh) * | 2019-10-18 | 2021-11-05 | 中山大学 | 一种文本后缀索引的分块归纳排序方法及系统 |
WO2021196745A1 (zh) * | 2020-03-31 | 2021-10-07 | 上海商汤智能科技有限公司 | 数据处理装置、集成电路和ai加速器 |
TWI773051B (zh) * | 2020-03-31 | 2022-08-01 | 大陸商上海商湯智能科技有限公司 | 資料處理裝置、積體電路及人工智能加速器 |
Also Published As
Publication number | Publication date |
---|---|
CN109375989B (zh) | 2022-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220263648A1 (en) | Circuit and method for overcoming memory bottleneck of asic-resistant cryptographic algorithms | |
Arbitman et al. | Backyard cuckoo hashing: Constant worst-case operations with a succinct representation | |
CN109375989A (zh) | 一种并行后缀排序方法及系统 | |
US11106685B2 (en) | Method to rank documents by a computer, using additive ensembles of regression trees and cache optimisation, and search engine using such a method | |
Kirsch et al. | Hash-based techniques for high-speed packet processing | |
Mariano et al. | A parallel variant of LDSieve for the SVP on lattices | |
Khorasani et al. | Stadium hashing: Scalable and flexible hashing on gpus | |
CN110852046B (zh) | 一种文本后缀索引的分块归纳排序方法及系统 | |
Sinha et al. | Cache-conscious sorting of large sets of strings with dynamic tries | |
Gan et al. | Tianhegraph: Customizing graph search for graph500 on tianhe supercomputer | |
CN106445472B (zh) | 一种字符操作加速方法、装置、芯片、处理器 | |
CN116893786B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN112199214B (zh) | 一种gpu上的候选口令生成及应用破解方法 | |
CN111126619B (zh) | 一种机器学习方法与装置 | |
Wang et al. | Circ-Tree: A B+-Tree variant with circular design for persistent memory | |
US7100155B1 (en) | Software set-value profiling and code reuse | |
Patel et al. | A hardware implementation of the MCAS synchronization primitive | |
CN106649143B (zh) | 一种访问缓存的方法、装置及电子设备 | |
Nishimura et al. | Accelerating the Smith-waterman algorithm using bitwise parallel bulk computation technique on GPU | |
Zhang et al. | Redis++: A high performance in-memory database based on segmented memory management and two-level hash index | |
CN114943021B (zh) | 一种tb级增量数据筛选方法和装置 | |
Etsion et al. | Exploiting core working sets to filter the L1 cache with random sampling | |
Fan et al. | Burger-tree: A three-layer cache-conscious tree index for persistent memory | |
Yang et al. | BF-join: an efficient hash join algorithm for DRAM-NVM-based hybrid memory systems | |
Wang et al. | Efficient usage of one-sided rdma for linear probing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |