论文部分内容阅读
近年来,随着生命科学技术不断发展,特别是在高通量测序技术(通常称为下一代测序,Next Generation Sequencing,NGS)的飞速发展推动下,生命科学中生成的数据量大大增加,基因组测序项目的数量和测序数据的数量急剧增加。高通量测序数据在飞速增加,但处理器的性能提升速度却逐年放缓,甚至接近停滞,单个处理器的性能已经难以进一步扩展。在2015年,由于提升芯片频率等方法会进一步加大芯片的散热问题,同时,指令级的流水和并行也出现了巨大的局限性和低效性,各种微体系结构的改进已经达到瓶颈,处理器性能的提升现在每年只有3.5%,平均20年提升一倍,摩尔定律在芯片领域几乎已经失效。因此学者们开启了多核和异构体系结构的研究,不需要改变程序的算法和实现仅仅依靠芯片性能提升从而使程序性能获得大幅度改善已经变得越来越困难,“免费午餐”的时代已经过去。因此,一方面生命科学高通量测序数据一直在急剧增加,另一方面近年来计算性能的提升主要集中在新兴体系结构的发展,因此在新的体系结构上如何处理高通量测序数据是急切需要解决的问题。基因纠错和基因比对是高通量测序数据处理中前期的两个步骤,纠错和比对在同构CPU上的研究已经有很多,但是针对异构架构处理器的研究和针对大规模数据集的处理研究相对较少。如何在基础的算法上进行改进使得计算量减少,如何针对新兴的异构体系架构进行针对性的设计以适应不同架构处理器的特点,如何进行分布式的实现以针对大规模的数据集,都是需要解决的问题。本文的工作主要针对以上问题,围绕DNA测序数据处理过程中的基因纠错和序列比对在Intel多核和众核架构以及国产自主设计的处理器SW26010等体系结构上的算法设计和针对性实现进行研究。本文的主要研究成果如下所述:1)本文提出了一种可扩展的并行纠错算法SPECTR,旨在提高各种Intel并行平台上Illumina DNA短序列进行纠错时的吞吐量。SPECTR的实现基于k-谱方法,针对Intel多核和众核架构以及异构计算集群采用了许多针对性的优化。本文针对SPECTR中的一个关键操作Bloom过滤器的查询进行了优化,对数据重新布局,加快了查询速度,对查询工作中的共同操作,抽象出查询中向量化需要的一般操作,实现了 Bloom过滤器查询操作的异构计算框架。在纠错过程中,本文设计了一个基于堆栈迭代的方法来取代在异构架构上性能较低的递归操作。在单个设备内,本文使用OpenMP的动态任务划分实现了负载均衡。针对单个节点的多个设备,本文设计了数据的分发框架,实现了不同设备间的负载均衡。针对多个节点,本文设计了分布式实现。实验表明,与在CPU上的多线程原始实现相比,优化后的实现在不同设备中加速了 2.8到9.3倍。与其他基因纠错工具相比,在相同的硬件上执行时,SPECTR的速度可提高1.7到6.4倍。在天河二号超级计算机的32个节点上执行时,实现了约86%的并行效率。2)针对基因比对,本文在神威·太湖之光及其申威体系架构SW26010上设计实现了一种高度可扩展的序列比对算法S-Aligner。为解决序列比对算法中的内存瓶颈和计算瓶颈,S-Aligner设计采用了三层并行级别:(1)使用MPI基于任务网格模式进行节点间并行计算;(2)使用多线程和异步数据传输来实现节点内并行处理,将需要计算的数据进行分块实现了不同计算核心之间的负载均衡,充分利用了 SW26010多核处理器的所有260核,以及(3)向量化了基因比对中计算编辑距离的Myers算法,充分利用了可用的256位SIMD向量寄存器。在文件I/O期间,本文采用异步访问模式和数据共享策略以克服网络文件系统的带宽限制。性能评估表明,S-Aligner几乎可以线性扩展,在太湖之光上的13,312个节点上实现了 95%的并行效率。S-Aligner在具有很高准确度的同时,在单个节点上的性能优于在Intel CPU平台上运行的序列比对工具RazerS3。3)在对S-Aligner进行分析之后,本文设计了一个新的可扩展且高效的基因比对算法SWMapper。为了减少内存的使用和加速索引的构建,SWMap-per使用了一个精简哈希索引,设计并实现了一个分布式索引构建方法。在进行比对时,提出了一种新的过滤算法,将基因序列分解为长种子和短种子,使用短种子查找到候选匹配位置后,利用长种子进行过滤减少需要计算的候选位置数。为了去除候选匹配位置中的重复,设计使用了一个最小堆数据结构进行排序删除重复位置。在对基因序列和参考基因子序列进行编辑距离的计算时,设计实现了带状Myers(Baned Myers)算法的向量化,使用SW26010的一条三元逻辑指令替换多条逻辑指令,减少了计算指令数。本文针对多个计算核心设计了动态调度策略来实现负载均衡,针对多个节点,本文设计了分布式实现。性能评估表明,在单个SW26010上,SWMapper的性能优于在相同硬件上的S-Aligner 6.2倍。与运行在Intel CPU上的其他比对算法相比,SWMapper实现了 2.6到26.5倍的加速。在128个计算核组上运行时,SWMappcr实现了 74%的强扩展效率。