发明名称 基于众核协处理器的三级流水序列比对方法
摘要 本发明公开了一种基于众核协处理器的三级流水序列比对方法,目的是提高序列比对软件的比对速度。技术方案是:采用MIC众核协处理器使用多线程并行进行序列比对,并将MIC上序列比对过程中从主存读取序列到MIC、比对序列和将比对结果写回主存这三个串行步骤采用三级流水方式,即在进行每一轮序列比对的同时,读取下一组比对所需要的序列,同时将上一组比对的结果写回主存,使得读写操作和比对操作并行进行。本发明实现了序列读取,序列比对和比对结果写回的三个主要过程的并行执行,提高了比对效率,降低了比对时间,与两路八核CPU相比,本发明可加速比对过程2.3倍以上,且避免拷贝大量内存空间,提高了程序的时空效率。
申请公布号 CN104375807A 申请公布日期 2015.02.25
申请号 CN201410745667.4 申请日期 2014.12.09
申请人 中国人民解放军国防科学技术大学 发明人 廖湘科;朱小谦;崔英博;彭绍亮;邹丹;王恒;朱敏;刘欣;王海强;高明
分类号 G06F9/38(2006.01)I 主分类号 G06F9/38(2006.01)I
代理机构 国防科技大学专利服务中心 43202 代理人 郭敏
主权项 一种基于众核协处理器的三级流水序列比对方法,其特征在于包括以下步骤:步骤1:CPU根据计算机主存可用空间大小M_CPU,以及DNA短序列所占空间大小M_DNA,将DNA短序列即read平均分为L组,L为正整数,<img file="FDA0000628161370000011.GIF" wi="532" he="70" /><img file="FDA0000628161370000012.GIF" wi="152" he="66" />表示对“x”向上取整;步骤2:在MIC即众核协处理器上声明三个指针变量:Seqs_ptr、Read_ptr和Write_ptr,并根据MIC上可用空间大小M_MIC以及参考基因组大小M_REF,在MIC上分别为三个指针分配同样大小的缓存空间,MIC上每块缓存空间大小M_SEQ=(M_MIC‑M_REF)/3,其中Seqs_ptr指向的空间存储当前一组正在比对的序列,Read_ptr指向的空间存储下一组将要比对的序列,Write_ptr指向的空间存储上一组序列比对的结果;步骤3:CPU初始化循环变量i为零;步骤4:CPU将磁盘中L组read中的第i组读入主存中;步骤5:CPU根据MIC上Seqs_ptr指向的空间的大小M_SEQ,将读入主存中的read平均分为M小组,M为正整数,<img file="FDA0000628161370000013.GIF" wi="597" he="80" />步骤6:CPU将循环变量m置为零;步骤7:CPU将主存中M个小组read中的第m组读到MIC的Seqs_ptr指向的空间内;步骤8:根据MIC上可用计算核心数Core_MIC,以及MIC上每个计算核心支持的最大硬件线程数Thread_MIC,在MIC上同时启动N+2个线程,线程编号为0到N+1,N&gt;0,为整数,N=(Core_MIC‑1)*Thread_MIC,其中MIC卡需要保留一个核心处理主存与MIC卡之间数据调度,N+2个线程并行执行以下步骤:步骤8.1:第0到第N‑1号线程并行比对Seqs_ptr对应空间中的read,并将比较结果写入Seqs_ptr对应空间中;比对方法采用李恒在论文《Fast and accurate short read alignment with Burrows‑Wheeler Transform》中公布的基于BW变换的方法,将Seqs_ptr对应空间中的所有read比对完毕后,转到步骤9;步骤8.2:第N号线程将循环变量m加1,判断m是否等于M,如果m不等于M,执行步骤8.2.1,如果m等于M,结束第N号线程,转到步骤9;步骤8.2.1:第N号线程将主存中M个小组read中的第m组读到MIC的Read_ptr对应空间内,读取完毕后,转到步骤9;步骤8.3:第N+1号线程判断Write_ptr对应空间是否为空,如果Write_ptr对应空间不为空,执行步骤8.3.1,如果Write_ptr对应空间为空,结束第N+1号线程,转到步骤9;步骤8.3.1:第N+1号线程将Write_ptr对应空间中的read比对结果写回主存,写完成后转到步骤9;步骤9:同步第0到第N+1号线程,同步完成后,在MIC上的多线程部分执行完毕,以下步骤为单线程执行;步骤10:MIC进行指针交换,在MIC上声明临时指针tmp_ptr,将Seqs_ptr值赋给tmp_ptr,将Read_ptr值赋给Seqs_ptr,将Write_ptr值赋给Read_ptr,将tmp_ptr值赋给Write_ptr,将tmp_ptr值置为空。步骤11:MIC判断Seqs_ptr对应空间是否为空,如果不为空,转步骤8,如果为空,执行步骤12;步骤12:MIC将Write_ptr对应空间中的read比对结果写回主存;步骤13:CPU将内存中第i大组read比对的结果写回磁盘,并清空相应内存空间;步骤14:CPU将循环变量i加1;步骤15:CPU判断i是否等于L,如果i不等于L,转步骤4,如果i等于L,执行步骤16;步骤16:MIC释放Seqs_ptr、Read_ptr、Write_ptr指向的空间;步骤17:结束比对。
地址 410073 湖南省长沙市开福区德雅路109号