跳到主要内容
访问密钥 NCBI主页 MyNCBI主页 主要内容 主导航
BMC Res注释。2008; 1: 107.
2008年10月29日在线发布。 数字对象标识:10.1186/1756-0500-1-107
PMCID公司:项目经理2615776
PMID:18959793

SWPS3–用于IBM Cell/B.E.和×86/SSE2的快速多线程矢量化Smith-Waterman

摘要

背景

我们提出了swps3,它是针对Cell/BE和×86架构优化的Smith-Waterman局部对齐算法的矢量化实现。本文描述了swps3,并将其性能与其他几种实现进行了比较。

调查结果

我们的基准测试结果表明,swps3目前是Cell/BE上矢量化Smith-Waterman的最快实现,比唯一的其他已知实现至少高出4倍:在Playstation 3上,它每秒实现80亿个单元更新(GCUPS)。使用SSE2指令集,四核Intel Pentium可以达到15.7 GCUPS。我们还表明,此CPU上的swps3比最近的GPU实现更快。最后,我们注意到,在某些情况下,对齐的计算速度与BLAST(一种启发式方法)大致相同。

结论

Cell/BE可以成为一个强大的平台来对齐生物序列。此外,精确方法和启发式方法之间的性能差距几乎消失了,特别是对于长蛋白质序列。

背景

生物信息学中使用比对来比较生物序列。序列比对的黄金标准是Smith和Waterman提出的具有仿射间隙代价的最优局部序列比对[1,2]. 现代实现通过使用SIMD指令实现高性能,SIMD指令并行执行多个值的操作。这种通用桌面处理器的矢量化实现包括Wozniak以前的工作[]、罗杰斯和西伯格[4]和Farrar[5]. 后者是在带有SSE2(流单指令多数据扩展指令集)指令集的×86体系结构上最快的实现。至于其他平台,Sachdeva等。[6]从FASTA包中移植了ssearch34的Altivec内核[7,]但据我们所知,没有公开的实现。Manavski和Valle提供了另一种解决方案[8]通用图形硬件。

在本文中,我们介绍了swps3,这是Smith-Waterman算法的一种实现,它将Farrar的工作扩展到了IBMCell/BE平台。在那里,运行时比Sachdeva报告的结果有所改进等。[6]至少是四倍。该代码还改进了Farrar在x86架构上的工作,主要是通过支持多核处理器。在下文中,我们首先介绍了使用swps3实现的基准测试结果,并将其与其他实现进行了比较。在本文的第二部分中,我们讨论了实现细节以及对Farrar算法的改进。

结果

通过在IBMCell/BE上实现Farrar的算法并利用所有可用的处理器内核,swps3实现了比以前实现更高的对齐速度。

在下面,我们将swps3与以下工具进行比较:ssearch35[7],瑞士[5],WU-BLAST 2.0[9]和NCBI-BLAST 2.2.18[10].

这些查询包括与Swiss-Prot 55.1版本一致的蛋白质序列[11]数据库包含359942个序列中的129199355个氨基酸。查询序列集是Farrar的扩展[5],具有7个长度高达4000个氨基酸的较长序列。在整个测试过程中,我们使用BLOSUM50评分矩阵[12]. 奇怪的是,NCBI-BLAST的速度似乎对得分矩阵非常敏感。例如,我们使用BLOSUM62观察到跑步速度是前者的两倍。所有基准测试都是在Gentoo Linux上执行的,该Linux具有64位2.6内核,部署在Intel Pentium Core 2 Quad Q6600(2.4 GHz)或Sony Playstation 3(采用Cell/BE(3.2 GHz)和256 MiB XDRAM)上。请注意,在这种配置中,八个SPE中只有六个可供用户使用。

图11展示了我们的工具在不同多核架构上的基准测试结果。为了将这些结果放在更广泛的背景下,我们将多线程WU-BLAST和NCBI-BLAST的运行时转换为GCUPS等效项,以及Manavski和Valle获得的性能数据包括在内[8]在GPU体系结构上。ssearch和swsse的运行时与swps3大致相同,因此为了清晰起见,图中省略了它们。

保存图片、插图等的外部文件。对象名称为1756-0500-1-107-1.jpg

绩效评估GCUPS中不同多核架构上的间隙本地对齐实现的性能(109单元格更新).

在整个基准测试中,Intel Pentium Q6600是速度最快的平台。在该机器上,swps3的平均性能为10.7 GCUPS,最大性能为15.7 GCUPS。多线程启发式方法对于短查询序列是最快的,但对于长度超过300个氨基酸的序列,WU-BLAST以swps3为主。至于NCBI-BLAST,其平均性能与swps3大致相似。这表明,为了对齐长蛋白质序列,启发式的使用不再合理。

当对齐分数由16位整数或32位浮点值表示时,我们在Cell/BE上的实现对于长序列查询的性能相对更好。事实上,在处理8000个氨基酸的(相关)查询时,它能够赶上Intel Pentium Q6600(结果未显示)。另一方面,Cell/BE的性能受到其稀疏向量指令集的限制。例如,缺乏对8位整数向量的支持限制了短的、不相关的低分数序列的性能,这些序列构成了基准数据集的最大部分。

实施细节

swps3在很大程度上基于之前的条纹Smith-Waterman算法实现[5]. 本节描述了我们的改进,按平台分组。

