《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > CUDA加速的DNA-蛋白質(zhì)匹配及其優(yōu)化
CUDA加速的DNA-蛋白質(zhì)匹配及其優(yōu)化
來源:電子技術(shù)應(yīng)用2013年第9期
陳春雷, 慕德俊, 張慧翔, 胡 偉
西北工業(yè)大學(xué) 自動化學(xué)院, 陜西 西安710072
摘要: 設(shè)計(jì)實(shí)現(xiàn)了一種使用統(tǒng)一計(jì)算設(shè)備架構(gòu)(CUDA)加速DNA-蛋白質(zhì)匹配的方法。詳細(xì)介紹了一種基于退火算法的DNA-蛋白質(zhì)匹配方法和CUDA的特點(diǎn),從計(jì)算的角度對匹配方法進(jìn)行了分析。基于CUDA設(shè)計(jì)實(shí)現(xiàn)并行化方法,并根據(jù)CUDA的線程調(diào)度策略對并行方法進(jìn)行了優(yōu)化。實(shí)驗(yàn)結(jié)果表明,最大可獲得15倍左右的加速比。
中圖分類號: TP393
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2013)09-0135-04
CUDA-accelerated DNA-protein matching and its optimization
Chen Chunlei, Mu Dejun, Zhang Huixiang, Hu Wei
School of Automation, Northwestern Polytechnical University, Xi’an 710072, China
Abstract: A method was proposed to accelerate DNA-protein matching, using Compute Unified Device Architecture (CUDA). Firstly, we introduced an annealing-algorithm-based DNA-protein matching method and the characteristics of CUDA. Then we analyzed the matching method from the computational perspective. Afterwards, we parallelized the matching method using CUDA. Finally, the method is optimized according to the thread scheduling policy of CUDA. Experiments show that up to 15 times speedup can be achieved, in contrast to the CPU-only method.
Key words : DNA-protein matching; CUDA; annealing algorithm; thread scheduling

    結(jié)構(gòu)生物信息學(xué)已成為當(dāng)前計(jì)算機(jī)科學(xué)領(lǐng)域的一個(gè)研究熱點(diǎn)。其主要研究目標(biāo)是獲取生物系統(tǒng)的高分辨率結(jié)構(gòu)信息,從而精確地推理系統(tǒng)的功能、預(yù)測某些修改或擾動對系統(tǒng)造成的影響。與生物信息學(xué)的其他領(lǐng)域相比,結(jié)構(gòu)生物信息學(xué)面臨眾多新的挑戰(zhàn)。其中之一是多數(shù)結(jié)構(gòu)生物信息學(xué)問題的搜索空間是連續(xù)的;換言之,生物系統(tǒng)的微觀結(jié)構(gòu)一般通過原子在空間坐標(biāo)系中的位置來表示,而坐標(biāo)通常是連續(xù)變量,因此搜索空間是無窮的。雖然某些近似方法可以在一定程度上應(yīng)對結(jié)構(gòu)生物信息學(xué)問題的這種連續(xù)特性,但是從搜索空間中求得最終解仍然需要進(jìn)行大量的運(yùn)算[1]。

     DNA-蛋白質(zhì)匹配是生物信息學(xué)的一個(gè)重要問題。傳統(tǒng)的序列分析方法往往會導(dǎo)致較高的多重檢驗(yàn)錯(cuò)誤率(false-positive rate)[2]。多數(shù)基于結(jié)構(gòu)生物信息學(xué)的DNA-蛋白質(zhì)匹配方法把獲得轉(zhuǎn)錄因子-DNA組合體的信息作為一個(gè)必備條件,而轉(zhuǎn)錄因子-DNA組合體的信息通常需要通過實(shí)驗(yàn)獲得,這種實(shí)驗(yàn)通常需要耗費(fèi)大量的時(shí)間。參考文獻(xiàn)[2]提出的基于退火算法的匹配算法避開了這個(gè)問題,但是使用該方法進(jìn)行DNA-蛋白質(zhì)匹配仍需要較大的運(yùn)算量。參考文獻(xiàn)[3]基于參考集索引技術(shù)提出了一種快速的序列分析算法,并將其應(yīng)用于DNA-蛋白質(zhì)匹配。參考文獻(xiàn)[4]采用多CPU的方式設(shè)計(jì)實(shí)現(xiàn)了并行化的DNA-蛋白質(zhì)序列分析方法,并取得了較高的加速比。但上述工作均未涉及基于結(jié)構(gòu)生物信息學(xué)的匹配方法的加速問題。
    應(yīng)對大運(yùn)算量問題的一個(gè)常用方法是并行計(jì)算。NVIDIA公司統(tǒng)一計(jì)算設(shè)備架構(gòu)CUDA(Compute Unified Device Architecture)是一種全新的并行計(jì)算架構(gòu)。在CUDA的支持下,通用計(jì)算圖形處理單元GPGPU(General Purpose Graphic Processing Unit)可以作為一種通用的效率、硬件加速器,發(fā)揮出強(qiáng)大的運(yùn)算能力[5]。
    本文針對參考文獻(xiàn)[2]的DNA-蛋白質(zhì)匹配方法,從計(jì)算的角度對其進(jìn)行分析,設(shè)計(jì)實(shí)現(xiàn)并優(yōu)化了基于CUDA的加速方法,通過實(shí)驗(yàn)驗(yàn)證了其加速性能。
