发明名称 |
基于GPU的序列比对算法的比对结果处理方法 |
摘要 |
本发明公开了一种基于GPU的序列比对算法的比对结果处理方法,包括:初始化GPU的块大小为Bs,并确定线程数量为N,用户输入的待查询序列Q的长度为qlen,GPU在共享内存中建立分值缓冲区score[Bs]和比对结果缓冲区val[Bs*17][2],GPU初始化线程号为tid,score[]为零,val[][]为零,缓冲器标记p=1,段计数器s=0,线程号tid小于线程数量N的所有线程在纹理内存中查找相应的数据库序列,并将数据库序列的序列号sid设置为线程号tid,设置计数器i=0,每个线程分别取出相应数据库序列中的第i个字符,设置计数器j=s,每个线程分别取出待查询序列Q中的第j个字符。本发明能实现Smith-Waterman算法快速打分,且能高效直观地写回比对结果,从而为回溯部分获取最佳匹配片段提供分值矩阵。 |
申请公布号 |
CN102663270A |
申请公布日期 |
2012.09.12 |
申请号 |
CN201210060480.1 |
申请日期 |
2012.03.08 |
申请人 |
华中科技大学 |
发明人 |
金海;郑然;冯晓文;梁添 |
分类号 |
G06F19/22(2011.01)I;G06F17/30(2006.01)I |
主分类号 |
G06F19/22(2011.01)I |
代理机构 |
华中科技大学专利中心 42201 |
代理人 |
朱仁玲 |
主权项 |
一种基于GPU的序列比对算法的比对结果处理方法,包括以下步骤:初始化GPU的块大小为Bs,并确定线程数量为N,用户输入的待查询序列Q的长度为qlen;GPU在共享内存中建立分值缓冲区score[Bs]和比对结果缓冲区val[Bs*17][2];GPU初始化线程号为tid,score[]为零,val[][]为零,缓冲器标记p=1,段计数器s=0;线程号tid小于线程数量N的所有线程在纹理内存中查找相应的数据库序列,并将数据库序列的序列号sid设置为线程号tid;设置计数器i=0;每个线程分别取出相应数据库序列中的第i个字符;设置计数器j=s;每个线程分别取出待查询序列Q中的第j个字符;每个线程根据Smith‑Waterman算法对相应数据库序列中的第i个字符和待查询序列Q中的第j个字符进行计算,以得到val[][p];每个线程分别求score[tid]和val[][p]两者的最大值,并用最大值替换score[tid];判断j是否大于或等于s+15或qlen;如果j大于或等于s+15或qlen,则设置计数器m=0;线程数量N中的每16个线程将val[m*16][p]到val[m*16+15][p]的16个元素联合写回GPU显存,完成一次联合写回;判断m是否大于或等于15;如果m大于或等于15,则每个线程分别判断相应数据库序列是否已没有字符;如果线程相应数据库序列已没有字符,则判断qlen是否小于或等于16;如果qlen小于或等于16,则每个线程分别将score[tid]写回GPU显存。 |
地址 |
430074 湖北省武汉市洪山区珞喻路1037号 |