基于流处理的生物序列数据库搜索多层次加速方法

文档序号:6572256阅读:253来源:国知局
专利名称:基于流处理的生物序列数据库搜索多层次加速方法
技术领域
本发明主要涉及生命科学和信息科学中海量生物学信息的检索与比较方法,尤其指 如何对生物序列数据库搜索进行多层次加速迫方法。
背景技术
近年来,随着各物种基因组计划的陆续开展与深入,产生了海量的生物学序列数据, 这些数据主要包括DNA (脱氧核糖核酸)、脂A (核糖核酸)序列数据和蛋白质序列数据等。 例如,国际三大核酸数据库GenBank/EMBL/DDBJ中的数据量大约每15个月就会翻一番, 且数据增长的速度还在不断加快,根据摩尔定律可知,生物数据量增长速度正在或即将 超过计算机处理能力的增长速度,因此按照这种增长趋势,搜索、处理这些数据将会花 费更长的时间(在计算机处理能力相对固定的情况下),并需要更高的计算机处理能力(在 任务时间开销相对固定的情况下)。生物序列数据的搜索与比较也面临着如此巨大的挑 战。
给定一条生物序列(以下称为査询序列),到现有的生物序列数据库中去搜索与之足 够相似的一条或多条搜索结果序列(以下称为库序列),这已经成为当前生物与医药领域 分子生物学应用研究中常规性的操作任务。例如,分子水平的进化发育分析研究、新蛋 白质的结构与功能预测等应用都离不开这种基于相似性的数据库搜索。因此研究与开发 快速高效的生物序列数据库搜索的方法和工具对于生物医药等领域的应用具有重要的实 用价值。
生物序列数据库搜索的过程可以概括为三个关键步骤(1) 分解搜库任务逐一取出数据库中的所有库序列,并与查询序列组合成对,各自执行一次"成对序列比对"子任务。这个环节相当于将数据库搜索分解 成多个成对序列比对子任务。(2) 成对序列比对的过程以两条生物序列为输入,对其进行比较计算,得到一 个用以刻画这两条序列相似程度的一个数值,称为相似性比对得分值。(3) 综合搜索结果将数据库中的每一条库序列依照"成对序列的比对"获得的 相似性比对得分值从高到低降序排列,挑出一条(根据应用的需要,有时可
能是数条)得分值最高的库序列作为搜索结果输出。其中前两步("分解搜库任务"与"成对序列比对")是搜索过程中的两个核心环节, 第三步"综合搜索结果"则是对前两步的简单排序、分析与输出。生物序列数据库的搜索与其他常规性的数据库搜索的主要差异体现在"成对序列的 比对"的环节。 一方面,生物序列之间的相似性主要是根据它们在进化历史上是否具有 共同祖先(称为同源性)来进行度量,而生物进化过程普遍存在的突变性就决定了生物 序列的比较不可能是"非此即彼"的精确化方式(就像经典的字符串匹配那样);另一方 面,由于生物序列测序中的误差以及特定实验目标的需要等因素的存在,参与比较的序 列往往都是不完整的"片段",这也需要生物序列比较方法中要进行特殊处理。在成对序 列的比对方面,Smith和Waterman于1981年提出一种利用动态规划算法计算两条序列的 最优局部相似性比对得分值的方法(称为Smith-Waterman方法),这是迄今所知最早的 计算两条序列相似性比对得分值的方法,1982年Gotoh在简化了原始的空位罚分函数形 式(由一般函数简化为线性函数)的基础上,对Sraith-Waterman的方法进行了改进;1993 年Green又针对计算机存储特点对该方法的程序实现进行了优化。用以评估生物序列数据库搜索方法优劣的基本性能指标主要有(1)准确性,主要 是追求更高的敏感性、特异性以及更低的假阳性率、假阴性率;(2)搜索速度,主要考 察能否在可接受的、更短的时间内完成相同数据规模的搜索。准确性的提高主要依靠成 对序列的比对方法的创新与改进,经过来自不同学科研究人员多年来的努力,目前已经 形成了比较成熟的成对序列比对方法,获得了可满足应用需求的准确性。当前制约生物 序列数据搜索与比较的主要瓶颈是搜索速度的日益落后于数据量的增长速度,如前文所 述,国际三大核酸数据库的数据量大约每15个月就会翻一番,计算机软硬件的更新速度 越来越跟不上数据量的增长速度,从而也越来越无法满足应用的需求。为了解决搜索速度落后于数据量增长速度的矛盾,全世界的科研人员进行了不懈的 努力,发展了各种各样的新方法,这些方法可以归为三类(1)牺牲准确性以加快搜索 速度的近似寻优方法,(2)用专门的计算硬件实现搜索核心算法,(3)借助各种并行处 理策略加快搜索速度的并行处理类方法。1.[近似寻优类方法]最初的生物序列数据库搜索方法中的成对序列比对环节主要使用经典的 Smith-Waterman算法,它是一种动态规划的寻优算法,在常规的计算设备实现 Sraith-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(Intel, 2000)。此外,为了保持跟Intel处理器的兼容性,AMD系列的处理 器同样也支持MMX/SSE/SSE2等指令集。大量研究与实践证明,使用SIMD并行技术可以 有效加速Smith-Waterman算法。在Smith与Waterman提出他们的成对序列比对算法后,先后有一系列研究者对该算 法进行了改进与完善。1982年Gotoh在"仿射型空位罚分函数"的情形下给出了 Smith-Waterman算法的一种实现,并将运行时间减少到与两条序列长度之积成正比的量 级,即时间复杂度为O(rrm),其中m和n分别是两条序列的长度。1993年Green编制了名
为SWAT的计算机程序,他在其中对Gotoh的方法进行了一些优化,取得了运行时间縮短 50%的优化效果。后来Pearson在其SSEARCH程序中也采用了这些优化。通常认为, Smith-Waterman-Gotoh-Green方法是迄今为止所知的成对序列比对算法的最优串行版本 实现。之后,Smith-Waterman算法已经被实现和应用到多种不同的SIMD计算机中* 1993年Sturrock与Collins为MasPar系列的并行计算机上实现了 Smi th-Waterman算法,并将程序命名为MPsrch 。他们在具有4096个CPU的MasPar MP-1型计算机上取得了每秒计算1.3亿个矩阵单元的速度性能,在具有16384 个CPU的MasPar MP-2型计算机上取得了每秒计算15亿个矩阵单元的速度性能。* 1993年Brutlag等在MasPar型机器上实现了一个名为BLAZE的Smith-Waterman 算法。
1997年Wozniak提出一种在Sun UltraSPARC微处理器上使用VIS (Visual Instruction Set)技术实现Smith-Waterman算法的方法,该方法在167 MHz的 UltraSPARC处理器上取得了每秒计算1800万个矩阵单元的性能。据 Wozniak(1997)声称,新方法较在同样机器上实现的整数精度的传统算法速度提 高2倍左右。* Taylor于1998年使用應X技术实现Smith-Waterman算法,在Intel奔腾3 500MHz 处理器上取得了每秒计算660万个矩阵单元的性能。* 2000年,Sturrock和Collins在Alpha处理器上利用SIMD技术实现了 Smith-Waterman算法,不过他们方法的细节并未公布。间接文献表明,他们取 得了每秒计算5300万个矩阵单元的速度性能(不清楚他们所用的处理器类型及 参数)。* 2000年Barton等人采用謝X技术对他们自己的SCANPS程序中的Smith-Waterman 进行加速,并声称在Intel奔腾3 650MHz的处理器上达到了每秒计算7100万个 矩阵单元的速度。他们的方法只有一个摘要(以墙报形式发表),细节并未公布。跟近似寻优类方法和专用硬件实现法相比,SIMD并行策略可以在不降低搜索准确性 的前提下,以较低的成本加快了生物序列数据库的搜索速度,因而得到了更为广泛的应 用。然而,这种策略过于强调计算设备的通用性,无法充分利用更好的硬件设备及其性 能优化技术,限制了发挥更佳加速性能的潜力。综合上述三种生物序列数据库搜索的加速方法,不难发现它们仍存在着一些不足之 处。首先,三种加速方法具有各自的特点与适用范围近似寻优方法对计算平台没有特 点要求,适应面宽,缺点是加速过程中牺牲掉了搜索的准确性;专用硬件实现法加速效 果最佳,但高昂的机器设备费用严重限制了其适用性;SIMD并行处理方法结合了前两种 方法的优点,准确性没有降低,成本较小,通用性好,但加速效果没有达到最佳。其次, 所有这三种加速方法都是围绕生物序列数据库搜索中的"成对序列的比对"这一环节展 开的(重点是对传统Smith-Waterman算法的改进或硬件实现),但目前制约生物序列数 据库搜索速度的决定性因素是数据库规模增长过快,因此若能加速生物序列数据库搜索 中的另一环节"分解搜库任务"(例如,将数据库序列与查询序列的比对操作分布到多个 处理器结点上并发执行),则可望达到对搜索速度更加显著的改进效果,这是上述三类方 法中普遍缺乏关注的地方。第三,近年来随着流计算概念的产生和流处理器芯片的出现, 流处理技术在许多应用领域(特别数字信息处理领域)得到了大量的应用;生物序列比 对处理过程中,生物序列数据具有典型的流特性,比较适合于在流处理器进行处理完成; 同时,由于流处理器主要是靠集成大量廉价的计算单元而实现功能的,因而具有计算速 度快、成本低廉的优点。当前的上述三类技术均还未采用这种流处理技术,专利与文献 中也未见有使用流处理器实现生物序列数据库搜索的相关报道。发明内容本发明要解决的技术问题在于在保证不降低搜索准确性、同时兼顾较低成本的前 提下,加快生物序列数据库搜索速度,使其在生物序列数据量急剧增长的背景下仍能够 满足生物医药领域应用的日常需求。为了解决上述技术问题,本发明提出的技术方案为使用配置有流处理器的计算机 集群系统,通过对生物序列数据库搜索过程中的"分解搜库任务"与"成对序列比对" 这两个核心环节进行资源分配与任务划分,实现集群节点层、流级计算层、流内核指令 层三个层次的多级并行提速的目标。具体技术方案为-1.构建由多台个人计算机组成的集群系统,每台计算机都是集群系统的节点,各节 点有着各自独立的存储系统,节点之间的通信采用消息传递的方式。节点依次编号为 0,1,2,...,np-l。这里 为集群系统中节点的总数目(实际系统中, 的取值为2的整数次幂等)。为了便于后续处理,指定编号为o的那个节点机器为主控节点机器,它主要负责与用户交互,完成输入输出及对搜索结果的中间处理。每个节点除了自身的主处理器外,还配置一个流处理器为该节点的协处理器;流处理器主要由存储部件、计算部件
和控制部件组成,其中计算部件是流处理器的主体,它包含有P个硬件计算簇单元,在实 施计算时,p个硬件计算簇可利用SIMD方式同时处理流向量中的p个数据,达到并行处理的加速效果。实际系统中P是流处理器中硬件计算簇单元的数目,它由具体的流处理器型 号与配置所决定。2. 主控节点机器将数据库序列分布存储到集群系统中各个节点机器。在创建数据库 和增量更新数据时,将生物序列数据库中的序列数据平均分布到集群系统中不同节点的 存储器中,以便进行生物序列的数据库搜索时的任务分布与并行处理。由于生物序列数 据库更新的频度远远低于数据库搜索的频度,因此本步骤的操作虽然费时,但执行频度 不高,因而对数据库搜索速度的影响较小。具体方法为2.1主控节点机器对数据库序列按照序列长度进行降序排列,形成一个序列列表 seq[O], seq[l], ..., seq[/V-1],其中iV是生物序列数据库中序列的总数目。2.2主控节点机器将序列列表中的每条序列分发到集群系统中的各个节点中去,分 发规则如下将seq[i]这条序列分发到编号为i'的节点的局部存储器中,?的计算方法为 若i0 < ,贝lj取 :' = i0; 若i0 2,贝U取i' = 2np — 1 — i0 。式中,i0 = i mod (2rap)' i = 0,l;...:iV-l。这种序列分发方法的好处是不论从序列条数还是从存储容量上衡 量,集群系统中各节点的局部数据库存储量都是均衡的。3. 主控节点机器对査询序列进行填充与重排。当查询序列提交给集群系统中主控节 点机器后,主控节点机器对査询序列进行填充补齐及重排,以减少并行计算过程中的数 据依赖,并达到多节点并行计算的负载平衡。具体步骤包括3.1主控节点机器对查询序列进行数据填充与补齐如果查询序列s'的长度V是2p的 整倍数,则跳至步骤3. 2,否则在查询序列的尾部追加2p - n' mod (2p)个"空元素"NUL, 以便于后续任务分配时保持负载平衡。填充补齐后的查询序列记作.s",其长度用n表示。3.2主控节点机器对查询序列进行重排将填充补齐后的查询序列 s〃 =《《...'.<—丄重新组合为s = ,s0, . ., —丄'其中& =《ra。d A.).K+Li/A-」,Z = 0, 1, . . . ,77, — 1。这里K = p或2p,两种取值分别代表不同的数值精度和并行粒度,/(值的具体确定方法见步骤5. 1. 2. 1及5.1. 2. 7。4. 主控节点机器将査询序列分发到集群系统中的各个节点机器。主控节点机器将上 述填充与重排后的查询序列分发给计算机集群系统中的所有节点,每个节点机器将该查 询序列及存放于本地存储器中的数据库序列一并读入本地内存。5. 各个节点机器并行执行搜索任务。每个节点机器负责完成查询序列在本地数据库序列中的搜索任务,搜索的结果是一条比对得分值最高的结果序列及其比对得分值。这 个过程由各个节点机器分布并发完成,它们之间不需要相互通信。每个节点机器上的搜 索过程为5.1使用流处理器、结合流处理器体系结构及Smith-Waterman比对算法的特点,基 于SIMD并行策略快速计算出査询序列与节点本地数据库中每条序列的比对得分值。本步 骤完成后,每条库序列与査询序列比对得到一个比对得分值,共获得iV'个比对得分值, 其中W'是本地数据库中序列的数目。每条库序列与査询序列之间的成对序列比对得分值 的计算过程为5.1.1确定成对序列比对过程中的参数,方法是*参与比对的两条序列中, 一条是查询序列(即步骤3中填充与重排后的查询序 列),用符号s表示,其长度记为rz;另一条是数据库序列,用符号i表示,其长度 记为爪。* S表示成对序列比对Smith-Waterman算法中的匹配打分矩阵,对于核酸序列数 据而言,默认使用"替换-置换打分矩阵",对于蛋白质序列数据而言,默认使用 Blosum 50打分矩阵,用户也可根据应用问题的需求指定包含Blosum 62及PAM 系列在内的其它打分矩阵。* .9和h表征成对序列比对过程中出现空位时的仿射罚分模型参数,即对于长度为fc 的空位区(即包含连续fc个空位的区域),其罚分值为.g十(fc-l)J,这两个参 数默认取值为.9 = 14, /i = 2,也可由用户根据应用问题的需要指定其它取值。5.1.2利用流处理器计算查询序列s与库序列纟的局部相似性得分值。计算采用 Smith-Waterman的原理,但针对流处理器须进行SIMD并行化处理,为此构造五个辅助流 向量vH[O..n _ 1], vE[O..n — 1] , vM[O..n — 1]' vF[O..p — 1]和vH'[O..p — 1]。传统的 Smith-Waterman方法实现时需要使用一个n x m阶矩阵的存储空间,本步骤中只使用 0(3n,+ 2^)的存储空间,计算过程中只保留原始矩阵中的一列数据,有效节约了存储空间。 具体计算过程如下5. 1. 2. 1 取K = 2p,所有参与计算的数据均使用UHALF类型,这种数据类型的精 度为半字长(16位无符号整数),所能表示的数值范围为0 65535。在这种情形下,尽 管计算精度较低(与^ = 的情形相比),但步骤5. 1.2.5中的流内核计算中一条指令可 同时得到2p个计算结果,具有较高的并发度和较快的计算速度。5. 1. 2. 2初始化流向量vH与vE:为流向量vH[O..n — l]和vE[O..n - l]赋以全0的初
值;流向量vF[O..p-l]的初值可任意设置,通常也置为全0。置库序列位置标志j'为0, 置局部相似性比对得分值V为0。5. 1. 2. 3计算流向量vM的值针对库序列的第j个位置,通过查询匹配打分矩阵S 设置^^/[
流向量的新值。其中,若s,:为"空字符"NUL,则取vM[7:]为0值;否则, vM卜:]取为.s与t,在打分表中对应的打分值S(s"y。这里,.s,表示査询序列的第i个字符,~ 表示库序列的第j'个字符,?: = 0,l,...,n—l。5. 1. 2. 4 设置流向量vH'的值将流向量vH的尾部p个元素复制给vH'[O..p - lj,同 时将vH'的元素依次向右移动一个位置,空出的最左端元素vH'[O]置为0值。5. 1. 2. 5 在流内核级完成相似性比对得分值的计算以vH, vE,vM,vH'四个流向量 为输入,通过多轮迭代过程计算得到最终的相似性比对得分值V。计算需要迭代的轮次 数跟査询序列的内容及库序列第j个位置的字符都有关,最坏情形下需要迭代71-p+l 轮,最好情形下只需要迭代1轮;若迭代较少的轮次即能产生最终的相似性比对得分值, 增加额外的计算轮次计算结果不变。为此,将第一轮迭代计算与后续轮次的迭代区分开 来,第一轮迭代计算称为"粗计算过程",后续轮次的计算称为"精计算过程"。这两个 过程都是采用SIMD策略由流处理器的p个硬件计算簇并行完成(p由流处理器的型号与硬 件配置决定,见步骤l)。"粗计算过程"以vH,vE,vM,vH'四个流向量为输入,利用动态 规划原理计算,输出vH, vE和vF三个流向量及当前的局部相似性得分值V的更新值;"精 计算过程"以vH, vE和vF三个流向量为输入,利用动态规划原理进行多轮迭代计算,每 轮计算都对vH, vE和vF三个流向量的取值进行更新,并根据当前计算结果设置一个"继 续迭代标志位",用以确定是否需要继续执行下一轮的迭代过程;若继续迭代标志位为1, 则重新执行新一轮的迭代计算;若继续迭代标志位为0,则表示计算过程完成,转至步骤 5.1.2.6。A粗计算过程中每个硬件计算簇执行如下步骤。 Al初始化从vH'流向量中读取一个数据/f,置F的值为O。 A2迭代步持续执行下述步骤,直到vE向量中的数据被读取完毕为止。 A2. 1读取流数据从流向量vM中读取一个数据M,从流向量vE中读取一个数据E。 A2.2更新相似性比对得分值V:若/7 + M〉V,则更新相似性比对得分值为 V —+ M。A2.3更新H值并写回流向量vH:取H —max{ff+ M,£,F,0},并用所得的/f值更 新流向量vH中最近一次读取的旧数据。
A2.4更新E值并写回流向量vE:取£ —max{E —/7,,^一.9},并用得到的E值更新 流向量vE中最近一次读取的旧数据。A2. 5更新F值取F — max{F -i/ — .9}。A2.6迭代条件判定若流向量中所有数据均被读取并写回,则结束迭代,否则,先 从流向量vH中读取一个数据//,再重新执行A2.广A2. 6的迭代过程。A3 写回流向量vF:所有p个硬件计算簇将本地计算的F值"向右传递",同时将接 收到的(来自左侧邻居的)F值写回到流向量vF中。所谓"向右传递",是指编号为z的 硬件计算簇将本地计算得到的F值传递给编号为i + 1的硬件计算簇 (7: = 0,l:2,...,p — 2),编号为p-l的硬件计算簇的F值舍弃,编号为0的硬件计算簇的 F值更新为0。数据传递是通过消息发送机制完成的。A4 汇总所有硬件计算簇上获得的最佳比对得分值每个硬件计算簇在上述迭代结 束后都获得一个本地的局部相似性比对得分值V,通过在p个硬件计算簇之间进行数据通 讯,选出P个比对得分值中的最大值,作为流内核计算中粗计算过程的执行结果。A5 设置"继续迭代标志位"若至少有一个硬件计算簇上本地计算结果满足 P > vH问—.9且P 〉 0,则设置"继续迭代标志位"为1,否则置为0。"继续迭代标志位" 也作为流内核计算中粗计算过程的执行结果返回。B精计算过程中每轮迭代计算所执行的步骤如下Bl初始化从流向量vF中读取一个数据F。B2迭代步迭代执行下述步骤,直到流向量vE中的数据被读取完毕为止。B2. 1更新流向量vH:从流向量vH中读取一个数据/f,若/f <F,则取// —F,并 将K值写回流向量vH刚才读取数据的位置;否则忽略本步骤。B2.2更新流向量vE:从流向量vE中读取一个数据丑,取丑-max(// —仏丑—W, 并将£值写回流向量vE刚才读取数据的位置。B2. 3更新P值取F — F — /i。B2.4迭代条件判定若流向量vE中所有数据均被读取并写回,则结束迭代,否则, 重新执行B2. 1 B2. 4的迭代过程。B3 写回流向量vF:所有p个硬件计算簇将本地计算的F值"向右传递",同时将接 收到的尸值写回到流向量vF中。详细过程参见步骤A3。B4 设置"继续迭代标志位"若至少有一个硬件计算簇上本地计算结果满足 F 〉- 2g且F 〉 0,则设置"继续迭代标志位"为1,否则置为0。5.1.2.6 令j'增加l,若j <m (m= W是库序歹i」做长度,见步骤5. 1. 1的说明), 则重复执行步骤5. 1.2. 3~5. 1.2.6;否则表明库序列i与査询序列.s的比对完成,其相似性 比对得分值为V,转至步骤5. 1.2.7。5. 1. 2. 7 判定是否需要提高计算精度。对K = 2p (见步骤5. 1. 2. 1中的设置)时 计算得到的相似性比对得分值进行上溢检査,若未发生上溢即V - 65536,则比对得分的 计算结果是正确的,无需修正;若发生上溢即乂 = 65536,则取^ = ^将所有数据改用 精度更高的UINT类型(32位无符号整数,所能表示的数值范围为0 4 294 967 295), 重新执行步骤5. 1. 2. 2~5. 1. 2. 7计算局部比对的相似性得分值。在K = p的情形下,尽管 提高了计算精度,但步骤5. 1. 2. 5中的流内核级计算中一条指令同时只能得到p个计算结 果,并发度较K-2p时减半,计算所需时间延长。5. 2从iV'个成对序列比对的得分值中挑出具有最高比对得分值的库序列作为当前节 点机器返回的搜索结果序列,同时返回其比对得分值。6. 主控节点机器收集各节点机器上并行搜索任务的结果并汇总输出每个节点机 器完成各自的搜索子任务后,将返回结果发送给主控节点机器,主控节点机器将返回的 这 条结果序列按其比对得分值大小排序,挑选得分值最高的那条序列作为最终搜索结 果并输出。在本发明生物序列数据库搜索的整个流程里,包含了三个层次的并行加速与优化-一是搜索任务在集群的 个节点机器之间并行执行(称为集群节点层次的加速),二是每 个节点机器将两条序列的比对计算任务分配到本地流处理器的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类型),每个硬件计算簇在一条流指令周期内只能执行 l个运算,每个流指令周期内共计只有p个运算,运行速度将减慢。 与现有技术相比,采用本发明可达到以下技术效果1. 本发明基于核级层次、流级层次以及集群节点层次这三层并行策略、在配置有流 处理器的计算机集群系统上实现了生物序列数据库搜索的加速,在生物序列数据库搜索 过程中,充分挖掘了集群节点之间、节点中流处理器的硬件计算簇之间、流内核的指令 操作数之间三个层次的并行潜力,使得搜索与计算速度得以加快。通过在单个节点机器主处理器为Intel Pentium 4 CPU 3.0GHz、协处理器(即流处理器)为主频500MHz的集 群系统上对本发明的方法进行测试,结果表明,在由8个节点组成的集群系统中,可以 达到每秒计算3.05亿个矩阵单元的速度;在由16个节点组成的集群系统中,可以达到 每秒计算5. 60亿个矩阵单元的速度,搜索速度远远超过了现有 的并行处理类搜索方 法。其中,每秒计算的矩阵单元数是国际上衡量生物序列数据库搜索速度的标准度量标 准,其计算公式为查询序列长度X数据库所有序列的总长度+搜索所用的挂钟时间。2. 本发明采用具有流处理器的计算机集群系统,流处理器作为普通计算机的协处理 器,具有成本低、计算部件密集、性价比高的优点,克服了传统专用硬件造价高、普及 率低的缺。3. 本发明通过数据分解策略、将大型生物序列数据库的搜索任务分解成多个规模较 小的搜索子任务,并分布到集群系统的各个节点机器上并发执行。 一方面增加了搜索任 务的并发度,提高了整体搜索的速度;另一方面,数据库搜索期间需要将数据库全部读 入内存进行处理,多个节点协同工作时,所能搜索的数据库容量的上限值得到提高(是 所有节点内存容量之和),从而拓宽了生物序列数据库搜索的适用范围(原本只能搜索最大规模为c的数据库,现在可以搜索最大规模为c ^p的数据库)。4. 本发明在利用流处理器计算成对序列比对的相似性比对得分值时,采取了多项加 速措施(1)对査询序列进行了填充与重排,与传统的Smith-Waterman算法实现相比, 这种数据划分与数据组织策略能够有效减少局部相似性比对得分值计算过程的数据依赖 关系,便于进行并行任务的划分,最大程度地降低并行任务执行期间的通讯开销,加快 了计算速度。(2)将计算比对得分的过程转化为对少数几个流向量数据的操作,利用流 处理器的体系结构特点,基于SIMD并行策略将计算任务分布到多个硬件计算簇上,实现 了并发执行的加速效果。(3)借鉴Green(1993)对Smith-Waterman算法的优化方案,对 计算比对得分值的流处理过程分解成"粗计算"和"精计算"两个流内核计算过程,当
粗计算过程能返回正确的比对得分值时,就可以省去精计算过程的计算过程,这样可以 节约计算时间。Green的统计数据表明,在通常的蛋白质序列搜索中,约有73%的成对序 列比对任务在计算比对得分值时只需一轮迭代(即相当于本发明中只执行一次"粗计算" 过程)。5.本发明在流处理器上实现"粗计算"与"精计算"时,采用了自适应动态调整数 据精度的方案,先用"低精度、高并行度"模式进行计算,仅当低精度下的计算结果发 生上溢时,才进一步切换至"高精度、低并行度"模式下重新计算。实际上,只要两条 序列的比对得分值小于65535,低精度模式就不产生上溢,从而无需高精度模式的执行。 在实践应用中,用户提交的査询序列多是短序列(如长度不超过1000),其数据库搜索与 比对的最高比对得分值都不会超出这一上限。这种独特的处理方式充分开发了流内核层 次中的并行潜力,为搜索过程的加速提供了贡献。综上所述,本发明依照"成本性能兼顾、软件硬件结合"的原则,借助于带有流处 理器的计算机集群系统,采用"分解搜库任务"与"成对序列比对"两个环节综合加速 的策略,在流处理器实现了 "成对序列的比对"方法;对生物序列数据库"分解搜库任 务"进行了并行处理;在流处理器的核级层次、流级层次以及集群处理器层次进行了三 层加速优化,以较小的成本实现了生物序列数据库搜索的明显加速。


图l是本发明的总流程图。图2是本发明中数据库序列的分布存储流程示意图。图3是本发明中査询序列的填充对齐与重排流程示意图。图4是本发明中每个集群节点机器计算两条序列的比对得分值流程图。图5是本发明中流内核计算的"粗计算过程"流程图。图6是本发明中流内核计算的"精计算过程"流程图。具体实施方案图l是本发明的总流程图,主要包括以下六个步骤,其中第1 2步是集群系统的建 立和数据库序列的预处理,只需在系统建立之初及数据库有更新时执行一次,在以后每 一次具体的搜索数据库任务中,仅需执行第3 6步即可。1.构建带流处理器的集群系统。该集群系统由多台个人计算机组成,每台计算机都 是集群系统的节点,各节点有着各自独立的存储系统,节点之间的通信采用消息传递的
方式。节点依次编号为0,1,2,..., -1。这里 为集群系统中节点的总数目(实际系统 中, 的取值为2的整数次幂等)。为了便于后续处理,指定编号为O的那个节点机器为 主控节点机器,它主要负责与用户交互,完成输入输出及对搜索结果的中间处理。每个 节点除了自身的主处理器外,还配置一个流处理器为该节点的协处理器;流处理器主要 由存储部件、计算部件和控制部件组成,其中计算部件是流处理器的主体,它包含有p个 硬件计算簇单元,在实施计算时,P个硬件计算簇可利用SIMD方式同时处理流向量中的p 个数据,达到并行处理的加速效果。实际系统中p是流处理器中硬件计算簇单元的数目, 它是由具体的流处理器型号所决定的。2主控节点机器将数据库序列分布存储到各个节点机器。将待搜索的生物序列数据 库分解成容量几乎相等的 份,并分布存储到集群系统中的 个节点机器中去,具体分 解的方法见图2的说明。本步骤需要在进行搜索之前完成,而且每当数据库的序列有变 更(如增加、删除、修改)时就执行一次本步骤。3主控节点机器对查询序列进行填充与重排。首先对查询序列进行尾部填充空元素 的操作,使填充后的查询序列长度是2p的整倍数(? = 8是集群系统中每个节点机器中流 处理器上的硬件计算簇的数目),然后再对该序列进行元素的重排。查询序列的填充与重 排过程详见图3的说明。本步骤的任务只在集群系统中的总控节点(编号为0的节点) 机器上执行。4主控节点机器将查询序列分布存储到各个节点机器。由总控节点机器负责将上述 填充与重排后的查询序列分发给集群系统中的每个节点机器。5并行执行数据库搜索任务。通过上述对数据库序列和查询序列的分布存储,集群 系统中的每个节点机器本地存放着一个生物序列数据的子集(子数据库)和一条查询序 列,各节点各自独立、并行地执行查询序列对本地子数据库的搜索任务,搜索完成后, 每个节点机器返回当前节点本地子数据库中比对得分值最高的一条序列(连同比对得分 值本身)。搜索的详细过程见图4的说明。6主控节点机器收集并汇总数据库搜索的结果。由主控节点负责收集所有节点机器 的搜索结果,共得到 条子搜索结果序列,选出其中比对得分值最高的那一条序列(连 同比对得分值),作为整个数据库搜索任务的最终输出结果。图2是本发明第二步中对生物序列数据库的数据分解与分布存储流程示意图,主要 过程为1对原始的生物序列数据库中的所有序列依长度从大到小到排列,并依次编号为
0,l,2,...,iV —1,其中7V是数据库中序列的总数目(图2中/V-19)。2将每条序列的编号按图中的箭头方向顺次排列成阵列,每行rip个编号(np是集群 系统中节点机器的数目,图2中 =4),第l行从左向右排列编号,第2行从右向左排 列编号,其余行依次类推(即奇数行从左向右排列编号,偶数行从右向左排列编号,最 后一行可能出现排不满的情况);排列完成后,将第l列中的编号所对应的库序列分配给 0号节点,将第2列中编号所对应的库序列分配给1号节点,依此类推,将最右边一列中 编号所对应的库序列分配给 - l号节点。如果用i'表示编号为i的序列所分配的节点编号 (i = 0,l:...,iV —1),则上述过程可以用数学公式简洁表示为'若io < ,则取7:' = 7:0; 否贝U (即'i'o上np),取i'= 2np — 1 — i0。式中,i0 = "uod (2 )。图3是本发明第三步中査询序列的填充对齐与重排流程示意图,具体过程为 1原始査询序列的数据填充与补齐。在查询序列的尾部填充空元素NUL,使填充后的 查询序列长度是2p的整倍数(p = 8是集群系统中每个节点机器中流处理器上的硬件计算 簇的数目)。在此过程中,要遵循"填充空元素的个数要尽可能少"的原则,即如果查 询序列的长度W是2p的整倍数,则不填充;否则在查询序列的尾部追加2p - rx' mod (2p)个 空元素。在示意图3中,原始序列长度rV二69, 2p=16,在末尾填充11个空元素,从 而使填充后的序列长度为n = 80。2查询序列的重排。为了适应于流内核计算的需求,需要将填充后的查询序列重新 组织,这个过程包括两步首先将长度为n的查询序列顺次划分成K个相同大小的数据块, 每个块大小为n/K,如图3所示,将这些数据块从上到下排列成一个阵列,每个数据块 占一行;其次,将形成的阵列进行转置,然后顺次从上到下逐行(每行中的数据从左向右依次)读出,形成重排后的查询序列。若,=.^,.5'1',...,《—i表示填充补齐后的查询序 列,S^SQ,&,..., —i表示重排后的序列,则上述重排过程可用数学公式表示为 & =《m。dK)K+Ll/AT其中 : = 0, 1, 2,... ,rz — 1。上述重排过程中用到的参数K = p或2p, 其中p为每个流处理器上硬件计算簇的数目,/(的两种取值分别代表了不同的数值精度和 并行粒度当K-2p时,采用较低精度的UHALF类型数据进行计算,硬件计算簇中的每 条指令可同时计算两个结果,并行度较大;反之当K-P时,采用较高精度的UINT类型 数据进行计算,硬件计算簇中的每条指令只能计算一个结果,并行度较小。图4是本发明第五步中每个集群节点机器执行序列比对任务的流程图,主要过程为: 1输入查询序列s,这里的查询序列是经过填充对齐与重排后的序列(如图3),用 = H表示查询s的长度。 2每个节点机器从本地数据库中取一条未参与过比对的序列"记其长度为爪=|,|。3首先取K-2p,所有参与计算的数据取为16位的UHALF类型。4初始化置局部相似性比对得分值卩=0,置流向量vH
和vE[O..r ,-lj为全0值。置库序列纟的当前列标志j-O。5设置流向量vM的值针对库序列的第j个位置,通过查询匹配打分矩阵设置vM[O..rx-l]流向量的新值。其中,若.s,:为"空字符"NUL,则取vM[7;]-0;否则,取vMW-S(s,:,i,),即.、与~在打分表中对应的打分值。这里,A表示查询序列的第i个字符,^表示库序列的第j个字符,i = 0,1,... ,rx - 1。6设置流向量vH'的值将流向量vH的尾部p个元素复制给vH'[a.p —l],同时将vH'的元素依次向右移动一个位置,空出的最左端元素vH'问置为0值。7 "粗计算"以vH,vE,vM,vH'四个流向量为输入,利用动态规划原理对vH, vE和vF三个流向量及当前的局部相似性比对得分值V进行更新,并返回"继续迭代标志位,,loop—more。8根据"继续迭代标志位"loopjnore的取值进行流程分支执行若loop_more = 1, 则转第9步;否则转至第10步。9 "精计算"以vH, vE和vF三个流向量为输入,是利用动态规划原理对vH, vE和 vF三个流向量进行修改与更新,并返回"继续迭代标志位"loop—more。执行完毕后转第 8步根据loopjnore的取值进行流程分支。10更新库序列的当前列标志位j — j' + 1,若j < m = |t|,则转第5步继续处理库序 列的下一列;否则转第ll步。11判定精度是否满足要求若K-2p且比对得分值l/发生上溢,则转第12步重新 使用更高的精度进行计算;否则已经完成当前s和^的比对得分值计算,转第13步。12重新取^=仏所有参与计算的数据取为32位的UINT类型。然后转第4步完成 更高精度的计算过程。13保存参与本次比对的库序列f及其比对得分值V。14若所有库序列均已参与过序列比对,则当前节点对所有的库序列按照比对得分值 的大小排序,输出比对得分最高的那条库序列连同其得分值;否则转第2步对剩余的库 序列进行比对计算。图5和图6分别是本发明中"粗计算"与"精计算"两个流内核计算过程的流程图, 其中,符号》表示数据从流向量中"流出"(即读取)到普通变量中去,符号《表示将普 通变量中的数据"流入"(即回写)到流向量中去。在粗计算过程中,输入vH,vE,vM,vH'四个流向量,借助if,E,F等普通变量完成对 vH, vE和vF三个流向量的计算与更新,并输出局部比对得分值V和继续迭代标志位 lo叩jnore。具体实现过程如下,其中第1 8步是在多个硬件计算簇上独立、并发执行 的1初始化vH'》//,置F-0。2读取流数据vM》M, vE》E。3更新比对得分值V:置V —maX{K,// + Af},其中max表示取最大值运算。 4更新孖值并回写取// —max{// + M,£;,F;0},并回写vH《//。 5更新E值并回写取五—max(E-/i,if— .9},并回写vE《丑。 6更新P值取F — max(F — / ,,// — .9}。7迭代条件判定若流向量vE中所有数据均被读取并写回,则结束迭代并转第8步;否则,先从流向量vH中读取一个数据// (vH》/Z),转第2步重新迭代。8写回流向量vF:所有p个硬件计算簇通过消息发送机制将本地计算的F值"向右传 递",同时将接收到的(来自左侧邻居的)P值写回到流向量vF中。所谓"向右传递", 是指编号为i的硬件计算簇将本地计算得到的^值传递给编号为z + l的硬件计算簇 (7: = 0,1:2,...,P —2),编号为p —l的硬件计算簇的尸值舍弃,编号为0的硬件计算簇的 F值更新为0。9汇总所有硬件计算簇上获得的最佳比对得分值每个硬件计算簇在上述迭代结束 后都获得一个本地的局部比对得分值V,通过在p个硬件计算簇之间进行数据通讯,选出 p个比对得分中的最大值,作为输出结果。10设置"继续迭代标志位"loop—more:若至少有一个硬件计算簇上本地计算结果 满足F 〉 vH问—/7且F 〉 0,则设置loop—more为1,否则置为0。在精计算过程中,输入vH,vE,vF三个流向量,借助仏丑,F等普通变量完成对vH,vE 和vF三个流向量的计算与更新,并输出继续迭代标志位loop—more。具体实现过程如下, 其中第i 8步是在p个硬件计算簇上独立、并发执行的-1初始化vF》F。2更新H值并回写vH》//,取// —max(7/,i^,并回写vH《//。3更新丑值并回写vE》丑,取E — max(丑—.9},并回写vE《£。4更新F值取F — F-Zi。
5迭代条件判定若流向量vE中所有数据均被读取并写回,则转第6步结束迭代; 否则,转第2步重新迭代。6写回流向量VF:所有p个硬件计算簇通过消息发送机制将本地计算的F值"向右传递",同时将接收到的(来自左侧邻居的)F值写回到流向量vF中。所谓"向右传递", 是指编号为i的硬件计算簇将本地计算得到的F值传递给编号为i + l的硬件计算簇 G: = 0,l,2,...,p — 2),编号为p-l的硬件计算簇的F值舍弃,编号为0的硬件计算簇的 P值更新为0。7设置"继续迭代标志位"lcx)p_m0re:若至少有一个硬件计算簇上本地计算结果满 足F 〉 i — 2.9且P > 0,则设置loop—more为1,否则置为0。
权利要求
1.一种基于流处理的生物序列数据库搜索多层次加速方法,其特征在于使用配置有流处理器的计算机集群系统,对生物序列数据库搜索过程中的“分解搜库任务”与“成对序列比对”这两个核心环节进行资源分配与任务划分,实现集群节点层、流级计算层、流内核指令层三个层次的多级并行提速,具体方法是第一步,构建由多台个人计算机组成的集群系统,每台计算机都是集群系统的节点,各节点有着各自独立的存储系统,节点之间的通信采用消息传递的方式;节点依次编号为0,1,2,…,np-1,np为集群系统中节点的总数目,指定编号为0的那个节点机器为主控节点机器,它负责与用户交互,完成输入输出及对搜索结果的中间处理;每个节点除了自身的主处理器外,还配置一个流处理器为该节点的协处理器;流处理器中的计算部件包含有p个硬件计算簇单元,p个硬件计算簇利用SIMD方式同时处理流向量中的p个数据;p是流处理器中硬件计算簇单元的数目,它由具体的流处理器型号与配置所决定;第二步,主控节点机器将数据库序列分布存储到集群系统中各个节点机器,即在创建数据库和增量更新数据时,将生物序列数据库中的序列数据平均分布到集群系统中不同节点的存储器中;第三步,主控节点机器对查询序列进行填充及重排;第四步,主控节点机器将查询序列分发到集群系统中的各个节点机器,即主控节点机器将填充与重排后的查询序列分发给计算机集群系统中的所有节点,每个节点机器将该查询序列及存放于本地存储器中的数据库序列一并读入本地内存;第五步,各个节点机器并行执行搜索任务,每个节点机器负责完成查询序列在本地数据库序列中的搜索任务,搜索的结果是一条比对得分值最高的结果序列及其比对得分值;第六步,主控节点机器收集各节点机器上并行搜索任务的结果并汇总输出每个节点机器完成各自的搜索子任务后,将返回结果发送给主控节点机器,主控节点机器将返回的这np条结果序列按其比对得分值大小排序,挑选得分值最高的那条序列作为最终搜索结果并输出。
2. 如权利要求1所述的基于流处理的生物序列数据库搜索多层次加速方法,其特征 在于主控节点机器对数据库序列进行分布存储的方法是2.1主控节点机器对数据库序列按照序列长度进行降序排列,形成一个序列列表 seq[O], seq[l], ..., seq[iV-l],其中iV是生物序列数据库中序列的总数目;2.2主控节点机器将序列列表中的每条序列分发到集群系统中的各个节点中去,分 发规则是将seq[z]这条序列分发到编号为i'的节点的局部存储器中,i'的计算方法是 若io〈'"p,则取7:'-io;若^兰 ,则取i'= 2n,, — 1 - i0,式中,i0 = i mod (2np), : = 0,l,...,iV — 1。
3.如权利要求1所述的基于流处理的生物序列数据库搜索多层次加速方法,其特征 在于主控节点机器对查询序列进行填充及重排的方法是3. 1主控节点机器对査询序列进行数据填充与补齐如果查询序列s'的长度M'是2p的 整倍数,则跳至步骤3. 2,否则在查询序列的尾部追加2p - n' mod (2p)个"空元素"NUL, 填充补齐后的查询序列记作s〃,其长度用n表示;3.2主控节点机器对査询序列进行重排将填充补齐后的查询序列 ,=,《…,重新组合为s = s。:... , n '其中s!=《m。d w.k+wj ,i = 0,1,...,", 一 1, Ki或2p。
4. 如权利要求l所述的基于流处理的生物序列数据库搜索多层次加速方法,其特征在于各节点机器执行搜索任务的过程是4.1使用流处理器、结合流处理器体系结构及Smith-Waterman比对算法的特点,基 于SIMD并行策略计算出査询序列与节点本地数据库中每条序列的比对得分值,获得iV'个 比对得分值,其中iV'是本地数据库中序列的数目;每条库序列与査询序列之间的成对序 列比对得分值的计算过程为-4.1.1确定成对序列比对过程中的参数,方法是*参与比对的两条序列中, 一条是査询序列,用符号s表示,其长度记为n;另一条是数据库序列,用符号纟表示,其长度记为m; * S表示成对序列比对Smith-Waterman算法中的匹配打分矩阵,对于核酸序列数据而言,默认使用"替换-置换打分矩阵",对于蛋白质序列数据而言,默认使用Blosum 50打分矩阵,根据应用问题的需求还可指定包含Blosum 62及P細系列在内的其它打分矩阵; .9和/i表征成对序列比对过程中出现空位时的仿射罚分模型参数,即对于长度为A;的空位区,其罚分值为g + (A: —1)^,这两个参数默认取值为9 = 14,/1 = 2; 4. 1. 2构造五个辅助流向量vH[O..n — l], vE[O..n - 1], vM[O..", 一 1], vF[O..p — l]和 vH'[O..p-l],利用流处理器计算查询序列s与库序列纟的局部相似性得分,计算过程如下: 4.1.2.1取K二2p,所有参与计算的数据均使用UHALF类型,这种数据类型的精 度为半字长即16位无符号整数,所能表示的数值范围为0 65535; 4. 1. 2. 2 初始化流向量vH与vE:为流向量vH[O..n — lj和vE[O..n — l]赋以全0的初 值;置流向量vF[O..p-l]的初值为全0;置库序列位置标志j为0,置局部相似性比对得分值V为0;4.1. 2. 3计算流向量vM的值针对库序列的第j'个位置,通过查询匹配打分矩阵S , 设置vM[O..n —l]流向量的新值,其中,若.s,为"空字符"NUL,则取vM[i]为0值;否则, vM[i]取为^与^在打分表中对应的打分值S(s,,G), .s,表示查询序列的第z个字符,^表示库序列的第j个字符,7: = 0,1:...:77,— 1;4. 1. 2. 4设置流向量vH'的值将流向量vH的尾部p个元素复制给vH'[O..p - l],同 时将vH'的元素依次向右移动一个位置,空出的最左端元素vH'[O]置为0值;4.1.2.5 在流内核级完成相似性比对得分值的计算以vH,vE,vM,vH'四个流向量 为输入,通过多轮迭代过程计算得到最终的相似性比对得分值V,第一轮迭代计算称为"粗计算过程",后续轮次的计算称为"精计算过程",这两个过程都是采用SIMD策略由 流处理器的P个硬件计算簇并行完成;"粗计算过程"以vH,vE,vM,vH'四个流向量为输 入,利用动态规划原理计算,输出vH, vE和vF三个流向量及当前的局部相似性得分值V 的更新值;"精计算过程"以vH, vE和vF三个流向量为输入,利用动态规划原理进行多 轮迭代计算,每轮计算都对vH, vE和vF三个流向量的取值进行更新,并根据当前计算结 果设置一个"继续迭代标志位",若继续迭代标志位为l,则重新执行新一轮的迭代计算; 若继续迭代标志位为0,则表示计算过程完成,转至步骤4.1.2.6;4.1.2.6 令j增加1,若j'〈'm, m = W是库序列f,的长度,则重复执行步骤 4. 1. 2. 3~4. 1. 2. 6;否则表明库序列t与查询序列s的比对完成,其相似性比对得分值为V, 转至步骤4.1. 2. 7;4. 1. 2. 7 判定是否需要提高计算精度,对K = 2p时计算得到的相似性比对得分值 进行上溢检査,若未发生上溢即V ^ 65536,则比对得分的计算结果是正确的,无需修正; 若发生上溢即乂 = 65536,则取K^p,将所有数据改用精度更高的UINT类型,重新执行 步骤4. 1. 2. 2 4. 1. 2. 7计算局部比对的相似性得分值;4. 2从iV'个成对序列比对的得分值中挑出具有最高比对得分值的库序列作为当前节 点机器返回的搜索结果序列,同时返回其比对得分值。
5. 如权利要求4所述的基于流处理的生物序列数据库搜索多层次加速方法,其特征在于所述粗计算过程中每个硬件计算簇执行如下步骤Al初始化从vH'流向量中读取一个数据i/,置F的值为0; A2 迭代步持续执行下述步骤,直到vE向量中的数据被读取完毕为止;A2.1读取流数据从流向量vM中读取一个数据M,从流向量vE中读取一个数据E;A2. 2更新比对得分值V:若H + M > V,则更新比对得分为V — /f + M;A2.3更新/f值并写回流向量vH:取// —max(/Z + M,JE;,F,0L并用所得的/f值更 新流向量vH中最近一次读取的旧数据;A2.4更新E值并写回流向量vE:取£ —111肌{五一、7/-.9},并用得到的E值更新 流向量vE中最近一次读取的旧数据;A2. 5更新F值取F — max(F - 、 —A2.6迭代条件判定若流向量中所有数据均被读取并写回,则结束迭代,否则,先 从流向量vH中读取一个数据if ,再重新执行A2.广A2. 6的迭代过程;A3 写回流向量vF:所有p个硬件计算簇将本地计算的P值"向右传递",同时将 接收到的来自左侧邻居的F值写回到流向量vF中,"向右传递"是指编号为i的硬件计算 簇将本地计算得到的F值传递给编号为i + l的硬件计算簇( : = 0,1: 2,... ,;> - 2),编号为 P - 1的硬件计算簇的F值舍弃,编号为0的硬件计算簇的F值更新为0,数据传递通过消 息发送机制完成;A4 汇总所有硬件计算簇上获得的最佳比对得分值每个硬件计算簇在上述迭代结 束后都获得一个本地的局部相似性比对得分值V,通过在p个硬件计算簇之间进行数据通 讯,选出p个比对得分值中的最大值,作为流内核计算中粗计算过程的执行结果;A5 设置"继续迭代标志位"若至少有一个硬件计算簇上本地计算结果满足 F 〉 vH问一 .g且F 〉 0,则设置"继续迭代标志位"为1,否则置为0,"继续迭代标志 位"也作为流内核计算中粗计算过程的执行结果返回。
6.如权利要求4所述的基于流处理的生物序列数据库搜索多层次加速方法,其特征 在于所述精计算过程中每轮迭代计算所执行的步骤如下Bl 初始化从流向量VF中读取一个数据P;B2 迭代步迭代执行下述步骤,直到流向量VE中的数据被读取完毕为止;B2.1更新流向量vH:从流向量vH中读取一个数据//,若H〈F,则取// —F,并将i/值写回流向量vH刚才读取数据的位置;否则忽略本步骤;B2.2更新流向量vE:从流向量vE中读取一个数据j5,取E二max(^ —仏E-W,并将E值写回流向量VE刚才读取数据的位置; B2. 3更新F值取F — F — /1; B2.4迭代条件判定若流向量vE中所有数据均被读取并写回,则结束迭代,否则, 重新执行B2.广B2. 4的迭代过程;B3 写回流向量vF:所有p个硬件计算簇将本地计算的F值"向右传递",同时将接 收到的F值写回到流向量vF中;B4 设置"继续迭代标志位"若至少有一个硬件计算簇上本地计算结果满足 P 〉 // _ 2.9且尸〉0,则设置"继续迭代标志位"为1,否则置为0。
全文摘要
本发明公开了一种基于流处理的生物序列数据库搜索多层次加速方法,目的是在保证搜索准确性、较低成本的前提下,加快生物序列数据库搜索速度。技术方案是先构建由多台个人计算机组成的集群系统,指定一个主控节点机器;主控节点机器将数据库序列分布存储到集群系统中各个节点机器,对查询序列进行填充及重排,且将查询序列分发到集群系统中的各个节点机器;各节点机器并行执行搜索任务,负责完成查询序列在本地数据库序列中的搜索任务;主控节点机器收集各节点机器上并行搜索任务的结果并汇总输出。采用本发明使得搜索任务在集群的n<sub>p</sub>个节点机器之间并行执行,每个节点机器将两条序列的比对计算任务分配到p个硬件计算簇中并行进行,实现了集群节点层、流级计算层、流内核指令层三个层次的多级并行提速的目标。
文档编号G06F17/30GK101158952SQ20071003619
公开日2008年4月9日 申请日期2007年11月22日 优先权日2007年11月22日
发明者彭宇行, 徐传福, 王勇献, 王意洁, 王正华, 董蕴源, 车永刚, 邢座程 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1