1 相關(guān)知識介紹
1.1 基于退火算法的DNA-蛋白質(zhì)匹配算法

    給定一條DNA鏈和一條蛋白質(zhì)鏈,兩者之間的相對位置存在很多種可能。假定兩者均為剛體,DNA-蛋白質(zhì)組合體的物理能量主要受兩者相對位置的影響,組合體的物理能量越低,其穩(wěn)定性越強(qiáng)。該方法試圖尋找使得組合體最穩(wěn)定的相對位置,這一結(jié)果對生物信息學(xué)的研究具有重要意義。
    從計(jì)算的角度看,該方法的基礎(chǔ)是退火算法。為了提高搜索精度,該匹配方法通常需要隨機(jī)產(chǎn)生大量初始“種子”,為每個(gè)“種子”啟動一個(gè)基于退火算法的搜索過程,在整個(gè)解空間中尋找最穩(wěn)定的相對位置。這種匹配方法的流程如圖1所示。

    圖1中的初始值為T0,溫度T及溫度衰減周期interval為正整數(shù),溫度衰減系數(shù)為a。每當(dāng)算法所經(jīng)歷的平移和旋轉(zhuǎn)次數(shù)達(dá)到interval的非零整數(shù)倍時(shí),T衰減為原來的a倍(0<a<1),Tmin為溫度的最小值。
    DNA-蛋白質(zhì)組合體的物理能量E1、E2分別代表第n次(1&le;n&le;Smax,Smax為平移和旋轉(zhuǎn)次數(shù)的最大值)平移和旋轉(zhuǎn)前后組合體的物理能量。Emin代表通過算法得到的組合體物理能量的最小值。如果E2<E1,則接受第n次平移和旋轉(zhuǎn)的結(jié)果;否則,計(jì)算指數(shù)式exp(-(E2-E1)/T)的值,并使用C++庫函數(shù)drand48( )產(chǎn)生一個(gè)在區(qū)間[0,1]上均勻分布的隨機(jī)數(shù)。如果指數(shù)式的值小于隨機(jī)數(shù)的值,則接受第n次平移旋轉(zhuǎn)的結(jié)果,反之不接受。
    step為當(dāng)前進(jìn)行到了第幾次平移和旋轉(zhuǎn)。
