CN109375989A - 一种并行后缀排序方法及系统 - Google Patents

一种并行后缀排序方法及系统 Download PDF

Info

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
Application number
CN201811052774.3A
Other languages
English (en)
Other versions
CN109375989B (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.)
Sun Yat Sen University
Original Assignee
Sun Yat Sen University
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 Sun Yat Sen University filed Critical Sun Yat Sen University
Priority to CN201811052774.3A priority Critical patent/CN109375989B/zh
Publication of CN109375989A publication Critical patent/CN109375989A/zh
Application granted granted Critical
Publication of CN109375989B publication Critical patent/CN109375989B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming 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是否有重复字符。
CN201811052774.3A 2018-09-10 2018-09-10 一种并行后缀排序方法及系统 Active CN109375989B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 广东顺德中山大学卡内基梅隆大学国际联合研究院 一种后缀数组的正确性验证方法及系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
NONG GE: ""Practical Linear-Time O(1)-Workspace Suffix Sorting for Constant Alphabets"", 《ACM TRANSACTIONS ON INFORMATION SYSTEMS》 *

Cited By (5)

* Cited by examiner, † Cited by third party
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