CUDA平臺上序列比對并行軟件的優(yōu)化
發(fā)布時間:2020-08-07 03:36
【摘要】:流應用是從科學計算、多媒體等領域中抽象出的一類應用,并且還成為了微處理器上的主要負載形式。序列比對是生物信息學的基本操作之一,具有計算密集性、并行性和局域性等特點,屬于流應用范疇。由于生物技術(shù)的發(fā)展,數(shù)據(jù)庫容量每年以指數(shù)增加,使得序列比對越來越耗時,傳統(tǒng)的計算機已經(jīng)很難滿足該應用對實時性的要求,急需要一種新的并行計算平臺去實現(xiàn)該應用。NVIDIA GPU從僅用于3D圖形渲染擴展到通用計算,而且完全支持流應用,成為了工業(yè)界最成功的流體系結(jié)構(gòu)。CUDA統(tǒng)一計算設備架構(gòu)正是推動NVIDIA GPU成為數(shù)據(jù)并行通用計算設備的主要動力。 本文的研究成果包括:(1)研究了序列比對并行軟件的平臺適應性,包括在CUDA平臺上開發(fā)序列比對軟件中的粗粒度并行性和開發(fā)該軟件的核心算法Smith-Waterman算法中的細粒度并行性。(2)從優(yōu)化計算和訪存、負載平衡、開發(fā)軟件中的粗細粒度并行性和靈活的線程組織方式四個方面優(yōu)化了序列比對并行軟件,包括根據(jù)Smith-Waterman算法運行時的行為特征優(yōu)化GPU線程的計算和訪存操作,設計了執(zhí)行算法Optimized GSW;為了實現(xiàn)GPU線程之間和CPU和GPU之間的負載平衡,分別設計了執(zhí)行算法G_Optimized GSW和CG_Optimized GSW,提高了計算資源的利用率;靈活使用劃分原理,將并行算法和CUDA平臺結(jié)合,改變了子任務的映射方式,設計了粗細粒度同時并行的算法DL_GSW,同時還指出此方法在CUDA平臺的局限性;改變GSW中呆板的線程組織方式,靈活設定grid維度和block維度,從而提高了每個GPU線程的計算能力。(3)實現(xiàn)并評測了四種優(yōu)化方案,證明了優(yōu)化方案的高效性,同時這些結(jié)論對程序員設計其他流應用在CUDA平臺上的映射方法和優(yōu)化方案有借鑒意義,對CUDA硬件架構(gòu)的發(fā)展也有參考價值。
【學位授予單位】:中國科學技術(shù)大學
【學位級別】:碩士
【學位授予年份】:2011
【分類號】:TP332
【圖文】:
為了獲得最優(yōu)的性能,我們就要研究應用在 CUDA 平臺上的優(yōu)化可以從以下幾個點著手優(yōu)化 CUDA 程序:(1)任務分解。高效的任務分解方式可以產(chǎn)生足夠多的并行性,之間獨立工作,不需要或只需極少量的數(shù)據(jù)交換和通信。(2)優(yōu)化計算和訪存。編程時盡量使用高效的算術(shù)運算指令。因理分支指令的局限性,盡量減少控制流指令的使用。CUDA 架構(gòu)中元,訪問方式和速率各不相同,設計合適的執(zhí)行算法可以最優(yōu)化(3)負載平衡。這不僅指 GPU 線程之間的負載平衡,還包括 GP的負載平衡。CUDA 架構(gòu)提供的異步執(zhí)行模式可以實現(xiàn) GPU 和 C平衡。(4)靈活的線程組織方式。CUDA 程序在 GPU 上執(zhí)行的部分稱nel 對應的線程結(jié)構(gòu)稱為 grid,grid 由多個 block 組成,kernel 執(zhí)行以單位,靈活的調(diào)整 grid 維度和 block 維度會提高 GPU 上資源占用(5)并行算法與 CUDA 平臺結(jié)合。在 CUDA 平臺上靈活使用并
圖 2.2 GT200 存儲系統(tǒng)相聯(lián),每行 4KB。紋理存儲器和常數(shù)存儲器都有相應個 TPC 中有一個 L1 紋理緩存(L1 texture cache)是 he 行 32bytes,L2 紋理緩存(L2 texture cache)存在于B、8 路組相聯(lián),每 cache 行 256bytes;每個 SM 中有一存(L1 constant cache),4 路組相聯(lián),每 cache 行 64byB 大小的 L2 指令和常數(shù)緩存(L2 Instruction&constanache 行 256bytes,另外,所有的 TPC 共享大小為 32KL3 Instruction&constant cache),8 路組相聯(lián),每 cach從全局存儲器中取指令的速度,GT200 架構(gòu)中設有三 4KB 大小的 L1 指令緩存(L1 Instruction cache),4 L2 指令緩存和 L3 指令緩存與 L2 常數(shù)緩存和 L3 常數(shù) 中有 16KB 的共享存儲器(shared memory),16384
圖 2.3 GT200 架構(gòu)個 bank 無法同時滿足多個請求,所以必須串行響應這些請求,使得多 bank 件優(yōu)勢不能發(fā)揮。還有一種局部存儲器(loacal memory),存在于顯存 device memory 中, GPU 線程都有私有的局部存儲器。當分配給線程的寄存器不夠用時,編譯在編譯時將線程多余的私有數(shù)據(jù)放置到它們的 local memory 中。通常,共享存儲器、寄存器、各級 cache 被稱為片上存儲器(on-chip memory局存儲器、常數(shù)存儲器、紋理存儲器和局部存儲器被稱為片外存儲器(off-chemory)。片上存儲器有較高的訪問速率,而訪問片外存儲器有很長的延遲。.2.2 GPU 線程和多級存儲器的關(guān)系程序員將應用中可并行執(zhí)行的部分寫成 kernel 函數(shù)并由 GPU 來執(zhí)行。為到通過計算隱藏訪存延遲的目的,CUDA 架構(gòu)支持大量線程活躍在流處理陣。執(zhí)行一個kernel函數(shù)的所有線程被組織成一個grid,一個grid中有很多bloc
本文編號:2783417
【學位授予單位】:中國科學技術(shù)大學
【學位級別】:碩士
【學位授予年份】:2011
【分類號】:TP332
【圖文】:
為了獲得最優(yōu)的性能,我們就要研究應用在 CUDA 平臺上的優(yōu)化可以從以下幾個點著手優(yōu)化 CUDA 程序:(1)任務分解。高效的任務分解方式可以產(chǎn)生足夠多的并行性,之間獨立工作,不需要或只需極少量的數(shù)據(jù)交換和通信。(2)優(yōu)化計算和訪存。編程時盡量使用高效的算術(shù)運算指令。因理分支指令的局限性,盡量減少控制流指令的使用。CUDA 架構(gòu)中元,訪問方式和速率各不相同,設計合適的執(zhí)行算法可以最優(yōu)化(3)負載平衡。這不僅指 GPU 線程之間的負載平衡,還包括 GP的負載平衡。CUDA 架構(gòu)提供的異步執(zhí)行模式可以實現(xiàn) GPU 和 C平衡。(4)靈活的線程組織方式。CUDA 程序在 GPU 上執(zhí)行的部分稱nel 對應的線程結(jié)構(gòu)稱為 grid,grid 由多個 block 組成,kernel 執(zhí)行以單位,靈活的調(diào)整 grid 維度和 block 維度會提高 GPU 上資源占用(5)并行算法與 CUDA 平臺結(jié)合。在 CUDA 平臺上靈活使用并
圖 2.2 GT200 存儲系統(tǒng)相聯(lián),每行 4KB。紋理存儲器和常數(shù)存儲器都有相應個 TPC 中有一個 L1 紋理緩存(L1 texture cache)是 he 行 32bytes,L2 紋理緩存(L2 texture cache)存在于B、8 路組相聯(lián),每 cache 行 256bytes;每個 SM 中有一存(L1 constant cache),4 路組相聯(lián),每 cache 行 64byB 大小的 L2 指令和常數(shù)緩存(L2 Instruction&constanache 行 256bytes,另外,所有的 TPC 共享大小為 32KL3 Instruction&constant cache),8 路組相聯(lián),每 cach從全局存儲器中取指令的速度,GT200 架構(gòu)中設有三 4KB 大小的 L1 指令緩存(L1 Instruction cache),4 L2 指令緩存和 L3 指令緩存與 L2 常數(shù)緩存和 L3 常數(shù) 中有 16KB 的共享存儲器(shared memory),16384
圖 2.3 GT200 架構(gòu)個 bank 無法同時滿足多個請求,所以必須串行響應這些請求,使得多 bank 件優(yōu)勢不能發(fā)揮。還有一種局部存儲器(loacal memory),存在于顯存 device memory 中, GPU 線程都有私有的局部存儲器。當分配給線程的寄存器不夠用時,編譯在編譯時將線程多余的私有數(shù)據(jù)放置到它們的 local memory 中。通常,共享存儲器、寄存器、各級 cache 被稱為片上存儲器(on-chip memory局存儲器、常數(shù)存儲器、紋理存儲器和局部存儲器被稱為片外存儲器(off-chemory)。片上存儲器有較高的訪問速率,而訪問片外存儲器有很長的延遲。.2.2 GPU 線程和多級存儲器的關(guān)系程序員將應用中可并行執(zhí)行的部分寫成 kernel 函數(shù)并由 GPU 來執(zhí)行。為到通過計算隱藏訪存延遲的目的,CUDA 架構(gòu)支持大量線程活躍在流處理陣。執(zhí)行一個kernel函數(shù)的所有線程被組織成一個grid,一個grid中有很多bloc
【引證文獻】
相關(guān)碩士學位論文 前1條
1 林樂森;基于OpenCL的AES算法并行性分析及加速方案[D];吉林大學;2012年
本文編號:2783417
本文鏈接:http://sikaile.net/kejilunwen/jisuanjikexuelunwen/2783417.html
最近更新
教材專著