1.2 CUDA編程模型及線程調(diào)度方式的特點(diǎn)
  CUDA程序通常包含CPU串行代碼和GPU并行代碼,后者被稱作CUDA程序的內(nèi)核。在執(zhí)行內(nèi)核時(shí),CUDA會產(chǎn)生大量并行工作的線程,以單指令多數(shù)據(jù)SIMD(Single Instruction Multiple Data)方式完成整個(gè)內(nèi)核的計(jì)算任務(wù)。CUDA采用網(wǎng)格(grid)和線程塊(block)來組織線程[6]。一個(gè)block的線程又被劃分為一個(gè)或多個(gè)線程組(warp)。warp是CUDA程序最基本的調(diào)度單位,屬于同一個(gè)warp的各個(gè)線程會從CUDA程序代碼段中相同的程序地址同時(shí)開始執(zhí)行,但是各線程具有獨(dú)立的當(dāng)前指令指針和寄存器狀態(tài)。因此,各線程可能會有不同的執(zhí)行路徑,例如執(zhí)行不同的分支選擇結(jié)構(gòu)代碼或循環(huán)結(jié)構(gòu)代碼[7]。warp執(zhí)行特點(diǎn)如圖2所示。

    假設(shè)一個(gè)warp中共有4個(gè)線程:線程1~線程4,它們的執(zhí)行時(shí)間分別是t1~t4,并且t3<t1<t2<t4。因?yàn)镃UDA的基本調(diào)度單位是一個(gè)完整的warp而非單個(gè)線程,所以整個(gè)warp的執(zhí)行時(shí)間取決于執(zhí)行時(shí)間最長的線程t4。其他3個(gè)線程在執(zhí)行完畢后必須等待還沒有執(zhí)行完畢的線程,因此有一段時(shí)間處于空閑狀態(tài),相應(yīng)的計(jì)算資源也就被閑置了。例如,線程3閑置的計(jì)算資源最多,其空閑時(shí)長為(t4-t3)。造成計(jì)算資源閑置的原因是同一warp中各個(gè)線程的執(zhí)行路徑不同;而CUDA采用的是SIMD并行方式,執(zhí)行路徑的不同是由每個(gè)線程所處理的數(shù)據(jù)差異造成的。因此,依照一定規(guī)則對數(shù)據(jù)進(jìn)行重新排列是減少這種計(jì)算資源閑置狀況的常用方法[8]。重排規(guī)則通常視具體應(yīng)用而定。
2 使用CUDA加速DNA-蛋白質(zhì)匹配
2.1 從計(jì)算角度分析匹配算法

    匹配方法的流程已由圖1給出,除參數(shù)初始化外,該方法可分為三部分: (1)平移、旋轉(zhuǎn)DNA和蛋白質(zhì);(2)計(jì)算DNA-蛋白質(zhì)組合體的能量;(3)后續(xù)處理。這3部分在普通CPU平臺上所耗時(shí)間依次為: 73.624 s、1 138.945 s、110.809 s(僅使用一個(gè)隨機(jī)初始種子,退火算法參數(shù)的預(yù)設(shè)值及軟硬件平臺參數(shù)指標(biāo)見本文第3部分),實(shí)驗(yàn)使用的DNA、蛋白質(zhì)結(jié)構(gòu)數(shù)據(jù)來自參考文獻(xiàn)[9]編號為2GLI的文件。其他的DNA、蛋白質(zhì)結(jié)構(gòu)數(shù)據(jù)的實(shí)驗(yàn)結(jié)果也顯示了計(jì)算能量所耗費(fèi)的時(shí)間遠(yuǎn)超過其他兩個(gè)部分。計(jì)算能量時(shí),DNA-蛋白質(zhì)組合體所處的三維空間被劃分成若干個(gè)棱長為埃米(10-10 m)級的晶格。一條DNA鏈由若干個(gè)DNA原子構(gòu)成,一條蛋白質(zhì)鏈由若干個(gè)蛋白質(zhì)原子構(gòu)成;以2GLI組合體為例,共有855個(gè)DNA原子和1 270個(gè)蛋白質(zhì)原子。每次平移和旋轉(zhuǎn)前后,每個(gè)原子所屬的晶格都可能發(fā)生改變,每個(gè)晶格所包含的原子個(gè)數(shù)也可能發(fā)生改變。Di(i=1,2,&hellip;,ND),Pj(j=1,2,&hellip;,NP)分別代表組合體中的DNA原子數(shù)量和蛋白質(zhì)原子數(shù)量。DNA原子i(i=1,2,&hellip;,ND)在三維空間中所處的晶格和相鄰的晶格共有27個(gè),統(tǒng)稱為原子i的臨近晶格(Neighboring Lattice),以pi,j(x,1,2,&hellip;,ni)代表這27個(gè)晶格中的所有蛋白質(zhì)原子,這些原子即原子i的相鄰蛋白質(zhì)原子。以di,j代表DNA原子i與蛋白質(zhì)原子jx之間的歐式距離,兩個(gè)原子之間的能量是di,j的函數(shù):E(di,j)。則組合體的總能量為:

