CN100495404C - 基于流处理的生物序列数据库搜索多层次加速方法 - Google Patents
基于流处理的生物序列数据库搜索多层次加速方法 Download PDFInfo
- Publication number
- CN100495404C CN100495404C CNB200710036196XA CN200710036196A CN100495404C CN 100495404 C CN100495404 C CN 100495404C CN B200710036196X A CNB200710036196X A CN B200710036196XA CN 200710036196 A CN200710036196 A CN 200710036196A CN 100495404 C CN100495404 C CN 100495404C
- Authority
- CN
- China
- Prior art keywords
- sequence
- search
- data
- value
- flow vector
- 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.)
- Expired - Fee Related
Links
Images
Abstract
本发明公开了一种基于流处理的生物序列数据库搜索多层次加速方法,目的是在保证搜索准确性、较低成本的前提下,加快生物序列数据库搜索速度。技术方案是先构建由多台个人计算机组成的集群系统,指定一个主控节点机器;主控节点机器将数据库序列分布存储到集群系统中各个节点机器,对查询序列进行填充及重排,且将查询序列分发到集群系统中的各个节点机器;各节点机器并行执行搜索任务,负责完成查询序列在本地数据库序列中的搜索任务;主控节点机器收集各节点机器上并行搜索任务的结果并汇总输出。采用本发明使得搜索任务在集群的np个节点机器之间并行执行,每个节点机器将两条序列的比对计算任务分配到p个硬件计算簇中并行进行,实现了集群节点层、流级计算层、流内核指令层三个层次的多级并行提速的目标。
Description
技术领域
本发明主要涉及生命科学和信息科学中海量生物学信息的检索与比较方法,尤其指如何对生物序列数据库搜索进行多层次加速的方法。
背景技术
近年来,随着各物种基因组计划的陆续开展与深入,产生了海量的生物学序列数据,这些数据主要包括DNA(脱氧核糖核酸)、RNA(核糖核酸)序列数据和蛋白质序列数据等。例如,国际三大核酸数据库GenBank/EMBL/DDBJ中的数据量大约每15个月就会翻一番,且数据增长的速度还在不断加快,根据摩尔定律可知,生物数据量增长速度正在或即将超过计算机处理能力的增长速度,因此按照这种增长趋势,搜索、处理这些数据将会花费更长的时间(在计算机处理能力相对固定的情况下),并需要更高的计算机处理能力(在任务时间开销相对固定的情况下)。生物序列数据的搜索与比较也面临着如此巨大的挑战。
给定一条生物序列(以下称为查询序列),到现有的生物序列数据库中去搜索与之足够相似的一条或多条搜索结果序列(以下称为库序列),这已经成为当前生物与医药领域分子生物学应用研究中常规性的操作任务。例如,分子水平的进化发育分析研究、新蛋白质的结构与功能预测等应用都离不开这种基于相似性的数据库搜索。因此研究与开发快速高效的生物序列数据库搜索的方法和工具对于生物医药等领域的应用具有重要的实用价值。
生物序列数据库搜索的过程可以概括为三个关键步骤:
(1)分解搜库任务:逐一取出数据库中的所有库序列,并与查询序列组合成对,各自执行一次“成对序列比对”子任务。这个环节相当于将数据库搜索分解成多个成对序列比对子任务。
(2)成对序列比对的过程:以两条生物序列为输入,对其进行比较计算,得到一个用以刻画这两条序列相似程度的一个数值,称为相似性比对得分值。
(3)综合搜索结果:将数据库中的每一条库序列依照“成对序列的比对”获得的相似性比对得分值从高到低降序排列,挑出一条(根据应用的需要,有时可能是数条)得分值最高的库序列作为搜索结果输出。
其中前两步(“分解搜库任务”与“成对序列比对”)是搜索过程中的两个核心环节,第三步“综合搜索结果”则是对前两步的简单排序、分析与输出。
生物序列数据库的搜索与其他常规性的数据库搜索的主要差异体现在“成对序列的比对”的环节。一方面,生物序列之间的相似性主要是根据它们在进化历史上是否具有共同祖先(称为同源性)来进行度量,而生物进化过程普遍存在的突变性就决定了生物序列的比较不可能是“非此即彼”的精确化方式(就像经典的字符串匹配那样);另一方面,由于生物序列测序中的误差以及特定实验目标的需要等因素的存在,参与比较的序列往往都是不完整的“片段”,这也需要生物序列比较方法中要进行特殊处理。在成对序列的比对方面,Smith和Waterman于1981年提出一种利用动态规划算法计算两条序列的最优局部相似性比对得分值的方法(称为Smith-Waterman方法),这是迄今所知最早的计算两条序列相似性比对得分值的方法,1982年Gotoh在简化了原始的空位罚分函数形式(由一般函数简化为线性函数)的基础上,对Smith-Waterman的方法进行了改进;1993年Green又针对计算机存储特点对该方法的程序实现进行了优化。
用以评估生物序列数据库搜索方法优劣的基本性能指标主要有:(1)准确性,主要是追求更高的敏感性、特异性以及更低的假阳性率、假阴性率;(2)搜索速度,主要考察能否在可接受的、更短的时间内完成相同数据规模的搜索。准确性的提高主要依靠成对序列的比对方法的创新与改进,经过来自不同学科研究人员多年来的努力,目前已经形成了比较成熟的成对序列比对方法,获得了可满足应用需求的准确性。当前制约生物序列数据搜索与比较的主要瓶颈是搜索速度的日益落后于数据量的增长速度,如前文所述,国际三大核酸数据库的数据量大约每15个月就会翻一番,计算机软硬件的更新速度越来越跟不上数据量的增长速度,从而也越来越无法满足应用的需求。
为了解决搜索速度落后于数据量增长速度的矛盾,全世界的科研人员进行了不懈的努力,发展了各种各样的新方法,这些方法可以归为三类:(1)牺牲准确性以加快搜索速度的近似寻优方法,(2)用专门的计算硬件实现搜索核心算法,(3)借助各种并行处理策略加快搜索速度的并行处理类方法。
1.[近似寻优类方法]
最初的生物序列数据库搜索方法中的成对序列比对环节主要使用经典的Smith-Waterman算法,它是一种动态规划的寻优算法,在常规的计算设备实现Smith-Waterman算法非常耗时,于是人们在此基础上发展出了大量近似寻优算法(又称启发式方法),例如:FASTA(Pearson and Lipman,1988)和BLAST(Altschul et al.,1990;Altschul et al.,1997)等,与通用计算机上实现的最优Smith-Waterman串行方法相比,这些方法在最好情形下可将计算机运行时间缩减40倍左右,不过这样高的速度是以牺牲搜索结果的敏感性为代价的。由于损失了不少的敏感性,有些本来可以检测到的远缘序列在使用近似寻优算法进行数据搜索时就无法搜索到了。
2.[专用硬件实现法]
为了追求生物序列数据库搜索中“速度快、敏感性高”的目标,人们也发展出了不少加速Smith-Waterman比对的方法。其中,一部分解决方案是采用专用的硬件实现并行处理能力(Hughey,1996),例如Paracel的GeneMatcher,Compugen的Bioccelerator以及TimeLogic的DeCypher等等,这些机器设备可以达到每秒处理2亿个矩阵单元的高速度。另有一些硬件实现的Smith-Waterman算法已经申请了专利,例如专利号分别为5553272,5632041,5706498,5964860和6112288的美国专利,等等。这类方法的主要缺陷是,专用的机器硬件设备造价昂贵,只有少数机构才有实力采购使用,而非一般用户所能用得上。
3.[并行处理类方法]
这类方法是利用“单指令多数据”(SIMD,Single-Instruction Multiple-Data)技术来实现Smith-Waterman算法的并行处理能力。一个SIMD计算机可以针对不同的数据并行地同时执行某个相同的运算(算术运算、逻辑运算等),如果并行的粒度变小,这种并行可以在指令、寄存器中进行。现代的微处理器通过增加一些特殊的寄存器和指令,使得实现这种SIMD变得更加容易了。例如,1997年Intel公司推出了奔腾多媒体扩展(Pentium MMX)微处理器,从而将SIMD技术引入了具有业界标准的、使用最广泛的通用微处理器系统结构中来。之后,奔腾2处理器依然继承了这种技术,奔腾3则进一步将其扩展为“流单指令多数据扩展”(SSE,Intel,1999),2000年Intel在奔腾4中将其扩展为SSE2(Inntel,2000)。此外,为了保持跟Intel处理器的兼容性,AMD系列的处理器同样也支持MMX/SSE/SSE2等指令集。大量研究与实践证明,使用SIMD并行技术可以有效加速Smith-Waterman算法。
在Smith与Waterman提出他们的成对序列比对算法后,先后有一系列研究者对该算法进行了改进与完善。1982年Gotoh在“仿射型空位罚分函数”的情形下给出了Smith-Waterman算法的一种实现,并将运行时间减少到与两条序列长度之积成正比的量级,即时间复杂度为O(mn),其中m和n分别是两条序列的长度。1993年Green编制了名为SWAT的计算机程序,他在其中对Gotoh的方法进行了一些优化,取得了运行时间缩短50%的优化效果。后来Pearson在其SSEARCH程序中也采用了这些优化。通常认为,Smith-Waterman-Gotoh-Green方法是迄今为止所知的成对序列比对算法的最优串行版本实现。
之后,Smith-Waterman算法已经被实现和应用到多种不同的SIMD计算机中:
●1993年Sturrock与Co11ins为MasPar系列的并行计算机上实现了Smith-Waterman算法,并将程序命名为MPsrch。他们在具有4096个CPU的MasParMP-1型计算机上取得了每秒计算1.3亿个矩阵单元的速度性能,在具有16384个CPU的MasPar MP-2型计算机上取得了每秒计算15亿个矩阵单元的速度性能。
●1993年Brutlag等在MasPar型机器上实现了一个名为BLAZE的Smith-Waterman算法。
●1997年Wozniak提出一种在Sun UltraSPARC微处理器上使用VIS(VisualInstruction Set)技术实现Smith-Waterman算法的方法,该方法在167MHz的UltraSPARC处理器上取得了每秒计算1800万个矩阵单元的性能。据Wozniak(1997)声称,新方法较在同样机器上实现的整数精度的传统算法速度提高2倍左右。
●Taylor于1998年使用MMX技术实现Smith-Waterman算法,在Intel奔腾3500MHz处理器上取得了每秒计算660万个矩阵单元的性能。
●2000年,Sturrock和Collins在Alpha处理器上利用SIMD技术实现了Smith-Waterman算法,不过他们方法的细节并未公布。间接文献表明,他们取得了每秒计算5300万个矩阵单元的速度性能(不清楚他们所用的处理器类型及参数)。
●2000年Barton等人采用MMX技术对他们自己的SCANPS程序中的Smith-Waterman进行加速,并声称在Intel奔腾3650MHz的处理器上达到了每秒计算7100万个矩阵单元的速度。他们的方法只有一个摘要(以墙报形式发表),细节并未公布。
跟近似寻优类方法和专用硬件实现法相比,SIMD并行策略可以在不降低搜索准确性的前提下,以较低的成本加快了生物序列数据库的搜索速度,因而得到了更为广泛的应用。然而,这种策略过于强调计算设备的通用性,无法充分利用更好的硬件设备及其性能优化技术,限制了发挥更佳加速性能的潜力。
综合上述三种生物序列数据库搜索的加速方法,不难发现它们仍存在着一些不足之处。首先,三种加速方法具有各自的特点与适用范围:近似寻优方法对计算平台没有特点要求,适应面宽,缺点是加速过程中牺牲掉了搜索的准确性;专用硬件实现法加速效果最佳,但高昂的机器设备费用严重限制了其适用性;SIMD并行处理方法结合了前两种方法的优点,准确性没有降低,成本较小,通用性好,但加速效果没有达到最佳。其次,所有这三种加速方法都是围绕生物序列数据库搜索中的“成对序列的比对”这一环节展开的(重点是对传统Smith-Waterman算法的改进或硬件实现),但目前制约生物序列数据库搜索速度的决定性因素是数据库规模增长过快,因此若能加速生物序列数据库搜索中的另一环节“分解搜库任务”(例如,将数据库序列与查询序列的比对操作分布到多个处理器结点上并发执行),则可望达到对搜索速度更加显著的改进效果,这是上述三类方法中普遍缺乏关注的地方。第三,近年来随着流计算概念的产生和流处理器芯片的出现,流处理技术在许多应用领域(特别数字信息处理领域)得到了大量的应用;生物序列比对处理过程中,生物序列数据具有典型的流特性,比较适合于在流处理器进行处理完成;同时,由于流处理器主要是靠集成大量廉价的计算单元而实现功能的,因而具有计算速度快、成本低廉的优点。当前的上述三类技术均还未采用这种流处理技术,专利与文献中也未见有使用流处理器实现生物序列数据库搜索的相关报道。
发明内容
本发明要解决的技术问题在于:在保证不降低搜索准确性、同时兼顾较低成本的前提下,加快生物序列数据库搜索速度,使其在生物序列数据量急剧增长的背景下仍能够满足生物医药领域应用的日常需求。
为了解决上述技术问题,本发明提出的技术方案为:使用配置有流处理器的计算机集群系统,通过对生物序列数据库搜索过程中的“分解搜库任务”与“成对序列比对”这两个核心环节进行资源分配与任务划分,实现集群节点层、流级计算层、流内核指令层三个层次的多级并行提速的目标。
具体技术方案为:
1.构建由多台个人计算机组成的集群系统,每台计算机都是集群系统的节点,各节点有着各自独立的存储系统,节点之间的通信采用消息传递的方式。节点依次编号为0,1,2,...,np-1。这里np为集群系统中节点的总数目(实际系统中,np的取值为2的整数次幂等)。为了便于后续处理,指定编号为0的那个节点机器为主控节点机器,它主要负责与用户交互,完成输入输出及对搜索结果的中间处理。每个节点除了自身的主处理器外,还配置一个流处理器为该节点的协处理器;流处理器主要由存储部件、计算部件和控制部件组成,其中计算部件是流处理器的主体,它包含有p个硬件计算簇单元,在实施计算时,p个硬件计算簇可利用SIMD方式同时处理流向量中的p个数据,达到并行处理的加速效果。实际系统中p是流处理器中硬件计算簇单元的数目,它由具体的流处理器型号与配置所决定。
2.主控节点机器将数据库序列分布存储到集群系统中各个节点机器。在创建数据库和增量更新数据时,将生物序列数据库中的序列数据平均分布到集群系统中不同节点的存储器中,以便进行生物序列的数据库搜索时的任务分布与并行处理。由于生物序列数据库更新的频度远远低于数据库搜索的频度,因此本步骤的操作虽然费时,但执行频度不高,因而对数据库搜索速度的影响较小。具体方法为:
2.1主控节点机器对数据库序列按照序列长度进行降序排列,形成一个序列列表seq[0],seq[1],...,seq[N-1],其中N是生物序列数据库中序列的总数目。
2.2主控节点机器将序列列表中的每条序列分发到集群系统中的各个节点中去,分发规则如下:将seq[i]这条序列分发到编号为i′的节点的局部存储器中,i′的计算方法为:若i0<np,则取i′=i0;若i0≥np,则取i′=2np-1-i0。式中,i0=i mod(2np),i=0,1,...,N-1。这种序列分发方法的好处是:不论从序列条数还是从存储容量上衡量,集群系统中各节点的局部数据库存储量都是均衡的。
3.主控节点机器对查询序列进行填充与重排。当查询序列提交给集群系统中主控节点机器后,主控节点机器对查询序列进行填充补齐及重排,以减少并行计算过程中的数据依赖,并达到多节点并行计算的负载平衡。具体步骤包括:
3.1主控节点机器对查询序列进行数据填充与补齐:如果查询序列s′的长度n′是2p的整倍数,则跳至步骤3.2,否则在查询序列的尾部追加2p-n′mod(2p)个“空元素”NUL,以便于后续任务分配时保持负载平衡。填充补齐后的查询序列记作s″,其长度用n表示。
3.2主控节点机器对查询序列进行重排:将填充补齐后的查询序列 重新组合为s=so,s1,...,sn-1,其中i=0,1,...,n-1。这里K=p或2p,两种取值分别代表不同的数值精度和并行粒度,K值的具体确定方法见步骤5.1.2.1及5.1.2.7。
4.主控节点机器将查询序列分发到集群系统中的各个节点机器。主控节点机器将上述填充与重排后的查询序列分发给计算机集群系统中的所有节点,每个节点机器将该查询序列及存放于本地存储器中的数据库序列一并读入本地内存。
5.各个节点机器并行执行搜索任务。每个节点机器负责完成查询序列在本地数据库序列中的搜索任务,搜索的结果是一条比对得分值最高的结果序列及其比对得分值。这个过程由各个节点机器分布并发完成,它们之间不需要相互通信。每个节点机器上的搜索过程为:
5.1使用流处理器、结合流处理器体系结构及Smith-Waterman比对算法的特点,基于SIMD并行策略快速计算出查询序列与节点本地数据库中每条序列的比对得分值。本步骤完成后,每条库序列与查询序列比对得到一个比对得分值,共获得N′个比对得分值,其中N′是本地数据库中序列的数目。每条库序列与查询序列之间的成对序列比对得分值的计算过程为:
5.1.1确定成对序列比对过程中的参数,方法是:
●参与比对的两条序列中,一条是查询序列(即步骤3中填充与重排后的查询序列),用符号s表示,其长度记为n;另一条是数据库序列,用符号t表示,其长度记为m。
●S表示成对序列比对Smith-Waterman算法中的匹配打分矩阵,对于核酸序列数据而言,默认使用“替换-置换打分矩阵”,对于蛋白质序列数据而言,默认使用Blosum 50打分矩阵,用户也可根据应用问题的需求指定包含Blosum 62及PAM系列在内的其它打分矩阵。
●g和h表征成对序列比对过程中出现空位时的仿射罚分模型参数,即对于长度为k的空位区(即包含连续k个空位的区域),其罚分值为g+(k-1)·h,这两个参数默认取值为g=14,h=2,也可由用户根据应用问题的需要指定其它取值。
5.1.2利用流处理器计算查询序列s与库序列t的局部相似性得分值。计算采用Smith-Waterman的原理,但针对流处理器须进行SIMD并行化处理,为此构造五个辅助流向量vH[0..n-1],vE[0..n-1],vM[0..n-1],vF[0..p-1]和vH′[0..p-1]。传统的Smith-Waterman方法实现时需要使用一个n×m阶矩阵的存储空间,本步骤中只使用O(3n+2p)的存储空间,计算过程中只保留原始矩阵中的一列数据,有效节约了存储空间。具体计算过程如下:
5.1.2.1取K=2p,所有参与计算的数据均使用UHALF类型,这种数据类型的精度为半字长(16位无符号整数),所能表示的数值范围为0~65535。在这种情形下,尽管计算精度较低(与K=p的情形相比),但步骤5.1.2.5中的流内核计算中一条指令可同时得到2p个计算结果,具有较高的并发度和较快的计算速度。
5.1.2.2初始化流向量vH与vE:为流向量vH[0..n-1]和vE[0..n一1]赋以全0的初值;流向量vF[0..p-1]的初值可任意设置,通常也置为全0。置库序列位置标志j为0,置局部相似性比对得分值V为0。
5.1.2.3计算流向量vM的值:针对库序列的第j个位置,通过查询匹配打分矩阵S设置vM[0..n-1]流向量的新值。其中,若si为“空字符”NUL,则取vM[i]为0值;否则,vM[i]取为si与tj在打分表中对应的打分值S(si,tj)。这里,si表示查询序列的第i个字符,tj表示库序列的第j个字符,i=0,1,...,n-1。
5.1.2.4设置流向量vH′的值:将流向量vH的尾部p个元素复制给vH′[0..p-1],同时将vH′的元素依次向右移动一个位置,空出的最左端元素vH′[0]置为0值。
5.1.2.5在流内核级完成相似性比对得分值的计算:以vH,vE,vM,vH′四个流向量为输入,通过多轮迭代过程计算得到最终的相似性比对得分值V。计算需要迭代的轮次数跟查询序列的内容及库序列第j个位置的字符都有关,最坏情形下需要迭代n-p+1轮,最好情形下只需要迭代1轮;若迭代较少的轮次即能产生最终的相似性比对得分值,增加额外的计算轮次计算结果不变。为此,将第一轮迭代计算与后续轮次的迭代区分开来,第一轮迭代计算称为“粗计算过程”,后续轮次的计算称为“精计算过程”。这两个过程都是采用SIMD策略由流处理器的p个硬件计算簇并行完成(p由流处理器的型号与硬件配置决定,见步骤1)。“粗计算过程”以vH,vE,vM,vH′四个流向量为输入,利用动态规划原理计算,输出vH,vE和vF三个流向量及当前的局部相似性得分值V的更新值;“精计算过程”以vH,vE和vF三个流向量为输入,利用动态规划原理进行多轮迭代计算,每轮计算都对vH,vE和vF三个流向量的取值进行更新,并根据当前计算结果设置一个“继续迭代标志位”,用以确定是否需要继续执行下一轮的迭代过程;若继续迭代标志位为1,则重新执行新一轮的迭代计算;若继续迭代标志位为0,则表示计算过程完成,转至步骤5.1.2.6。
A粗计算过程中每个硬件计算簇执行如下步骤:。
A1 初始化:从vH′流向量中读取一个数据H,置F的值为0。
A2 迭代步:持续执行下述步骤,直到vE向量中的数据被读取完毕为止。
A2.1读取流数据:从流向量vM中读取一个数据M,从流向量vE中读取一个数据E。
A2.2更新相似性比对得分值V:若H+M>V,则更新相似性比对得分值为V←H+M。
A2.3更新H值并写回流向量vH:取H←max{H+M,E,F,0},并用所得的H值更新流向量vH中最近一次读取的旧数据。
A2.4更新E值并写回流向量vE:取E←max{E-h,H-g},并用得到的E值更新流向量vE中最近一次读取的旧数据。
A2.5更新F值:取F←max{F-h,H-g}。
A2.6迭代条件判定:若流向量vE中所有数据均被读取并写回,则结束迭代,否则,先从流向量vH中读取一个数据H,再重新执行A2.1~A2.6的迭代过程。
A3写回流向量vF:所有p个硬件计算簇将本地计算的F值“向右传递”,同时将接收到的(来自左侧邻居的)F值写回到流向量vF中。所谓“向右传递”,是指编号为i的硬件计算簇将本地计算得到的F值传递给编号为i+1的硬件计算簇(i=0,1,2,...,p-2),编号为p-1的硬件计算簇的F值舍弃,编号为0的硬件计算簇的F值更新为0。数据传递是通过消息发送机制完成的。
A4 汇总所有硬件计算簇上获得的最佳比对得分值:每个硬件计算簇在上述迭代结束后都获得一个本地的局部相似性比对得分值V,通过在p个硬件计算簇之间进行数据通讯,选出p个比对得分值中的最大值,作为流内核计算中粗计算过程的执行结果。
A5 设置“继续迭代标志位”:若至少有一个硬件计算簇上本地计算结果满足F>vH[0]-g且F>0,则设置“继续迭代标志位”为1,否则置为0。“继续迭代标志位”也作为流内核计算中粗计算过程的执行结果返回。
B 精计算过程中每轮迭代计算所执行的步骤如下:
B1 初始化:从流向量vF中读取一个数据F。
B2 迭代步:迭代执行下述步骤,直到流向量vE中的数据被读取完毕为止。
B2.1 更新流向量vH:从流向量vH中读取一个数据H,若H<F,则取H←F,并将H值写回流向量vH刚才读取数据的位置;否则忽略本步骤。
B2.2 更新流向量vE:从流向量vE中读取一个数据E,取E=max{H-g,E-h},并将E值写回流向量vE刚才读取数据的位置。
B2.3 更新F值:取F←F-h。
B2.4 迭代条件判定:若流向量vE中所有数据均被读取并写回,则结束迭代,否则,重新执行B2.1~B2.4的迭代过程。
B3 写回流向量vF:所有p个硬件计算簇将本地计算的F值“向右传递”,同时将接收到的F值写回到流向量vF中。详细过程参见步骤A3。
B4 设置“继续迭代标志位”:若至少有一个硬件计算簇上本地计算结果满足F>H-2g且F>0,则设置“继续迭代标志位”为1,否则置为0。
5.1.2.6令j增加1,若j<m(m=|t|是库序列t的长度,见步骤5.1.1的说明),则重复执行步骤5.1.2.3~5.1.2.6;否则表明库序列t与查询序列s的比对完成,其相似性比对得分值为V,转至步骤5.1.2.7。
5.1.2.7判定是否需要提高计算精度。对K=2p(见步骤5.1.2.1中的设置)时计算得到的相似性比对得分值进行上溢检查,若未发生上溢即V≠65536,则比对得分的计算结果是正确的,无需修正;若发生上溢即V=65536,则取K=p,将所有数据改用精度更高的UINT类型(32位无符号整数,所能表示的数值范围为0~4294967295),重新执行步骤5.1.2.2~5.1.2.7计算局部比对的相似性得分值。在K=p的情形下,尽管提高了计算精度,但步骤5.1.2.5中的流内核级计算中一条指令同时只能得到p个计算结果,并发度较K=2p时减半,计算所需时间延长。
5.2从N′个成对序列比对的得分值中挑出具有最高比对得分值的库序列作为当前节点机器返回的搜索结果序列,同时返回其比对得分值。
6.主控节点机器收集各节点机器上并行搜索任务的结果并汇总输出:每个节点机器完成各自的搜索子任务后,将返回结果发送给主控节点机器,主控节点机器将返回的这np条结果序列按其比对得分值大小排序,挑选得分值最高的那条序列作为最终搜索结果并输出。
在本发明生物序列数据库搜索的整个流程里,包含了三个层次的并行加速与优化:一是搜索任务在集群的np个节点机器之间并行执行(称为集群节点层次的加速),二是每个节点机器将两条序列的比对计算任务分配到本地流处理器的p个硬件计算簇中并行进行(称为流级层次的加速),三是每个硬件计算簇中单条指令最多可以同时操作2个UHALF数据类型(称为核级层次的加速)。其中,集群节点层次的并行加速主要针对传统生物序列数据库搜索中的“分解搜库任务”这一环节,而流级层次和核级层次的加速优化主要针对“成对序列的比对”这一环节,体现在流内核计算的“粗计算过程”和“精计算过程”中,它们均采用与Smith-Waterman算法一样的动态规划原理,将计算过程并发到流处理器的p个硬件计算簇中(即每个硬件计算簇同时执行了一条流处理器发出的流指令,每条流指令操作了p个运算过程)。在这两个流内核计算过程中,每条内核指令操作的均为32位字长的数据,因此在步骤5.1.2.1中(即取K=2p,数据类型采用16位的UHALF类型),每条内核指令又可以同时操作2个UHALF类型的数据。这样,在一条流指令周期内,有p个硬件计算簇在并发执行,每个硬件计算簇同时执行2个数据的运算,每个流指令周期共计有2p个运算。但当这种计算精度无法满足要求而改为执行步骤5.1.2.7时(即K=p,数据类型为32位的UINT类型),每个硬件计算簇在一条流指令周期内只能执行1个运算,每个流指令周期内共计只有p个运算,运行速度将减慢。
与现有技术相比,采用本发明可达到以下技术效果:
1.本发明基于核级层次、流级层次以及集群节点层次这三层并行策略、在配置有流处理器的计算机集群系统上实现了生物序列数据库搜索的加速,在生物序列数据库搜索过程中,充分挖掘了集群节点之间、节点中流处理器的硬件计算簇之间、流内核的指令操作数之间三个层次的并行潜力,使得搜索与计算速度得以加快。通过在单个节点机器主处理器为Intel Pentium 4 CPU 3.0GHz、协处理器(即流处理器)为主频500MHz的集群系统上对本发明的方法进行测试,结果表明,在由8个节点组成的集群系统中,可以达到每秒计算3.05亿个矩阵单元的速度;在由16个节点组成的集群系统中,可以达到每秒计算5.60亿个矩阵单元的速度,搜索速度远远超过了现有的并行处理类搜索方法。其中,每秒计算的矩阵单元数是国际上衡量生物序列数据库搜索速度的标准度量标准,其计算公式为:查询序列长度×数据库所有序列的总长度÷搜索所用的挂钟时间。
2.本发明采用具有流处理器的计算机集群系统,流处理器作为普通计算机的协处理器,具有成本低、计算部件密集、性价比高的优点,克服了传统专用硬件造价高、普及率低的缺点。
3.本发明通过数据分解策略、将大型生物序列数据库的搜索任务分解成多个规模较小的搜索子任务,并分布到集群系统的各个节点机器上并发执行。一方面增加了搜索任务的并发度,提高了整体搜索的速度;另一方面,数据库搜索期间需要将数据库全部读入内存进行处理,多个节点协同工作时,所能搜索的数据库容量的上限值得到提高(是所有节点内存容量之和),从而拓宽了生物序列数据库搜索的适用范围(原本只能搜索最大规模为C的数据库,现在可以搜索最大规模为C·Np的数据库)。
4.本发明在利用流处理器计算成对序列比对的相似性比对得分值时,采取了多项加速措施:(1)对查询序列进行了填充与重排,与传统的Smith-Waterman算法实现相比,这种数据划分与数据组织策略能够有效减少局部相似性比对得分值计算过程的数据依赖关系,便于进行并行任务的划分,最大程度地降低并行任务执行期间的通讯开销,加快了计算速度。(2)将计算比对得分的过程转化为对少数几个流向量数据的操作,利用流处理器的体系结构特点,基于SIMD并行策略将计算任务分布到多个硬件计算簇上,实现了并发执行的加速效果。(3)借鉴Green(1993)对Smith-Waterman算法的优化方案,对计算比对得分值的流处理过程分解成“粗计算”和“精计算”两个流内核计算过程,当粗计算过程能返回正确的比对得分值时,就可以省去精计算过程的计算过程,这样可以节约计算时间。Green的统计数据表明,在通常的蛋白质序列搜索中,约有73%的成对序列比对任务在计算比对得分值时只需一轮迭代(即相当于本发明中只执行一次“粗计算”过程)。
5.本发明在流处理器上实现“粗计算”与“精计算”时,采用了自适应动态调整数据精度的方案,先用“低精度、高并行度”模式进行计算,仅当低精度下的计算结果发生上溢时,才进一步切换至“高精度、低并行度”模式下重新计算。实际上,只要两条序列的比对得分值小于65535,低精度模式就不产生上溢,从而无需高精度模式的执行。在实践应用中,用户提交的查询序列多是短序列(如长度不超过1000),其数据库搜索与比对的最高比对得分值都不会超出这一上限。这种独特的处理方式充分开发了流内核层次中的并行潜力,为搜索过程的加速提供了贡献。
综上所述,本发明依照“成本性能兼顾、软件硬件结合”的原则,借助于带有流处理器的计算机集群系统,采用“分解搜库任务”与“成对序列比对”两个环节综合加速的策略,在流处理器实现了“成对序列的比对”方法;对生物序列数据库“分解搜库任务”进行了并行处理;在流处理器的核级层次、流级层次以及集群处理器层次进行了三层加速优化,以较小的成本实现了生物序列数据库搜索的明显加速。
附图说明
图1是本发明的总流程图。
图2是本发明中数据库序列的分布存储流程示意图。
图3是本发明中查询序列的填充对齐与重排流程示意图。
图4是本发明中每个集群节点机器计算两条序列的比对得分值流程图。
图5是本发明中流内核计算的“粗计算过程”流程图。
图6是本发明中流内核计算的“精计算过程”流程图。
具体实施方案
图1是本发明的总流程图,主要包括以下六个步骤,其中第1~2步是集群系统的建立和数据库序列的预处理,只需在系统建立之初及数据库有更新时执行一次,在以后每一次具体的搜索数据库任务中,仅需执行第3~6步即可。
1.构建带流处理器的集群系统。该集群系统由多台个人计算机组成,每台计算机都是集群系统的节点,各节点有着各自独立的存储系统,节点之间的通信采用消息传递的方式。节点依次编号为0,1,2,...,np-1。这里np为集群系统中节点的总数目(实际系统中,np的取值为2的整数次幂等)。为了便于后续处理,指定编号为0的那个节点机器为主控节点机器,它主要负责与用户交互,完成输入输出及对搜索结果的中间处理。每个节点除了自身的主处理器外,还配置一个流处理器为该节点的协处理器;流处理器主要由存储部件、计算部件和控制部件组成,其中计算部件是流处理器的主体,它包含有p个硬件计算簇单元,在实施计算时,p个硬件计算簇可利用SIMD方式同时处理流向量中的P个数据,达到并行处理的加速效果。实际系统中p是流处理器中硬件计算簇单元的数目,它是由具体的流处理器型号所决定的。
2主控节点机器将数据库序列分布存储到各个节点机器。将待搜索的生物序列数据库分解成容量几乎相等的np份,并分布存储到集群系统中的np个节点机器中去,具体分解的方法见图2的说明。本步骤需要在进行搜索之前完成,而且每当数据库的序列有变更(如增加、删除、修改)时就执行一次本步骤。
3主控节点机器对查询序列进行填充与重排。首先对查询序列进行尾部填充空元素的操作,使填充后的查询序列长度是2p的整倍数(p=8是集群系统中每个节点机器中流处理器上的硬件计算簇的数目),然后再对该序列进行元素的重排。查询序列的填充与重排过程详见图3的说明。本步骤的任务只在集群系统中的总控节点(编号为0的节点)机器上执行。
4主控节点机器将查询序列分布存储到各个节点机器。由总控节点机器负责将上述填充与重排后的查询序列分发给集群系统中的每个节点机器。
5并行执行数据库搜索任务。通过上述对数据库序列和查询序列的分布存储,集群系统中的每个节点机器本地存放着一个生物序列数据的子集(子数据库)和一条查询序列,各节点各自独立、并行地执行查询序列对本地子数据库的搜索任务,搜索完成后,每个节点机器返回当前节点本地子数据库中比对得分值最高的一条序列(连同比对得分值本身)。搜索的详细过程见图4的说明。
6主控节点机器收集并汇总数据库搜索的结果。由主控节点负责收集所有节点机器的搜索结果,共得到np条子搜索结果序列,选出其中比对得分值最高的那一条序列(连同比对得分值),作为整个数据库搜索任务的最终输出结果。
图2是本发明第二步中对生物序列数据库的数据分解与分布存储流程示意图,主要过程为:
1对原始的生物序列数据库中的所有序列依长度从大到小到排列,并依次编号为0,1,2,...,N-1,其中N是数据库中序列的总数目(图2中N=19)。
2将每条序列的编号按图中的箭头方向顺次排列成阵列,每行np个编号(np是集群系统中节点机器的数目,图2中np=4),第1行从左向右排列编号,第2行从右向左排列编号,其余行依次类推(即奇数行从左向右排列编号,偶数行从右向左排列编号,最后一行可能出现排不满的情况);排列完成后,将第1列中的编号所对应的库序列分配给0号节点,将第2列中编号所对应的库序列分配给1号节点,依此类推,将最右边一列中编号所对应的库序列分配给np-1号节点。如果用i′表示编号为i的序列所分配的节点编号(i=0,1,...,N-1),则上述过程可以用数学公式简洁表示为:若i0<np,则取i′=i0;否则(即i0≥np),取i′=2np-1-i0。式中,i0=i mod(2np)。
图3是本发明第三步中查询序列的填充对齐与重排流程示意图,具体过程为:
1原始查询序列的数据填充与补齐。在查询序列的尾部填充空元素NUL,使填充后的查询序列长度是2p的整倍数(p=8是集群系统中每个节点机器中流处理器上的硬件计算簇的数目)。在此过程中,要遵循“填充空元素的个数要尽可能少”的原则,即:如果查询序列的长度n′是2p的整倍数,则不填充;否则在查询序列的尾部追加2p-n′mod(2p)个空元素。在示意图3中,原始序列长度n′=69,2p=16,在末尾填充11个空元素,从而使填充后的序列长度为n=80。
2查询序列的重排。为了适应于流内核计算的需求,需要将填充后的查询序列重新组织,这个过程包括两步:首先将长度为n的查询序列顺次划分成K个相同大小的数据块,每个块大小为n/K,如图3所示,将这些数据块从上到下排列成一个阵列,每个数据块占一行;其次,将形成的阵列进行转置,然后顺次从上到下逐行(每行中的数据从左向右依次)读出,形成重排后的查询序列。若 表示填充补齐后的查询序列,s=s0,s1,...,sn-1表示重排后的序列,则上述重排过程可用数学公式表示为其中i=0,1,2,...,n-1。上述重排过程中用到的参数K=p或2p,其中p为每个流处理器上硬件计算簇的数目,K的两种取值分别代表了不同的数值精度和并行粒度:当K=2p时,采用较低精度的UHALF类型数据进行计算,硬件计算簇中的每条指令可同时计算两个结果,并行度较大;反之当K=p时,采用较高精度的UINT类型数据进行计算,硬件计算簇中的每条指令只能计算一个结果,并行度较小。
图4是本发明第五步中每个集群节点机器执行序列比对任务的流程图,主要过程为:
1输入查询序列s,这里的查询序列是经过填充对齐与重排后的序列(如图3),用n=|s|表示查询s的长度。
2每个节点机器从本地数据库中取一条未参与过比对的序列t,记其长度为m=|t|。
3首先取K=2p,所有参与计算的数据取为16位的UHALF类型。
4初始化:置局部相似性比对得分值V=0,置流向量vH[0..n-1]和vE[0..n-1]为全0值。置库序列t的当前列标志.j=0。
5设置流向量vM的值:针对库序列的第j个位置,通过查询匹配打分矩阵设置vM[0..n-1]流向量的新值。其中,若si为“空字符”NUL,则取vM[i]=0;否则,取vM[i]=S(si,tj),即si与tj在打分表中对应的打分值。这里,si表示查询序列的第i个字符,tj表示库序列的第j个字符,i=0,1,...,n-1。
6设置流向量vH′的值:将流向量vH的尾部p个元素复制给vH′[0..p-1],同时将vH′的元素依次向右移动一个位置,空出的最左端元素vH′[0]置为0值。
7“粗计算”:以vH,vE,vM,vH′四个流向量为输入,利用动态规划原理对vH,vE和vF三个流向量及当前的局部相似性比对得分值V进行更新,并返回“继续迭代标志位”loop_more。
8根据“继续迭代标志位”loop_more的取值进行流程分支执行:若loop_more=1,则转第9步;否则转至第10步。
9“精计算”:以vH,vE和vF三个流向量为输入,是利用动态规划原理对vH,vE和vF三个流向量进行修改与更新,并返回“继续迭代标志位”loop_more。执行完毕后转第8步根据loop_more的取值进行流程分支。
10更新库序列的当前列标志位j←j+1,若j<m=|t|,则转第5步继续处理库序列的下一列;否则转第11步。
11判定精度是否满足要求:若K=2p且比对得分值V发生上溢,则转第12步重新使用更高的精度进行计算;否则已经完成当前s和t的比对得分值计算,转第13步。
12重新取K=p,所有参与计算的数据取为32位的UINT类型。然后转第4步完成更高精度的计算过程。
13保存参与本次比对的库序列t及其比对得分值V。
14若所有库序列均已参与过序列比对,则当前节点对所有的库序列按照比对得分值的大小排序,输出比对得分最高的那条库序列连同其得分值;否则转第2步对剩余的库序列进行比对计算。
图5和图6分别是本发明中“粗计算”与“精计算”两个流内核计算过程的流程图,其中,符号》表示数据从流向量中“流出”(即读取)到普通变量中去,符号《表示将普通变量中的数据“流入”(即回写)到流向量中去。
在粗计算过程中,输入vH,vE,vM,vH′四个流向量,借助H,E,F等普通变量完成对vH,vE和vF三个流向量的计算与更新,并输出局部比对得分值V和继续迭代标志位loop_more。具体实现过程如下,其中第1~8步是在多个硬件计算簇上独立、并发执行的:
1初始化:vH′》H,置F=0。
2读取流数据:vM》M,vE》E。
3更新比对得分值V:置V←max{V,H+M},其中max表示取最大值运算。
4更新H值并回写:取H←max{H+M,E,F,0},并回写vH《H。
5更新E值并回写:取E←max{E-h,H-g},并回写vE《E。
6更新F值:取F←max{F-h,H-g}。
7迭代条件判定:若流向量vE中所有数据均被读取并写回,则结束迭代并转第8步;否则,先从流向量vH中读取一个数据H(vH》H),转第2步重新迭代。
8写回流向量vF:所有p个硬件计算簇通过消息发送机制将本地计算的F值“向右传递”,同时将接收到的(来自左侧邻居的)F值写回到流向量vF中。所谓“向右传递”,是指编号为i的硬件计算簇将本地计算得到的F值传递给编号为i+1的硬件计算簇(i=0,1,2,...,p-2),编号为p-1的硬件计算簇的F值舍弃,编号为0的硬件计算簇的F值更新为0。
9汇总所有硬件计算簇上获得的最佳比对得分值:每个硬件计算簇在上述迭代结束后都获得一个本地的局部比对得分值V,通过在p个硬件计算簇之间进行数据通讯,选出p个比对得分中的最大值,作为输出结果。
10设置“继续迭代标志位”loop_more:若至少有一个硬件计算簇上本地计算结果满足F>vH[0]-g且F>0,则设置loop_more为1,否则置为0。
在精计算过程中,输入vH,vE,vF三个流向量,借助H,E,F等普通变量完成对vH,vE和vF三个流向量的计算与更新,并输出继续迭代标志位loop_more。具体实现过程如下,其中第1~8步是在p个硬件计算簇上独立、并发执行的:
1初始化:vF》F。
2更新H值并回写:vH》H,取H←max{H,F},并回写vH《H。
3更新E值并回写:vE》E,取E←max{E-h,H-g},并回写vE《E。
4更新F值:取F←F-h。
5迭代条件判定:若流向量vE中所有数据均被读取并写回,则转第6步结束迭代;否则,转第2步重新迭代。
6写回流向量vF:所有p个硬件计算簇通过消息发送机制将本地计算的F值“向右传递”,同时将接收到的(来自左侧邻居的)F值写回到流向量vF中。所谓“向右传递”,是指编号为i的硬件计算簇将本地计算得到的F值传递给编号为i+1的硬件计算簇(i=0,1,2,...,p-2),编号为p-1的硬件计算簇的F值舍弃,编号为0的硬件计算簇的F值更新为0。
7设置“继续迭代标志位”loop_more:若至少有一个硬件计算簇上本地计算结果满足F>H-2g且F>0,则设置loop_more为1,否则置为0。
Claims (6)
1.一种基于流处理的生物序列数据库搜索多层次加速方法,其特征在于使用配置有流处理器的计算机集群系统,对生物序列数据库搜索过程中的“分解搜库任务”与“成对序列比对”这两个核心环节进行资源分配与任务划分,实现集群节点层、流级计算层、流内核指令层三个层次的多级并行提速,具体方法是:
第一步,构建由多台个人计算机组成的集群系统,每台计算机都是集群系统的节点,各节点有着各自独立的存储系统,节点之间的通信采用消息传递的方式;节点依次编号为0,1,2,...,np-1,np为集群系统中节点的总数目,指定编号为0的那个节点机器为主控节点机器,它负责与用户交互,完成输入输出及对搜索结果的中间处理;每个节点除了自身的主处理器外,还配置一个流处理器为该节点的协处理器;流处理器中的计算部件包含有p个硬件计算簇单元,p个硬件计算簇利用SIMD方式同时处理流向量中的p个数据;p是流处理器中硬件计算簇单元的数目,它由具体的流处理器型号与配置所决定;
第二步,主控节点机器将数据库序列分布存储到集群系统中各个节点机器,即在创建数据库和增量更新数据时,将生物序列数据库中的序列数据平均分布到集群系统中不同节点的存储器中;
第三步,主控节点机器对查询序列进行填充及重排;
第四步,主控节点机器将查询序列分发到集群系统中的各个节点机器,即主控节点机器将填充与重排后的查询序列分发给计算机集群系统中的所有节点,每个节点机器将该查询序列及存放于本地存储器中的数据库序列一并读入本地内存;
第五步,各个节点机器并行执行搜索任务,每个节点机器负责完成查询序列在本地数据库序列中的搜索任务,搜索的结果是一条比对得分值最高的结果序列及其比对得分值;每个节点机器上的搜索过程为:使用流处理器、结合流处理器体系结构及Smith-Waterman比对算法的特点,基于SIMD并行策略计算出查询序列与节点本地数据库中每条序列的比对得分值,获得N′个比对得分值,其中N′是本地数据库中序列的数目;从N′个成对序列比对的得分值中挑出具有最高比对得分值的库序列作为当前节点机器返回的搜索结果序列,同时返回其比对得分值;
第六步,主控节点机器收集各节点机器上并行搜索任务的结果并汇总输出:每个节点机器完成各自的搜索子任务后,将返回结果发送给主控节点机器,主控节点机器将返回的这np条结果序列按其比对得分值大小排序,挑选得分值最高的那条序列作为最终搜索结果并输出。
2.如权利要求1所述的基于流处理的生物序列数据库搜索多层次加速方法,其特征在于主控节点机器对数据库序列进行分布存储的方法是:
2.1 主控节点机器对数据库序列按照序列长度进行降序排列,形成一个序列列表seq[0],seq[1],...,seq[N-1],其中N是生物序列数据库中序列的总数目;
2.2 主控节点机器将序列列表中的每条序列分发到集群系统中的各个节点中去,分发规则是:将seq[i]这条序列分发到编号为i′的节点的局部存储器中,i′的计算方法是:若i0<np,则取i′=i0;若i0≥np,则取i′=2np-1-i0,式中,i0=imod(2np),i=0,1,...,N-1。
4.如权利要求1所述的基于流处理的生物序列数据库搜索多层次加速方法,其特征在于每条库序列与查询序列之间的成对序列比对得分值的计算过程为:
4.1 确定成对序列比对过程中的参数,方法是:
●参与比对的两条序列中,一条是查询序列,用符号s表示,其长度记为n;另一条是数据库序列,用符号t表示,其长度记为m;
●S表示成对序列比对Smith-Waterman算法中的匹配打分矩阵,对于核酸序列数据而言,默认使用“替换-置换打分矩阵”,对于蛋白质序列数据而言,默认使用Blosum 50打分矩阵,根据应用问题的需求还可指定包含Blosum 62及PAM系列在内的其它打分矩阵;
●g和h表征成对序列比对过程中出现空位时的仿射罚分模型参数,即对于长度为k的空位区,其罚分值为g+(k-1)·h,这两个参数默认取值为g=14,h=2;
4.2 构造五个辅助流向量vH[0..n-1],vE[0..n-1],vM[0..n-1],vF[0..p-1]和vH′[0..p-1],利用流处理器计算查询序列s与库序列t的局部相似性得分,计算过程如下:
4.2.1 取K=2p,所有参与计算的数据均使用UHALF类型,这种数据类型的精度为半字长即16位无符号整数,所能表示的数值范围为0~65535;
4.2.2 初始化流向量vH与vE:为流向量vH[0..n-1]和vE[0..n-1]赋以全0的初值;置流向量vF[0..p-1]的初值为全0;置库序列位置标志j为0,置局部相似性比对得分值V为0;
4.2.3 计算流向量vM的值:针对库序列的第j个位置,通过查询匹配打分矩阵S设置vM[0..n-1]流向量的新值,其中,若si为“空字符”NUL,则取vM[i]为0值;否则,vM[i]取为si与tj在打分表中对应的打分值S(si,tj),si表示查询序列的第i个字符,tj表示库序列的第j个字符,i=0,1,...,n-1;
4.2.4 设置流向量vH′的值:将流向量vH的尾部p个元素复制给vH′[0..p-1],同时将vH′的元素依次向右移动一个位置,空出的最左端元素vH′[0]置为0值;
4.2.5 在流内核级完成相似性比对得分值的计算:以vH,vE,vM,vH′四个流向量为输入,通过多轮迭代过程计算得到最终的相似性比对得分值V,第一轮迭代计算称为“粗计算过程”,后续轮次的计算称为“精计算过程”,这两个过程都是采用SIMD策略由流处理器的p个硬件计算簇并行完成;“粗计算过程”以vH,vE,vM,vH′四个流向量为输入,利用动态规划原理计算,输出vH,vE和vF三个流向量及当前的局部相似性得分值V的更新值;“精计算过程”以vH,vE和vF三个流向量为输入,利用动态规划原理进行多轮迭代计算,每轮计算都对vH,vE和vF三个流向量的取值进行更新,并根据当前计算结果设置一个“继续迭代标志位”,若继续迭代标志位为1,则重新执行新一轮的迭代计算;若继续迭代标志位为0,则表示计算过程完成,转至步骤4.2.6;
4.2.6 令j增加1,若j<m,m=|t|是库序列t的长度,则重复执行步骤4.2.3~4.2.6;否则表明库序列t与查询序列s的比对完成,其相似性比对得分值为V,转至步骤4.2.7;
4.2.7 判定是否需要提高计算精度,对K=2p时计算得到的相似性比对得分值进行上溢检查,若未发生上溢即V≠65536,则比对得分的计算结果是正确的,无需修正;若发生上溢即V=65536,则取K=p,将所有数据改用精度更高的UINT类型,重新执行步骤4.2.2~4.2.7计算局部比对的相似性得分值。
5.如权利要求4所述的基于流处理的生物序列数据库搜索多层次加速方法,其特征在于所述粗计算过程中每个硬件计算簇执行如下步骤:
A1 初始化:从vH′流向量中读取一个数据H,置F的值为0;
A2 迭代步:持续执行下述步骤,直到vE向量中的数据被读取完毕为止;
A2.1 读取流数据:从流向量vM中读取一个数据M,从流向量vE中读取一个数据E;
A2.2 更新比对得分值V:若H+M>V,则更新比对得分为V←H+M;
A2.3 更新H值并写回流向量vH:取H←max{H+M,E,F,0},并用所得的H值更新流向量vH中最近一次读取的旧数据;
A2.4 更新E值并写回流向量vE:取E←max{E-h,H-g},并用得到的E值更新流向量vE中最近一次读取的旧数据;
A2.5 更新F值:取F←max{F-h,H-g};
A2.6 迭代条件判定:若流向量vE中所有数据均被读取并写回,则结束迭代,否则,先从流向量vH中读取一个数据H,再重新执行A2.1~A2.6的迭代过程;
A3 写回流向量vF:所有p个硬件计算簇将本地计算的F值“向右传递”,同时将接收到的来自左侧邻居的F值写回到流向量vF中,“向右传递”是指编号为i的硬件计算簇将本地计算得到的F值传递给编号为i+1的硬件计算簇,i=0,1,2,...,p-2,编号为p-1的硬件计算簇的F值舍弃,编号为0的硬件计算簇的F值更新为0,数据传递通过消息发送机制完成;
A4 汇总所有硬件计算簇上获得的最佳比对得分值:每个硬件计算簇在上述迭代结束后都获得一个本地的局部相似性比对得分值V,通过在p个硬件计算簇之间进行数据通讯,选出p个比对得分值中的最大值,作为流内核计算中粗计算过程的执行结果;
A5设置“继续迭代标志位”:若至少有一个硬件计算簇上本地计算结果满足F>vH[0]-g且F>0,则设置“继续迭代标志位”为1,否则置为0,“继续迭代标志位”也作为流内核计算中粗计算过程的执行结果返回。
6.如权利要求4所述的基于流处理的生物序列数据库搜索多层次加速方法,其特征在于所述精计算过程中每轮迭代计算所执行的步骤如下:
B1初始化:从流向量vF中读取一个数据F;
B2迭代步:迭代执行下述步骤,直到流向量vE中的数据被读取完毕为止;
B2.1更新流向量vH:从流向量vH中读取一个数据H,若H<F,则取H←F,并将H值写回流向量vH刚才读取数据的位置;否则忽略本步骤;
B2.2更新流向量vE:从流向量vE中读取一个数据E,取E=max{H-g,E-h},并将E值写回流向量vE刚才读取数据的位置;
B2.3更新F值:取F←F-h;
B2.4迭代条件判定:若流向量vE中所有数据均被读取并写回,则结束迭代,否则,重新执行B2.1~B2.4的迭代过程;
B3写回流向量vF:所有p个硬件计算簇将本地计算的F值“向右传递”,同时将接收到的F值写回到流向量vF中;
B4设置“继续迭代标志位”:若至少有一个硬件计算簇上本地计算结果满足F>H-2g且F>0,则设置“继续迭代标志位”为1,否则置为0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200710036196XA CN100495404C (zh) | 2007-11-22 | 2007-11-22 | 基于流处理的生物序列数据库搜索多层次加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200710036196XA CN100495404C (zh) | 2007-11-22 | 2007-11-22 | 基于流处理的生物序列数据库搜索多层次加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101158952A CN101158952A (zh) | 2008-04-09 |
CN100495404C true CN100495404C (zh) | 2009-06-03 |
Family
ID=39307054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200710036196XA Expired - Fee Related CN100495404C (zh) | 2007-11-22 | 2007-11-22 | 基于流处理的生物序列数据库搜索多层次加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100495404C (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411679B (zh) * | 2010-09-26 | 2014-04-16 | 中国科学院计算技术研究所 | 一种蛋白质鉴定的大规模分布式并行加速方法及其系统 |
CN102411680B (zh) * | 2010-09-26 | 2014-03-26 | 中国科学院计算技术研究所 | 一种蛋白质鉴定的大规模分布式并行加速方法及其系统 |
CN102411666B (zh) * | 2010-09-26 | 2014-04-16 | 中国科学院计算技术研究所 | 一种蛋白质鉴定的大规模分布式并行加速方法及其系统 |
CN102023846B (zh) * | 2011-01-06 | 2014-06-04 | 中国人民解放军国防科学技术大学 | 基于单片多处理器系统的共享前端流水线结构 |
CN102521529A (zh) * | 2011-12-09 | 2012-06-27 | 北京市计算中心 | 基于blast的分布式基因序列比对方法 |
CN102663270B (zh) * | 2012-03-08 | 2015-06-17 | 华中科技大学 | 基于gpu的序列比对算法的比对结果处理方法 |
CN102750461B (zh) * | 2012-06-14 | 2015-04-22 | 东北大学 | 一种可得到完全解的生物序列局部比对方法 |
CN102779183B (zh) * | 2012-07-02 | 2015-05-27 | 华为技术有限公司 | 数据查询的方法、设备及系统 |
CN102819692A (zh) * | 2012-08-10 | 2012-12-12 | 上海交通大学 | 基于fpga的rna二级结构预测装置、系统及其实现方法 |
US9292569B2 (en) * | 2012-10-02 | 2016-03-22 | Oracle International Corporation | Semi-join acceleration |
CN102968491B (zh) * | 2012-11-27 | 2016-06-08 | 深圳市网信联动通信技术股份有限公司 | 一种数据分配方法和装置 |
CN103136363A (zh) * | 2013-03-14 | 2013-06-05 | 曙光信息产业(北京)有限公司 | 查询处理方法和集群数据库系统 |
CN103123652A (zh) * | 2013-03-14 | 2013-05-29 | 曙光信息产业(北京)有限公司 | 数据查询方法和集群数据库系统 |
CN105989374B (zh) * | 2015-03-03 | 2019-12-24 | 阿里巴巴集团控股有限公司 | 一种在线训练模型的方法和设备 |
CN104915236A (zh) * | 2015-06-23 | 2015-09-16 | 迪安杰科技无锡有限公司 | 嵌入式生物认证平台处理系统 |
CN107665290A (zh) * | 2016-07-27 | 2018-02-06 | 华为技术有限公司 | 一种数据处理的方法和装置 |
CN107358061A (zh) * | 2017-07-31 | 2017-11-17 | 中国科学技术大学 | 基于Spark和SIMD的弹性分布式序列比对系统及方法 |
CN108874526A (zh) * | 2018-07-05 | 2018-11-23 | 天使翼(武汉)科技创业发展有限公司 | 一种基于网络通讯的算力共享平台及方法 |
CN113535745B (zh) * | 2021-08-09 | 2022-01-18 | 威讯柏睿数据科技(北京)有限公司 | 一种层次化数据库操作加速系统和方法 |
CN116932837A (zh) * | 2023-09-13 | 2023-10-24 | 贵州大学 | 一种基于集群的脉冲星并行搜索优化方法及系统 |
-
2007
- 2007-11-22 CN CNB200710036196XA patent/CN100495404C/zh not_active Expired - Fee Related
Non-Patent Citations (6)
Title |
---|
Parallel Computation in Biological Sequence Analysis. Tieng K. Yap et al.ieee transactions on parallel and distributed systems,Vol.9 No.3. 1998 |
Parallel Computation in Biological Sequence Analysis. Tieng K.Yap et al.ieee transactions on parallel and distributed systems,Vol.9 No.3. 1998 * |
Smith-Waterman算法的若干优化及并行实现. 周澄,郁松年.计算机工程与应用,第23期. 2003 |
Smith-Waterman算法的若干优化及并行实现. 周澄,郁松年.计算机工程与应用,第23期. 2003 * |
多重生物序列对准及其算法综述. 郭卫斌等.高技术通讯. 2001 |
多重生物序列对准及其算法综述. 郭卫斌等.高技术通讯. 2001 * |
Also Published As
Publication number | Publication date |
---|---|
CN101158952A (zh) | 2008-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100495404C (zh) | 基于流处理的生物序列数据库搜索多层次加速方法 | |
Xue et al. | Using compact evolutionary tabu search algorithm for matching sensor ontologies | |
Issa et al. | ASCA-PSO: Adaptive sine cosine optimization algorithm integrated with particle swarm for pairwise local sequence alignment | |
CN101717817B (zh) | 对基于随机上下文无关文法的rna二级结构预测进行加速的方法 | |
KR101196566B1 (ko) | 멀티 프로세서 시스템 및 그 정보처리방법 | |
Sachdeva et al. | Exploring the viability of the Cell Broadband Engine for bioinformatics applications | |
CN114186749B (zh) | 基于强化学习及遗传算法的柔性车间调度方法及模型 | |
CN107239823A (zh) | 一种用于实现稀疏神经网络的装置和方法 | |
JP6296442B2 (ja) | インメモリデータベースにおける高効率のゲノムリードアラインメント | |
WO2022082879A1 (zh) | 基因测序数据处理方法和基因测序数据处理装置 | |
CN108510050A (zh) | 一种基于混洗蛙跳的特征选择方法 | |
CN103164631B (zh) | 一种智能协同表达基因分析仪 | |
Iranfar et al. | Multiagent reinforcement learning for hyperparameter optimization of convolutional neural networks | |
Ervural et al. | A binary reptile search algorithm based on transfer functions with a new stochastic repair method for 0–1 knapsack problems | |
CN104504303B (zh) | 基于cpu+gpu异构系统的序列比对方法 | |
CN102722472B (zh) | 一种复数矩阵的优化方法 | |
Ying et al. | Gpu-accelerated dna distance matrix computation | |
CN102222274A (zh) | 基于调度编码的免疫克隆选择作业车间调度方法 | |
CN110111838B (zh) | 含假结基于扩展结构的核糖核酸折叠结构预测方法与装置 | |
CN104573331A (zh) | 一种基于MapReduce的K近邻数据预测方法 | |
CN104793922B (zh) | 一种大整数乘法Comba算法基于OpenMP的并行实现方法 | |
Chen et al. | PmliHFM: Predicting Plant miRNA-lncRNA Interactions with Hybrid Feature Mining Network | |
Lladós et al. | Optimization of consistency-based multiple sequence alignment using big data technologies | |
Varré et al. | Manycore high-performance computing in bioinformatics | |
Xia et al. | Fine-grained parallel RNAalifold algorithm for RNA secondary structure prediction on FPGA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090603 Termination date: 20091222 |