细胞/BE特定改进

Cell/BE的体系结构在多个方面与其他通用微处理器不同。除了主要的通用PowerPC核心(PPE)之外,它还具有八个名为协同处理要素(SPE)。SPE无法直接访问主内存。相反,每个单元都有一个256 kiB SRAM的本地存储器和一个可编程DMA控制器,该控制器在本地存储器和主存储器之间执行批量传输,而不会中断SPE上的程序执行。我们的大部分代码都是作为C++模板编写的,我们应用内部函数来访问特定于平台的指令。在此过程中,编译器负责优化。为了简化此任务,我们手动展开内部循环,这将大大提高性能。在×86上,内部循环的提前终止减少了执行时间,而在Cell/BE上,提前终止节省的时间被计算条件分支指令的开销所抵消。在这种情况下,静态分支预测也无法提高性能,因此我们将代码检查提前终止条件移出了内部循环。尽管算法的内存消耗在查询和数据库序列的长度上是线性的,但内存主要由配置文件数据消耗。作为对Sachdeva的改进等。[6],我们允许对配置文件进行分段,以支持任意查询序列长度。每个段都是从主内存中顺序检索并处理的。这需要存储中间结果:在处理配置文件段后,我们存储列间距分数(F类以Farrar的符号表示)和最高分数(H(H)). 然后,从主存储器中提取下一个轮廓段,替换旧段,并使用存储的分数恢复对齐。

在使用长氨基酸序列(>5000个残基)的实验中,我们尝试了双重缓冲配置文件(DMA传输与计算并行),但这导致了较差的性能。实际上,预取需要SPE上额外的本地内存,因此减少了配置文件段的长度。我们没有预先计算PPE上的配置文件并将其传输到SPE,而是尝试直接在SPE上计算配置文件,因此只需要传输查询序列和评分矩阵。不幸的是,这种方法导致执行时间稍高(结果未显示)。这些结果表明,即使没有双缓冲,PPE和SPE之间的数据传输也只占总执行时间的一小部分。大多数生物查询序列足够短,可以一次加载整个配置文件。考虑到Cell/BE能够每两个处理器周期传输16个字节(在3.2 GHz时钟频率下为25.6 GB/s),传输数据库序列的开销也微不足道。

SSE2特定改进

在为Cell/BE编写代码时,我们发现Farrar实现的一些小方面可以改进。根据设计,计分矩阵中只存储无符号8位整数。对于16位分数的对齐,通过将高位字节设置为零,将其扩展为16位值来创建配置文件。通过创建一个8位概要文件并使用解包操作(_mm_unpacklo_epi8)将其扩展到算法内部循环中的16位,我们能够减少概要文件导致的缓存占用。这对于长查询序列来说尤其有益。总之,我们的SSE2实现显示了非常好的缓存效率。据瓦尔格林德介绍[13]运行时,我们的一级数据丢失率为0.8%,二级数据丢失速率为0.087%第20930页,是我们测试集中最长的蛋白质序列,针对Swiss-Prot。

此外,我们重组了惰性F评估循环(请参见[5])通过将其转换为具有指定索引范围的两个嵌套循环来提示编译器执行计数。此外,可以放宽提前终止此循环的条件。

多线程设计

为了开发Cell/BE的全部潜力,我们设计了一个多线程对齐算法,将工作负载分配到多个SPE和PPE上。创建概要文件后,我们为每个CPU内核派生一个工作线程。事实证明,最有效的方法是让六个工作线程分别初始化一个SPE,一个线程使用PPE的Altivec指令集执行对齐。父进程处理文件I/O,并通过双向管道与工作线程通信,以向其提供数据库序列并收集对齐分数。每个工作线程计算查询序列与单独的数据库序列的对齐。注意,×86实现还受益于多线程设计,因为最近的芯片具有越来越多的处理内核。

限制

在当前版本中,swps3只能计算具有仿射间隙的局部蛋白质序列比对分数。它不显示生成的路线。用户可以通过命令行选择自己的评分矩阵。矩阵条目仅限于带符号的8位整数值(即-128到127),但代码中支持读取和缩放浮点矩阵。序列的最大长度限制为10000个氨基酸,分数受相关计算数据类型的限制(默认为无符号16位整数)。

结论

swps3是针对Cell/BE、PowerPC和×86/×86_64体系结构的快速灵活的Smith-Waterman实现。它在四核Pentium上的性能高达15.7 GCUPS,在Sony Playstation 3上的性能为8.0 GCUPS,是我们所知的两种平台上最快的实现。此外,根据Manavski和Valle的报告,它还优于通用图形硬件的计算[8]大大降低了功耗和成本。

可利用性

项目名称:SWPS3

项目网站:http://www.inf.ethz.ch/personal/sadam/swps3/

操作系统:Linux、Unix、Mac OS X

程序设计语言:C、C++

许可证:麻省理工学院

竞争性利益

提交人声明他们没有相互竞争的利益。

作者的贡献

CD发起并协调了该项目。AS、CL、PK促成了程序代码。AS,CD进行了分析并起草了这份手稿。所有作者阅读并批准了最终手稿。

致谢

作者感谢卫斯理·P·彼得森(Wesley P.Petersen)的讨论,感谢两位匿名评论员的有益评论。

参考文献


文章来自BMC研究笔记由以下人员提供BMC公司