通過累加各線程的能量部分和可以得到組合體的總能量。另外,如果B<ND,則需要把ND個(gè)DNA原子平均分成「ND/B?骎塊(最后一塊可能不足B個(gè)原子),然后,由整個(gè)block的線程依次處理各塊,算法2第3行的循環(huán)結(jié)構(gòu)即為了達(dá)到這個(gè)目的。
2.3 優(yōu)化并行算法
    考慮到本文1.2節(jié)所述warp的執(zhí)行特點(diǎn),上述并行方式存在一定的不足。算法2中第7行的循環(huán)次數(shù)取決于當(dāng)前晶格中蛋白質(zhì)原子的個(gè)數(shù),同一warp中各線程的循環(huán)次數(shù)可能會不同,如果差異過大,會造成嚴(yán)重的計(jì)算資源閑置;對所有線程而言,算法2第3行、第6行循環(huán)結(jié)構(gòu)的循環(huán)次數(shù)是確定的。
    假設(shè)DNA存儲在一個(gè)數(shù)組中,且該數(shù)組位于GPU主存(global memory)中。為了盡量減少計(jì)算資源閑置,重排DNA原子的原有次序(DNA鏈中的次序),處于同一個(gè)晶格中的DNA原子被存儲在數(shù)組的某一段連續(xù)區(qū)域內(nèi)。采用這種優(yōu)化措施是基于以下原因:(1)由式(1)可知,總能量由E(di,j)做算術(shù)加法得到,與E(di,j)的計(jì)算次序無關(guān);(2)為了提高GPU主存的帶寬利用率,同一warp中的線程通常從主存中的臨近區(qū)域讀取數(shù)據(jù),即內(nèi)存訪問對齊(coalescing)[6];(3)DNA的雙螺旋結(jié)構(gòu)是非線性的,DNA在鏈中相鄰的原子未必處于同一晶格中;(4)同一晶格中的DNA原子的臨近蛋白質(zhì)原子數(shù)量相同,重排可以減少因線程執(zhí)行路徑差異造成的計(jì)算資源閑置。重排的效果如圖3所示。

3 實(shí)驗(yàn)
3.1 實(shí)驗(yàn)平臺

    硬件平臺:Intel CoreTM2 E7500 CPU,2.93 GHz,NVIDIA GTX 660圖形處理器(單個(gè)warp包含 32個(gè)線程),CPU主存4 GB。
    軟件平臺:Linux操作系統(tǒng)內(nèi)核版本2.6.18-194.el5,gcc版本4.1.2,CUDA版本5.0。
