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