基于cpu+gpu异构系统的序列比对方法

文档序号:6629316阅读:469来源:国知局
基于cpu+gpu异构系统的序列比对方法
【专利摘要】公开了一种大规模生物序列比对及其基于异构系统的并行处理方法。首先,对序列优化存储,设计异构系统负载平衡方法;然后,设计异构系统内存优化方法,包括满足合并访问条件的序列存储方法、相似矩阵存储和访问方式、得分矩阵压缩存储,解决由于异构系统存储空间的匮乏而导致的实际计算性能低下;最后,基于内存预分配和复用策略,提出粗粒度序列比对并行方法。本发明基于CPU+GPU异构计算平台,充分利用了负载平衡和内存优化技术,从而显著提高大规模生物序列比对的处理效率。
【专利说明】基于CPU+GPU异构系统的序列比对方法

【技术领域】
[0001] 本发明属于计算机技术与生物基因技术相关联的交叉学科领域,设及一种运行于 CPU+GPU异构系统的序列比对方法,尤其是大规模序列比对方法。

【背景技术】
[0002] 序列是生物信息的载体,包括DNA(脱氧核糖核酸)、RNA(核糖核酸)和蛋白质等。 生物序列比对(sequence alignment)是W序列为研究对象,通过比较序列中各字符间的 对应关系或字符的对比排列,发现序列之间的相似性,辨别序列之间的差异,从而推测其结 构、功能W及进化上的联系。序列比对是生物序列分析领域最重要的研究方向之一,已被广 泛应用于进化分析、功能预测、相似性捜索、生物制药、疾病诊断与治疗等方面。
[0003] 随着GPU并行处理能力的不断提升,GPU已被广泛应用于生物信息学中的数据处 理。当前基于CPU+GPU异构系统的序列比对方法包括MUMmerGPU、S-W、CUDA-BLAST、进化树 的构建等。对该些方法进行分析,发现现有方法主要存在W下几个问题:
[0004] (1)缺乏异构计算系统负载平衡有效方法
[000引序列比对时间与序列长度、序列之间的距离、W及序列数目相关。现有方法没有考 虑该些参数对比对时间的影响,不能较好地指导负载平衡方法的设计。
[0006] (2)缺乏访存控制有效机制
[0007] GPU采用分级存储器模型,包括片上和片外存储器,其中片上存储器包括共享存储 器、寄存器和各级cache,片外存储器包括全局、常数、纹理和局部存储器。片上存储器拥有 较高的访问速率,而访问片外存储器需要很长的时间延迟。现有的方法中一般仅考虑各类 存储器的特性选择合适的访问和存储方式,而没有考虑序列比对的应用特点,详细分析序 列比对方法的计算过程,找出访问最多、最消耗GPU内存的关键点,对它们进行访存优化。 [000引 (3)可扩展能力不足
[0009] 现有的方法通常应用CPU+GPU异构系统加速已有的序列比对方法,由于原有方法 的可扩展性不强,从而导致现有的方法可扩展能力不足。随着生物数据的急剧增加,可扩展 性已成为衡量序列比对方法好坏的重要标准之一。


【发明内容】

[0010] 本发明的所要解决的技术问题是提供一种运行于CPU+GPU异构系统的大规模序 列比对方法,W克服现有技术中大规模序列比对执行效率不高的问题。
[0011] 根据本发明的第一个实施方案,提供运行于CPU+GPU异构系统的序列比对方法或 大规模序列比对方法,该方法包括W下过程:
[0012] 1)对序列进行优化存储,和实施异构系统负载平衡,其中在序列从CPU传输到GPU 之前,先对序列进行序列优化存储;
[0013] 2)设计内存优化方式,该优化方式包括;满足合并访问条件的序列存储方式、相 似矩阵存储和访问方式和得分矩阵压缩存储方式;和
[0014] 扣基于内存预分配和复用策略,采用粗粒度并行方式进行比对(或并行比对)。
[0015] -般来说,W上所述的序列优化存储包括W下二个子步骤:
[0016] 排序;序列按长度进行排序来减少相邻线程处理序列的长度差异,W减少线程间 的等待时间;和
[0017] 连结;将经过排序后的16条有序序列组织成序列集(sequence set);优选的是, 将同一序列集中的序列进行连结,连结后的二条或二条W上的序列称为序列组(sequence group),一个序列集中序列组的长度大致与该序列集中最长的序列长度相等;更优选的是, 在连结的序列之间插入序列终止符,终止符是进行新一轮序列比对的标识。
[001引优选的是,内存优化方式包括(但不限于):
[0019] (1)满足合并访问的序列存储方式;当所有的序列被组织成包含16条序列组的序 列集后,序列存储成字符矩阵的形式;优选的是,该些序列集W交织的方式存储;更优选的 是,每个交织的子集由序列组中的8个字符组成,即;首先存储序列集第一个序列组的8个 字符,然后再存储该序列集第二个序列组的8个字符,由此类推;
[0020] (2)相似矩阵存储和访问方式;相似矩阵的访问是随机的,并且它的大小完全依 赖于所比对的序列;和/或
[0021] (3)得分矩阵压缩存储方式;优选的是,得分矩阵用来跟踪最优得分路径,记录比 对过程中在每条序列插入空位的起始位置W及空位的数目。
[0022] 一般,得分矩阵具有W下S个特征;(1)所有的元素初始化为零;(2)在矩阵中存 在许多连续的、且具有相同值的元素,被称之为特征值,用localstop表示,它是停止向序 列插入空位的标识;(3)存在一些元素,它们的值连续递减,用来记录插入空位的数目。
[0023] 优选的是,采用压缩方法MRLE来压缩得分矩阵,并且将原矩阵压缩成两个行向量 Av和Ar。其中Av用来存储连续相同值或连续递减值的起始元素和它的重复或递减次数, 值和次数W交织的方式存储。Ar存储原矩阵中每行第一个元素在Av中的位置。优选的是, 在压缩过程中,对于连续相同值或连续递减值,仅存储起始元素和它的重复或递减次数。
[0024] 优选的是,基于内存预分配和复用策略,采用粗粒度并行方式进行比对的过程包 括:
[0025] (1)运行一种内存预分配和复用策略,其中将一对序列集分配给一个线程进行比 对;
[0026] (2)常数时间工作任务获取过程,其中序列进行变换后,n条序列被组织成1个序 列集{0,1,…,;和
[0027] (3)粗粒度序列比对并行过程,其中一个线程处理一个序列集与另一个序列集之 间的两两比对。
[002引优选的是,在似任务获取过程中,序列集之间的两两比对 (SeqsetlID,Seqset2ID)用一个1X1的左下S角矩阵来表示。
[0029] 优选的是,上述的常数时间工作任务获取过程包括;a)首先得出序列集 Seqsetl和Seqset2在1X1左下S角矩阵中的行号RowID和列号ColID ;和b)利用 所求出的行号RowID和列号Col ID和已知的1,求出线程threadID处理的序列集对 (SeqsetllD, Seqset2ID),其中 SeqsetllD = 1-RowID,Seqset2ID = SeqsetllD+ColID。
[0030] 下面进一步详细描述本发明的实施方案。
[0031] 本申请提出一种运行于CPU+GPU异构系统的序列比对方法或大规模序列比对方 法,其特征在于,首先对序列进行优化存储,提出异构系统负载平衡方法;然后设计内存优 化方法,包括满足合并访问条件的序列存储方法、相似矩阵存储和访问方式、得分矩阵压缩 存储,解决由于异构系统存储空间匿乏而导致的实际计算性能低下;最后基于内存预分配 和复用策略,提出适合于大规模序列比对的粗粒度并行方法。
[0032] 对于提出异构系统负载平衡方案,其特征在于,序列从CPU传输到GPU之前,先进 行优化存储,W更好地适应GPU并行处理的特性。序列优化存储分成排序和连结等二个步 骤。
[0033] 步骤1.排序;序列按长度进行排序来减少相邻线程处理序列的长度差异,W减少 线程间的等待时间。
[0034] 步骤2.连结;将经过排序后的16条有序序列组织成序列集(sequence set),一个 序列集由16个线程来处理。为了解决不同的序列集之间序列的长度仍然存在差异的问题, 将同一序列集中的序列进行连结,连结后的二条或二条W上的序列称为序列组(sequence group),使得一个序列集中序列组的长度大致与该序列集中最长的序列长度相等。经过序 列的连结,能更好地平衡各线程之间的工作负载。在连结的序列之间插入序列终止符,终止 符是进行新一轮序列比对的标识。
[0035] 对于提出内存优化方案,其特征在于,
[0036] (1)满足合并访问的序列存储方法
[0037] 当所有的序列被组织成包含16条序列组的序列集后,序列存储成字符矩阵的形 式。该些序列集W交织的方式存储。每个交织的子集由序列组中的8个字符组成。首先存 储序列集第一个序列组的8个字符,然后再存储该序列集第二个序列组的8个字符,由此类 推。因为每个序列集中包含16个序列组,16个线程可从相邻的地址同时装载8个字符,该 样,能进行128字节的合并访问。
[003引 (2)相似矩阵存储和访问方法
[0039] 相似矩阵的访问是随机的,并且它的大小完全依赖于所比对的序列。对于该种频 繁访问的数据,不能存放在GPU的全局内存,因为全局内存的访问延迟很大。但是,相似矩 阵的随机特性却非常适用于纹理内存(tex化re memory)和常数内存(constant memcxry)。 纹理内存是一种只读存储器,可W通过缓存加速访问,并且不需要通过合并访问来提供好 的性能。与纹理内存一样,常数内存是另一种只读的存储器,也拥有缓存加速。常数内存能 广播1个读操作的数据到half-wa巧(即16个线程),能有效地节约15个读操作,该两种 内存都很适合于随机访问。将相似矩阵分别存放在纹理内存和常数内存,通过小规模实验, 比较两种存储器的性能,最后确定性能最好的存储器存储相似矩阵。已进行小规模实验,在 NVIDIA Telsa C2050 GPU平台(每个流处理器分别拥有8邸的常数内存和12邸的纹理内 存)比对800条平均长度为430个残基的序列,相似矩阵存储于常数内存比存储于纹理内 存性能提升3. 5%。因此,选择常数内存存储相似矩阵。
[0040] (3)得分矩阵压缩存储方法
[0041] 得分矩阵用来跟踪最优得分路径,记录比对过程中在每条序列插入空位的起始位 置W及空位的数目,该需要较高的空间复杂度。由于GPU内存容量有限,得分矩阵的存储方 法给异构系统大规模序列比对方法的实现带来极大的挑战。
[0042] 一般,得分矩阵具有W下S个特征;(1)所有的元素初始化为零;(2)在矩阵中存 在许多连续的、且具有相同值的元素,被称之为特征值,用localstop表示,它是停止向序 列插入空位的标识;(3)存在一些元素,它们的值连续递减,用来记录插入空位的数目。鉴 于得分矩阵的特征,提出一个新的压缩方法MRLE来压缩得分矩阵,减少内存消耗。
[0043] MRLE方法将原矩阵压缩成两个行向量Av和Ar。Av用来存储连续相同值或连续递 减值的起始元素和它的重复或递减次数,值和次数W交织的方式存储,Ar存储原矩阵中每 行第一个元素在Av中的位置。在压缩过程中,对于连续相同值或连续递减值,仅存储起始 元素和它的重复或递减次数。MRLE算法的目标是减少连续相同值或连续递减值的存储,首 先考虑连续相同的值(即零或特征值localstop),减少相同值的存储;然后考虑连续递减 的值(连续地递减1),进一步提高压缩效果。
[0044] 对于基于内存预分配和复用策略,提出适合于大规模序列比对的粗粒度并行方 法,其特征如下:
[0045] (1)内存预分配和复用策略
[0046] 在CUDA编程模型中使用动态内存分配将导致性能的极大下降。因此,采用将一 对序列集分配给一个线程进行比对的方法。由于序列集中可能包含连结的序列,一个线程 将执行大于16X16个序列对的比对工作。设计该种粗粒度并行方式的主要原因是希望一 个线程所执行的所有比对工作能共享同一段内存空间,所有线程执行所需要的内存空间根 据序列集对中最长的2条序列长度预先分配。由于该段内存空间是根据序列集对中最长的 2条序列的长度而分配的,该就意味着所有序列集对中其他的序列对都能共享该段内存空 间。与在运行时动态分配内存相比,使用内存的预分配不仅能节约时间,还能获得至少256 倍的内存使用率。
[0047] (2)常数时间工作任务获取方法
[0048] 序列进行变换后,n条序列被组织成1个序列集{0, 1,…,^1}。序列集之间的 两两比对(SeqsetlID,Seqset2ID)可用一个1X1的左下S角矩阵来表示。为了确保一 个线程在某一时刻仅处理一对序列集之间的比对,提出常数时间工作任务获取方法,得出 (SeqsetllD, Seqset2ID)与线程threadID之间的--对应关系。
[0049] 首先得出序列集Seqsetl和Seqset2在1X1左下S角矩阵中的行号RowID和 列号 ColID。通过分析发现,当 threadID G S = (1,3,6, 10,L,1+1(1-1)/2}时,RowID 和 ColID均等于方程n2+n = 2t虹eadID的正整数根与1的差,即/?ovr/0 = C(;//D = La'」-1,其 中Xi表示方程n 2+n = 2threadID的正实数根。当€ 5时,RowID等于方程n2+n = 2t虹eadID的正实数根的上整,ColID等于正实数根的小数部分与RowID乘积后的上整,即 化"I'/D 4义1 +1」-1,(―、""〇 = LWmod 1 )/(l/L义1 +1」)」-1。利用所求出的行号RowID和列 号ColID和已知的1,可求出线程threadID处理的序列集对(SeqsetllD, Seqset2ID),其中 SeqsetllD = ]_-RowID,Seqset2ID = SeqsetllD+ColID。由于S角矩阵的行号从 0 开始,所 W RowID 和 ColID 需减去 1。
[0050] (3)粗粒度序列比对并行方法
[0化1] 充分挖掘序列两两比对的潜在并行性,设计粗粒度并行方法。一个线程处理一个 序列集与序列集之间的两两比对,该就意味着一个线程将处理大于16X16的序列之间的 两两比对,因为序列集中可能存在连结的序列。采用粗粒度并行方式的主要原因在于可在 线程间重复使用GPU内存。
[0化2] 发明的有益效果:
[0053] 本发明的技术主要构思是充分挖掘异构计算平台的性能,提出基于CPU+GPU异构 系统的大规模序列比对并行解决方法。在此方法中,充分考虑负载平衡和内存优化对异构 计算平台性能的影响,通过对序列优化存储,设计异构系统负载平衡方法。通过设计满足合 并访问条件的序列存储方法、相似矩阵存储和访问方式和得分矩阵压缩存储,提出异构系 统内存优化方法,解决由于异构系统存储空间的匿乏而导致的实际计算性能低下。最后基 于内存预分配和复用策略,提出粗粒度序列比对并行方法,显著提高整个系统的比对处理 效率。
[0化4] 本发明不仅设计基于CPU+GPU异构系统的大规模序列比对并行处理解决方案,为 生物信息学提供实际可用的序列比对工具,还为设计其他数据密集型应用的异构系统解决 方案提供新的思路,从而为GPU在生物信息学中更广泛的应用奠定基础。同时还将丰富传 统并行处理的研究内容,推动生物信息学和高性能计算的研究与发展。
[0化5] 另外,本发明所述方法是针对当前流行的CPU+GPU异构计算平台而设计,运行于 Linux操作系统之上。用户只需要一台多核计算机和一块GPU(俗称显卡)而不需要增加任 何硬件成本即可应用此方法比对平均长度为1,000的8, 000条生物序列。应用本发明所述 方法比采用计算机集群、FPGA或Cell BE等对硬件有特殊要求的方法有无可比拟的优势。

【专利附图】

【附图说明】
[0化6] 图1为本发明所述方法示意图;
[0057] 图2为序列优化存储方法;
[0化引图3为满足合并访问的序列存储方法;
[0059] 图4为用左下S角矩阵表示的序列集两两比对示意图;
[0060] 图5为本发明所述方法CUDA-MAFFT与方法MAFFT的比对精度对比示意图。
[0061] 图6为本发明所述方法CUDA-MAFFT与方法MAFFT的加速比对比示意图。

【具体实施方式】:
[0062] W下结合附图对本发明作进一步说明。
[0063] 一种运行于CPU+GPU异构系统的大规模序列比对方法,其特征在于,首先对序列 进行优化存储,提出异构系统负载平衡方法;然后设计内存优化方法,包括满足合并访问条 件的序列存储方法、相似矩阵存储和访问方式、得分矩阵压缩存储,解决由于异构系统存储 空间匿乏而导致的实际计算性能低下;最后基于内存预分配和复用策略,提出适合于大规 模序列比对的粗粒度并行方法。
[0064] 所述异构系统负载平衡方法具体过程如下:
[0065] 步骤1.排序。序列按长度的降序进行排列。
[0066] 步骤2.连结。将经过排序后的16条有序序列组织成序列集,将同一序列集中的 序列进行连结,使得一个序列集中序列组的长度尽可能地与该序列集中最长的序列长度相 等。在连结的序列之间插入序列终止符,终止符是进行新一轮序列比对的标识。
[0067] 所述的满足合并访问条件的序列存储方法和相似矩阵存储和访问方式在发明内 容的技术方案中已经详细叙述,此处不再寶述。
[0068] 所述的得分矩阵压缩存储方法具体过程如下:
[0069] MRLE方法将原矩阵压缩成两个行向量Av和Ar。其中Av用来存储连续相同值或 连续递减值的起始元素和它的重复或递减次数,Ar存储原矩阵中每行第一个元素在Av中 的位置。
[0070] 举例说明如下:
[0071] 矩阵(1)有10行和10列,其特征元素localstop的值为21。使用MRLE方法将矩 阵(1)压缩成两个行向量Av和Ar,如矩阵似和做所示。为了说明MRLE的压缩过程,将 Av和Ar表示成矩阵的形式。矩阵(1)的第一行有10个连续相同的特征值21,因此Av[0] =21,接着,将元素21的重复次数加上21ocalstop的值52存储在Av[l]中。第一行的10 元素被压缩成2个元素分别存放在Av[0]和Av[l]中,在此省略矩阵(1)其他行的压缩过 程。Ar = [0, 2, 12, 22, 29, 37, 46, 54, 60, 68, 7引,该表示从 Av [0]到 Av [1],该 2 个元素是矩 阵(1)的第一行的所有元素经过压缩后的值。从Av[2]到Av[U]该10个元素是矩阵(1) 的第二行的所有元素经过压缩后的值,W此类推。Ar中的元素指示着矩阵(1)中每一行的 第一个元素经过压缩后存放在Av中的位置。
[0072]

【权利要求】
1. 运行于CPU+GPU异构系统的序列比对方法或大规模序列比对方法,该方法包括以下 过程: 1) 对序列进行优化存储,和实施异构系统负载平衡,其中在序列从CPU传输到GPU之 如,先对序列进彳T序列优化存储; 2) 设计内存优化方式,该优化方式包括:满足合并访问条件的序列存储方式、相似矩 阵存储和访问方式和得分矩阵压缩存储方式;和 3) 基于内存预分配和复用策略,采用粗粒度并行方式进行比对或并行比对。
2. 根据权利要求1所述的方法,其中序列优化存储包括以下二个子步骤: 排序:序列按长度进行排序来减少相邻线程处理序列的长度差异,以减少线程间的等 待时间;和 连结:将经过排序后的16条有序序列组织成序列集(sequence set);优选的是,将 同一序列集中的序列进行连结,连结后的二条或二条以上的序列称为序列组(sequence group),一个序列集中序列组的长度大致与该序列集中最长的序列长度相等;更优选的是, 在连结的序列之间插入序列终止符,终止符是进行新一轮序列比对的标识。
3. 根据权利要求1或2所述的方法,其中内存优化方式包括: (1) 满足合并访问的序列存储方式:当所有的序列被组织成包含16条序列组的序列集 后,序列存储成字符矩阵的形式;优选的是,这些序列集以交织的方式存储;更优选的是, 每个交织的子集由序列组中的8个字符组成,S卩:首先存储序列集第一个序列组的8个字 符,然后再存储该序列集第二个序列组的8个字符,由此类推; (2) 相似矩阵存储和访问方式:相似矩阵的访问是随机的,并且它的大小完全依赖于 所比对的序列;和/或 (3) 得分矩阵压缩存储方式:得分矩阵用来跟踪最优得分路径,记录比对过程中在每 条序列插入空位的起始位置以及空位的数目。
4. 根据权利要求3所述的方法,其中得分矩阵具有以下三个特征:(1)所有的元素 初始化为零;(2)在矩阵中存在许多连续的、且具有相同值的元素,被称之为特征值,用 localstop表示,它是停止向序列插入空位的标识;(3)存在一些元素,它们的值连续递减, 用来记录插入空位的数目。
5. 根据权利要求3或4所述的方法,其中采用压缩方法MRLE来压缩得分矩阵,并且将 原矩阵压缩成两个行向量Av和Ar。
6. 根据权利要求5的方法,其中Av用来存储连续相同值或连续递减值的起始元素和它 的重复或递减次数,值和次数以交织的方式存储;和/或, Ar存储原矩阵中每行第一个元素在Av中的位置; 优选的是,在压缩过程中,对于连续相同值或连续递减值,仅存储起始元素和它的重复 或递减次数。
7. 根据权利要求1-6中任何一项所述的方法,其中基于内存预分配和复用策略,采用 粗粒度并行方式进行比对的过程包括: (1) 运行一种内存预分配和复用策略,其中将一对序列集分配给一个线程进行比对; (2) 常数时间工作任务获取过程,其中序列进行变换后,n条序列被组织成1个序列集 {0, 1,…,1-1};和 (3)粗粒度序列比对并行过程,其中一个线程处理一个序列集与另一个序列集之间的 两两比对。
8. 根据权利要求7所述的方法,其中在(2)任务获取过程中,序列集之间的两两比对 (SeqsetlID,Seqset2ID)用一个1X1的左下三角矩阵来表示。
9. 根据权利要求7或8所述的方法,其中常数时间工作任务获取过程包括:a)首先得 出序列集Seqset 1和Seqset2在1 X 1左下三角矩阵中的行号RowID和列号Co 1 ID ;和b) 利用所求出的行号RowID和列号ColID和已知的1,求出线程threadID处理的序列集对 (SeqsetllD, Seqset2ID),其中 SeqsetllD = 1-RowID,Seqset2ID = SeqsetlID+ColID〇
【文档编号】G06F19/22GK104504303SQ201410522707
【公开日】2015年4月8日 申请日期:2014年9月29日 优先权日:2014年9月29日
【发明者】朱香元 申请人:肇庆学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1