3.2 實(shí)驗(yàn)參數(shù)設(shè)置與結(jié)果

 


    DNA-蛋白質(zhì)結(jié)構(gòu)數(shù)據(jù)編號為2GLI。CPU版程序以單線程串行方式執(zhí)行;GPU版程序block size固定為512;各block從不同的初始種子出發(fā),分別基于退火算法進(jìn)行搜索,每個(gè)block對應(yīng)一個(gè)初始種子。退火算法參數(shù):初始溫度T0=120℃,最低溫度Tmin=0.001℃,溫度衰減周期interval=800,溫度衰減系數(shù)a=0.99,最大平移旋轉(zhuǎn)次數(shù)Smax=106。
    實(shí)驗(yàn)結(jié)果如表1所示。與單線程CPU程序相比,未經(jīng)優(yōu)化的GPU程序?qū)@得最高可達(dá)8倍左右的加速比;而經(jīng)過重排優(yōu)化后,加速比在此基礎(chǔ)上進(jìn)一步顯著提升,最高可達(dá)15倍左右。

    本文針對一種典型的DNA-蛋白質(zhì)匹配算法,設(shè)計(jì)實(shí)現(xiàn)了基于CUDA的并行化方法,從線程調(diào)度的角度對該方法進(jìn)行優(yōu)化,并通過實(shí)驗(yàn)驗(yàn)證了加速性能。實(shí)際應(yīng)用往往需要為一個(gè)組合體產(chǎn)生大量的初始種子(數(shù)百個(gè)),并為每個(gè)種子開啟一個(gè)基于退火算法的搜索過程;其目的是達(dá)到較高的匹配精度。實(shí)驗(yàn)顯示,使用單個(gè)GPGPU加速,在單個(gè)block包含的線程數(shù)不變的前提下,隨著初始種子數(shù)量的增加,加速比逐漸趨于穩(wěn)定。例如,當(dāng)初始種子個(gè)數(shù)超過40后,加速比基本穩(wěn)定在15倍左右。其原因在于單個(gè)GPGPU的計(jì)算能力存在上限,當(dāng)種子足夠多時(shí),其計(jì)算能力已得到較充分利用,無法繼續(xù)提高加速比。為了滿足實(shí)際應(yīng)用的需求,下一步的工作將考慮使用基于GPGPU的集群來加速匹配算法,以進(jìn)一步提高加速比。
參考文獻(xiàn)
[1] BOURNE P E,WEISSIG H. Structural bioinformatics[M]. Hoboken: Wiley-Liss Inc, 2003.
[2] Liu Zhijie, Guo Juntao, Li Ting, et al. Structure-based prediction of transcription factor binding sites using a protein-DNA docking approach[J]. Proteins, 2008,72(4):1114-1124.
[3] 戴東波,熊赟,朱揚(yáng)勇.基于參考集索引的高效序列相似性查找算法[J].軟件學(xué)報(bào),2011(4):718-731.
[4] Zhang Zhang, Xiao Jingfa, Wu Jiayan, et al. ParaAT: A parallel tool for constructing multiple protein-coding DNA alignments[J]. Biochemical Biophysical Research Communications, 2012,419(4):779-781.
[5] 徐新海,楊學(xué)軍,林宇斐,等.一種面向CPU-GPU異構(gòu)系統(tǒng)的容錯(cuò)方法[J].軟件學(xué)報(bào),2011,22(10):2538-2552.
[6] NVIDIA Cooperation.CUDA programming guide version 5.0[EB/OL].[2013-05-15].http://docs.nvidia.com/cuda/cudac-programming-guide/.
[7] TIANYI D H,TAREK S A. Reducing branch divergence in GPU programs[A]. In Proceedings of the Fourth Workshop on General Purpose Processing on Graphics Processing Units[C]. London: ACM.2012.
[8] IMEN C, AHCENE B, NOUREDINE M. Reducing thread divergence in GPU-based b&b applied to the flow-shop problem[A]. In Proceedings of the 9th International Conference on Parallel[C]. Berlin: Springer-Verlag.2011.
[9] Rutgers and UCSD. Protein Data Bank [DB/OL].[2009-02-24].http://www.rcsb.org/pdb/explore/explore.do?structureId=2gli.
[10] GENE A. Validity of the single processor approach to achieving large-scale computing capabilities[A]. In Proceedings of the April 18-20(AFIPS&prime;67)[C]. New York:ACM.1967.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。