CN109584967B - 一种蛋白质鉴定并行加速方法 - Google Patents
一种蛋白质鉴定并行加速方法 Download PDFInfo
- Publication number
- CN109584967B CN109584967B CN201811404117.0A CN201811404117A CN109584967B CN 109584967 B CN109584967 B CN 109584967B CN 201811404117 A CN201811404117 A CN 201811404117A CN 109584967 B CN109584967 B CN 109584967B
- Authority
- CN
- China
- Prior art keywords
- batch
- protein
- scoring
- fine
- parallel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明属于并行处理技术领域,具体为一种蛋白质鉴定并行加速方法。本发明首先采用细粒度切分蛋白质库,通过设置低竞争缓冲区实现细粒度batch分配机制,然后通过数据结构的优化和内存分配器的优化实现对动态内存的优化,利用主线程和工作线程完成对蛋白质库的理论水解、匹配、打分和保存分数;最后通过调整计分流程,完成并行计分。本发明相较于传统蛋白质鉴定软件X!Tandem串行性能有20.5倍的性能提升。
Description
技术领域
本发明属于并行处理技术领域,具体涉及到一种蛋白质鉴定并行加速算法。
背景技术
随着人类基因组计划的完成,生命科学开始进入到蛋白质研究时代。蛋白质由氨基酸组成,通过基因指导氨基酸对蛋白质的合成,蛋白质进一步承担生命活动。蛋白质是生命活动的直接参与者,蛋白质的研究对人类进一步揭示生命本质有着重要的意义,蛋白质鉴定是蛋白质研究的基础,对生物、医药研究、临床诊断至关重要。氨基酸序列是表示蛋白质身份唯一标识,蛋白质鉴定的目的是鉴定出蛋白质的氨基酸序列。当前主流蛋白质鉴定的方法是通过串联质谱方法进行鉴定,具体是通过将生物样品转化为串联质谱,对串联质谱进行分析得出样品中蛋白质的氨基酸序列。蛋白质鉴定领域最实用的蛋白质鉴定算法是数据库搜索法。基本鉴定原理是将蛋白质库中蛋白质序列转换为理论质谱,与实验质谱打分,得到与实验质谱最相似的蛋白质序列。生物大数据时代的到来使得蛋白质库越来越大,从生物样品中获取的串联质谱也越来越多。而蛋白质鉴定过程本就是复杂和困难的,并且生物大数据时代的到来,使蛋白质鉴定面临更大的挑战。
基于蛋白质库搜索法蛋白质鉴定过程是由理论水解、匹配、打分、计分和生成报告这五个模块组成。对蛋白序列逐条进行理论水解,理论水解得到肽段。肽段再与输入的实验质谱进行匹配,匹配得到与此肽段母离子质量,肽段母离子质量就是肽段中所有分子的质量,可用于衡量肽段与实验质谱的相似性。然后肽段与匹配的实验质谱进行打分,打分过程是把肽段转化为理论质谱,再将理论质谱与实验质谱进行比较打分。计分过程是将肽段与实验质谱的分数记录到实验质谱的对应数据结构中。当完成对整个蛋白质库的理论水解、匹配、打分和计分之后,再对实验质谱中记录的分数进行统计得出整体得分最高的蛋白质序列,因此蛋白质库的快速增长会使鉴定的复杂度快速增长,导致鉴定效率降低。
最近这些年,随着半导体技术的发展和多核技术的普及,多核处理器丰富的计算资源给蛋白质鉴定算法加速提供了有效的途径,而当前基于多核处理器的蛋白质并行鉴定算法存在性能问题[1][2]。当前蛋白质并行鉴定算法是通过将质谱均分给各核,每个核需要从整个库中找到与实验质谱匹配的蛋白质序列,这需要对蛋白质库中的每一条蛋白质序列进行理论水解、匹配等操作,这就导致了每个核遍历整个蛋白质库。当蛋白质库中蛋白质序列条目非常多的时候,会导致每个核在理论水解、匹配操作上花费大量的时间,并且这些操作结果对各个核是重复的。因此在处理较大的蛋白质库时由于每个核重复执行理论水解、匹配等操作,这会导致并行性能很低。
发明内容
针对当前蛋白质鉴定多核并行性能低下存在的问题,本发明的目的在于提供一种新的蛋白质鉴定并行加速算法,该算法基于分割蛋白质数据库的思想,通过细粒度任务分配、内存性能和计分流程优化等手段,可以有效的提高蛋白质鉴定的并行性能。
本发明首先采用细粒度切分蛋白质库,通过设置低竞争缓冲区实现细粒度batch分配机制,然后通过数据结构的优化和内存分配器的优化实现对动态内存的优化,利用主线程和工作线程完成对蛋白质库的理论水解、匹配、打分和保存分数;最后通过调整计分流程,完成并行计分。本发明的技术方案具体介绍如下。
一种蛋白质鉴定并行加速算法,具体步骤如下:
(1)读取蛋白质库,通过每次读取的蛋白质序列数量来控制batch粒度,将蛋白质数据库划分为蛋白质序列条目数较少的batch,实现细粒度切分蛋白质库,并通过设置低竞争缓冲区将细粒度batch分配给工作线程,实现细粒度batch分配机制;其中:
所述低竞争缓冲区的具体数据结构是环形数组,数组的每个元素由batch编号、互斥锁、状态位组成,并且每个元素进行了缓存行填充;
(2)当蛋白库读取完成并且低竞争缓冲区中已经没有可读batch时,主线程和工作线程完成对蛋白质库的理论水解、匹配、打分和保存分数,该过程中,通过数据结构的优化和内存分配器的优化对动态内存进行优化;
(3)当各个线程完成对蛋白质库的理论水解、匹配、打分和保存分数后,主线程先完成对母离子质量大于3000的实验质谱的记分,然后主线程从保存的分数数据中读取细粒度batch,并将batch编号插入到缓冲区中,然后工作线程从缓冲区中获取batch编号,工作线程对batch中的分数计入到相应的实验质谱中,最后完成并行计分。
细粒度batch分配机制如下:主线程从蛋白质数据库中获取细粒度batch,将batch编号插入到环形数组中,插入过程中从头遍历数组,根据每个元素的状态位来确定是否可以插入,当状态是可以插入时就插入到此位置,如果状态位为不可插入则遍历到下一个元素并判断其状态;工作线程通过获取batch编号来获取batch,通过遍历环形数组的每个元素,互斥地访问每个元素的状态,当元素状态是可读的时候则返回当前元素的编号即batch编号,互斥访问每个元素状态时是通过尝试加锁方式,当加锁失败后就尝试下一个元素。
本发明中,数据结构的优化是指将保存分数的数据结构设置为一条蛋白质序列的分数数据;
本发明中,对动态内存进行优化包括使用动态数组保存大块内存的指针一级使用并行内存分配器进行多线程的内存分配。
和现有技术相比,本发明的有益效果在于:
(1)本发明基于分库的思想,解决了当前蛋白质并行鉴定算法重复模拟水解蛋白质库的性能问题。本发明进一步通过线程负载均衡、提高内存存储性能和计分流程优化等方法设计了基于细粒度的均衡并行鉴定算法。该算法通过设计了低竞争缓冲区以及细粒度任务分配提高了各线程负载均衡以及任务分配的并行性;通过优化数据结构和提高线程的动态内存性能来提高并行算法的内存性能;通过调整计分流程,在保证计分顺序要求情况下,又提高了计分的并行性。因此本发明的蛋白质并行鉴定性能非常优秀。本发明相较于传统蛋白质鉴定软件X!Tandem串行性能有20.5倍的性能提升。
(2)本发明采用细粒度batch分配机制中通过尝试加锁方式互斥方法能避免多个线程对元素的锁争抢导致的线程阻塞问题,可以有效的减少上下文切换开销。
(3)本发明中主线程和工作线程完成对蛋白质库的理论水解、匹配、打分和保存分数时,通过使用动态数组保存大块内存的指针来减少动态数组扩展时拷贝大块内存的开销。通过使用并行内存分配器来提高多线程的内存分配效率。
(4)本发明通过系统绑定设置,将工作线程绑定在运算核上,可提高CPU亲和性,使得工作线程在运行时不会被调度,可以减少线程间切换带来的开销,提高缓存命中率。
附图说明
图1为本发明的蛋白质鉴定并行框架图。
图2为本发明的并行性能与X!Tandem的加速比对比的柱形图。
具体实施方式
下面结合附图说明本发明在蛋白质鉴定并行算法设计的具体实施方法。本发明主要利用了细粒度任务、内存性能优化和计分流程优化来提高蛋白质鉴定性能,充分利用多核计算资源。
图1为本发明的蛋白质鉴定并行框架图。本发明首先实现细粒度切分蛋白质库,实现细粒度batch分配机制。细粒度的batch是指将蛋白质数据库划分为蛋白质序列条目数较少的batch,而分配机制则是将细粒度batch分配给工作线程。细粒度的控制是通过读取蛋白质库,每次读取的蛋白质序列数量来控制batch粒度。细粒度任务的分配机制是通过设计了低竞争缓冲区来实现的。低竞争缓冲区具体数据结构是环形数组,数组的每个元素由batch编号、互斥锁、状态位组成,并且每个元素进行了缓存行填充。分配过程为:主线程从蛋白质数据库中获取细粒度batch,将batch编号插入到环形数组中,插入过程需要从头遍历数组,根据每个元素的状态位来确定是否可以插入,当状态是可以插入时就插入到此位置,如果状态位为不可插入则遍历到下一个元素并判断其状态;工作线程通过获取batch编号来获取batch,通过遍历环形数组的每个元素,互斥地访问每个元素的状态,当元素状态是可读的时候则返回当前元素的编号即batch编号,互斥访问每个元素状态时是通过尝试加锁方式,当加锁失败后就尝试下一个元素,这样避免多个线程对元素的锁争抢导致的线程阻塞问题,可以有效的减少上下文切换开销。
然后主线程和工作线程完成对蛋白质库的理论水解、匹配、打分和保存分数。由于保存分数需要大量的申请动态内存,因此本发明对动态内存进行优化,其中涉及到数据结构的优化和内存分配器的优化。通过使用动态数组保存大块内存的指针来减少动态数组扩展时拷贝大块内存的开销。通过使用并行内存分配器来提高多线程的内存分配效率。
最后完成并行计分。当各个线程完成对蛋白质库的理论水解、匹配、打分和保存分数后,主线程先完成对母离子质量大于3000的实验质谱的记分,然后主线程从保存的分数数据中读取细粒度batch,并将batch编号插入到缓冲区中,然后工作线程从缓冲区中获取batch编号,工作线程对batch中的分数计入到相应的实验质谱中。
本发明还考虑CPU亲和性,通过将线程绑定在运算核上,使得线程在运行时不会被随意调度,可以减少线程间切换带来的开销,并提高缓存命中率。
实施例1
测试环境为:在硬件为双插槽处理器,每个处理器为Intel Xeon E5-2683v4型号处理器,该处理器拥有16个物理核32个逻辑核,机器共32个物理核42个逻辑核,内存容量为512G,搭载Ubuntu 16.04操作系统,内核版本为Linux 4.13,使用编译器为GCC-5.4.0版本,程序编译优化使用O3,使用intel Tbb43_20150611oss替代glibc.so中ptmalloc。测试实验数据集为:候选蛋白质库为人类蛋白质库,从国际生物信息中心下载得到,共648955条序列;输入实验串联质谱为人类血浆蛋白,共5848张质谱图。实验数据表明本发明在32个线程时可以提高性能20.5倍,远远高于X!Tandem的性能,达到了在多和平台下提升蛋白质鉴定算法的性能的目的。具体流程如下:
1.通过m_svrSequences.next(true)从蛋白质数据库中读取设定粒度的batch。设定参数通过修改default_input.xml中spectrum sequence batch size对应的值,在本发明中设定为500。
2.低竞争的缓冲区设计体现在class buf中,buf中定义了环形数组的大小、数组的指针和以及每个元素内包含的数据。插入缓冲区操作通过bool Insert(const unsignedlong_id)实现,通过将batch序号_id插入到缓冲区中,并修改相应的状态位为可读状态。从缓冲区读取操作通过bool Remove(int&readableIndex)实现,从缓冲区中读取batch序号并赋值给readableIndex,并且通过返回bool值,当蛋白库读取完成并且缓冲区中已经没有可读batch时,就完成了batch的理论水解、匹配、打分和保存分数。
3.通过将保存分数的数据结构设置为一条蛋白质序列的分数数据保存在一块内存中,使用动态内存来保存这块内存的指针;使用intel TBB替换掉Linux内置的glibc中的ptmalloc,需要在编译时链接设置为intel tbb。
4.主线程在串行计分时针对于母离子质量大于3000的实验质谱需要考虑肽段移位打分问题,这部分是通过reuse_each_sequence()控制完成,在完成一个batch的记分后通过spec_3k_vec.all()检查是否完成对全部母离子质量大于3000的实验质谱计分,当完成这部分质谱计分时就进入到并行计分阶段。
5.并行计分阶段是通过逐个将各个batch打分结果插入到缓冲区中完成,这部分使用batchTaskQueue.insert(i)来完成,i为要插入的batch分数结果的序号。工作线程使用batchTaskQueue.Remove()从缓冲区中获取batch分数结果序号,通过parallel_reuse_each_sequence()完成对这个batch的计分,这个过程通过对每个实验质谱加锁保证多线程下对临界区域的保护,并且细粒度并行也提供了更充分的并行度,提高并行性能。
表1为本发明的并行性能与X!Tandem的实验数据对比;图2为本发明的并行性能与X!Tandem的加速比对比的柱形图。
表1 细粒度均衡算法与X!Tandem多线程加速比较
并行算法\线程数量 | 4 | 8 | 16 | 32 |
X!Tandem | 2.69 | 3.75 | 4.91 | 5.51 |
细粒度均衡算法 | 3.54 | 6.38 | 12.06 | 20.54 |
参考文献:
[1]Sadygov R G,Cociorva D,Yates R J.Large-scale database searchingusing tandem mass spectra:looking up the answer in the back of the book[J].Nature Methods,2004,1(3):195-202.
[2]Majumder T,Pande P P,Kalyanaraman A.Hardware Accelerators inComputational Biology:Application,Potential,and Challenges[J].IEEE Design&Test,2014,31(1):8-18.
Claims (4)
1.一种蛋白质鉴定并行加速方法,其特征在于,具体步骤如下:
(1)读取蛋白质库,通过每次读取的蛋白质序列数量来控制batch粒度,将蛋白质数据库划分为蛋白质序列条目数较少的batch,实现细粒度切分蛋白质库,并通过设置低竞争缓冲区将细粒度batch分配给工作线程,实现细粒度batch分配机制;其中:
所述低竞争缓冲区的具体数据结构是环形数组,数组的每个元素由batch编号、互斥锁和状态位组成,并且每个元素进行了缓存行填充;
(2)当蛋白库读取完成并且低竞争缓冲区中已经没有可读batch时,主线程和工作线程完成对蛋白质库的理论水解、匹配、打分和保存分数,该过程中,通过数据结构的优化和内存分配器的优化对动态内存进行优化;
(3)当各个线程完成对蛋白质库的理论水解、匹配、打分和保存分数后,主线程先完成对母离子质量大于3000的实验质谱的记分,然后主线程从保存的分数数据中读取细粒度batch,并将batch编号插入到低竞争缓冲区中,然后工作线程从低竞争缓冲区中获取batch编号,工作线程对batch中的分数计入到相应的实验质谱中,最后完成并行计分。
2.根据权利要求1所述的蛋白质鉴定并行加速方法,其特征在于,细粒度batch分配机制如下:主线程从蛋白质数据库中获取细粒度batch,将batch编号插入到环形数组中,插入过程中从头遍历数组,根据每个元素的状态位来确定是否可以插入,当状态是可以插入时就插入到此位置,如果状态位为不可插入则遍历到下一个元素并判断其状态;工作线程通过获取batch编号来获取batch,通过遍历环形数组的每个元素,互斥地访问每个元素的状态,当元素状态是可读的时候则返回当前元素的编号即batch编号,互斥访问每个元素状态时是通过尝试加锁方式,当加锁失败后就尝试下一个元素。
3.根据权利要求1所述的蛋白质鉴定并行加速方法,其特征在于,步骤(2)中,数据结构的优化是指将保存分数的数据结构设置为一条蛋白质序列的分数数据。
4.根据权利要求1所述的蛋白质鉴定并行加速方法,其特征在于,步骤(2)中,对动态内存进行优化包括使用动态数组保存大块内存的指针一级使用并行内存分配器进行多线程的内存分配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811404117.0A CN109584967B (zh) | 2018-11-23 | 2018-11-23 | 一种蛋白质鉴定并行加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811404117.0A CN109584967B (zh) | 2018-11-23 | 2018-11-23 | 一种蛋白质鉴定并行加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109584967A CN109584967A (zh) | 2019-04-05 |
CN109584967B true CN109584967B (zh) | 2023-05-02 |
Family
ID=65924183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811404117.0A Active CN109584967B (zh) | 2018-11-23 | 2018-11-23 | 一种蛋白质鉴定并行加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109584967B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110349621B (zh) * | 2019-06-04 | 2021-08-27 | 中国科学院计算技术研究所 | 肽段-谱图匹配可信度检验方法、系统、存储介质及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411666A (zh) * | 2010-09-26 | 2012-04-11 | 中国科学院计算技术研究所 | 一种蛋白质鉴定的大规模分布式并行加速方法及其系统 |
CN102495725A (zh) * | 2011-11-15 | 2012-06-13 | 复旦大学 | 一种基于多核体系结构的图像/视频特征提取并行算法 |
CN106709273A (zh) * | 2016-12-15 | 2017-05-24 | 国家海洋局第海洋研究所 | 基于微藻蛋白质特征序列标签匹配的蛋白质快速检测方法及系统 |
CN107727727A (zh) * | 2017-11-13 | 2018-02-23 | 复旦大学 | 一种蛋白质鉴定方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030037045A1 (en) * | 2001-05-21 | 2003-02-20 | Ian Melhado | Distributed computing environment for recognition of proteomics spectra |
-
2018
- 2018-11-23 CN CN201811404117.0A patent/CN109584967B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411666A (zh) * | 2010-09-26 | 2012-04-11 | 中国科学院计算技术研究所 | 一种蛋白质鉴定的大规模分布式并行加速方法及其系统 |
CN102495725A (zh) * | 2011-11-15 | 2012-06-13 | 复旦大学 | 一种基于多核体系结构的图像/视频特征提取并行算法 |
CN106709273A (zh) * | 2016-12-15 | 2017-05-24 | 国家海洋局第海洋研究所 | 基于微藻蛋白质特征序列标签匹配的蛋白质快速检测方法及系统 |
CN107727727A (zh) * | 2017-11-13 | 2018-02-23 | 复旦大学 | 一种蛋白质鉴定方法及系统 |
Non-Patent Citations (2)
Title |
---|
杨旭瑜 ; 张铮 ; 张为华.深度学习加速技术研究.《计算机系统应用》.2016,第25卷(第25期),1-9. * |
段琼 等.CUDA-TP:基于GPU的自顶向下完整蛋白质鉴定并行算法.计算机研究与发展.2018,第55卷(第55期),1525-1538. * |
Also Published As
Publication number | Publication date |
---|---|
CN109584967A (zh) | 2019-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Guo et al. | Gpu-accelerated subgraph enumeration on partitioned graphs | |
US20110066806A1 (en) | System and method for memory bandwidth friendly sorting on multi-core architectures | |
EP2880566B1 (en) | A method for pre-processing and processing query operation on multiple data chunk on vector enabled architecture | |
AU2015231828A1 (en) | Parallel decision tree processor architecture | |
Torres et al. | Using GPUs for the exact alignment of short-read genetic sequences by means of the Burrows-Wheeler transform | |
CN112380003B (zh) | 一种gpu处理器上的k-nn的高性能并行实现装置 | |
Zhang et al. | cublastp: Fine-grained parallelization of protein sequence search on cpu+ gpu | |
Wang et al. | Xsw: Accelerating biological database search on xeon phi | |
US20170083286A1 (en) | Parallel merge sorting | |
Feng et al. | Accelerating long read alignment on three processors | |
Bøgh et al. | Work-efficient parallel skyline computation for the GPU | |
Haseeb et al. | Evaluating Performance and Portability of a core bioinformatics kernel on multiple vendor GPUs | |
Yabuta et al. | Relational joins on GPUs: A closer look | |
Munekawa et al. | Design and implementation of the Smith-Waterman algorithm on the CUDA-compatible GPU | |
Houtgast et al. | An efficient gpuaccelerated implementation of genomic short read mapping with bwamem | |
CN109584967B (zh) | 一种蛋白质鉴定并行加速方法 | |
Zhang et al. | Hypha: a framework based on separation of parallelisms to accelerate persistent homology matrix reduction | |
Quirino et al. | fgssjoin: A GPU-based Algorithm for Set Similarity Joins. | |
Sarje et al. | Parallel genomic alignments on the cell broadband engine | |
Haseeb et al. | Lbe: A computational load balancing algorithm for speeding up parallel peptide search in mass-spectrometry based proteomics | |
Cheng et al. | Accelerating search of protein sequence databases using CUDA-enabled GPU | |
Bellas et al. | Exact set similarity joins for large datasets in the GPGPU paradigm | |
Guo et al. | In-memory join algorithms on gpus for large-data | |
Zeng et al. | SGSI–A Scalable GPU-friendly Subgraph Isomorphism Algorithm | |
Feng et al. | Accelerating Smith-Waterman alignment of species-based protein sequences on GPU |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |