[發(fā)明專利]一種快速開發(fā)CUDA并行程序的方法在審
| 申請?zhí)枺?/td> | 201310725876.8 | 申請日: | 2013-12-25 |
| 公開(公告)號: | CN103729180A | 公開(公告)日: | 2014-04-16 |
| 發(fā)明(設(shè)計)人: | 張廣勇;盧曉偉;沈鉑;吳韶華;張清 | 申請(專利權(quán))人: | 浪潮電子信息產(chǎn)業(yè)股份有限公司 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44;G06F11/36 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 250014 山東*** | 國省代碼: | 山東;37 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 快速 開發(fā) cuda 并行 程序 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及計算機應(yīng)用技術(shù)領(lǐng)域,具體的說是一種快速開發(fā)CUDA并行程序的方法。
背景技術(shù)
自從2006年英偉達(NVIDIA)公司推出圖形處理器G80(包含了128個流式多處理器,最新的G200包含了240個多處理器)以來,圖形處理器(GPU,Graphic?Processing?Unit)在某些大規(guī)模并行計算的應(yīng)用上,相對于CPU來說性能提高可達100倍以上。尤其從2008年5月,NVIDIA公司推出用于GPU的開發(fā)平臺統(tǒng)一計算設(shè)備架構(gòu)(CUDA,Compute?Unified?Device?Architecture)軟件開發(fā)工具包(SDK,Software?Development?Kit)1.1以來,基于GPU平臺的并行計算便得到了大規(guī)模的推廣。CUDA為GPU計算提供了統(tǒng)一計算設(shè)備架構(gòu),使用戶很容易地將GPU編程融于傳統(tǒng)的編程工具(例如Visual?Studio、Gcc等)和語言(例如C、C++及FORTRAN等)中。在短短的一年以來,CUDA被應(yīng)用于加速大規(guī)模并行計算領(lǐng)域的許多方面,如在圖像處理,物理模型模擬(如計算流體力學(xué)),工程和金融模擬與分析,生物醫(yī)藥工程,數(shù)據(jù)庫及數(shù)據(jù)挖掘,搜索,排序等諸多方面都有很好的應(yīng)用,在很多應(yīng)用中取得了1至2個幾何數(shù)量級的加速。
GPU擁有更多的晶體管,用于數(shù)據(jù)處理而不是像CPU那樣去處理數(shù)據(jù)cache和指令控制,這意味著GPU具有巨大的并行計算能力。
CUDA?C作為GPU的并行編程語言。CUDA?C編程將CPU稱之為主機,將GPU作為一個協(xié)處理器稱為設(shè)備。在CUDA編程中,多個線程同時執(zhí)行在一個GPU上,并由多個線程組成一個線程塊(Block),多個線程塊又組織成網(wǎng)格(Grid);另外,每32個線程組成一個束(warp)。CUDA編程中常用到的優(yōu)化技術(shù)有合理的網(wǎng)格配置,每個SM上有足夠多的warp可隱藏訪問延遲,并進行全局存儲器的合并訪問,共享存儲器的使用,紋理存儲器和常量存儲器的使用,寄存器的合理使用等等。CUDA并行程序需要執(zhí)行成千上萬個線程,比CPU串行程序開發(fā)要復(fù)雜,設(shè)計不當(dāng)會導(dǎo)致結(jié)果的錯誤和性能下降。
可見,為實現(xiàn)CUDA并行程序開發(fā)的需求,需要一種快速、有效地實現(xiàn)CUDA并行程序開發(fā)的方法。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)任務(wù)是解決現(xiàn)有技術(shù)的不足,提供一種快速開發(fā)CUDA并行程序的方法。
本發(fā)明的技術(shù)方案是按以下方式實現(xiàn)的,該一種快速開發(fā)CUDA并行程序的方法,其具體操作過程為:
步驟一、CPU串行程序修改,即按CUDA程序格式要求對CPU串行程序的分析和修改,其中
1.1)CPU串行程序分析具體包括:利用打印時間方式測試串行程序中的熱點模塊;根據(jù)算法特點和數(shù)據(jù)特點分析熱點模塊是否可以并行,是否可以采用CUDA細粒度并行;根據(jù)可并行的模塊,找到CUDA內(nèi)核將會使用到的數(shù)組,并對數(shù)組結(jié)構(gòu)進行分析;
1.2)仿CUDA格式的CPU串行程序修改,具體包括:原程序算法修改,修改成可并行的代碼;數(shù)組修改,修改成適合CUDA并行程序格式的數(shù)組形式;
步驟二、CUDA并行程序移植,即設(shè)計CUDA并行程序把CPU程序移植到GPU平臺,以及CUDA并行程序的優(yōu)化,其中
2.1)設(shè)計CUDA并行程序具體包括:線程塊、網(wǎng)格的設(shè)計,用于數(shù)據(jù)的劃分和內(nèi)核的計算;通信函數(shù)的實現(xiàn),用于進行CPU與GPU之間的數(shù)據(jù)傳遞;內(nèi)核的設(shè)計,實現(xiàn)CUDA并行加速熱點模塊;
2.2)所述優(yōu)化CUDA并行程序,具體包括:將上述CUDA并行程序利用優(yōu)化技術(shù)進一步提高并行程序的性能,主要優(yōu)化包括2個方面:通信優(yōu)化和內(nèi)核優(yōu)化。
所述步驟1.1)的詳細過程為:
熱點測試是指根據(jù)時間的測試結(jié)果確定熱點函數(shù),作為后面移植的重點代碼模塊;
找出熱點代碼后,需要分析熱點部分的算法、數(shù)據(jù)特點,根據(jù)算法和數(shù)據(jù)的特點分析其是否可以并行,是否可以采用CUDA細粒度并行,確定其并行性;
根據(jù)對串行程序的分析,確定哪些模塊需要移植到GPU平臺上運行,對于需要運行上GPU平臺上的代碼內(nèi)的數(shù)據(jù)進行分析,確定數(shù)組在代碼中的什么位置傳遞到CUDA內(nèi)核中,傳遞的方向是CPUtoGPU還是GPUtoCPU,以及每次傳遞時的數(shù)據(jù)大小等信息。
所述步驟1.2)的詳細過程為:
對于CPU串行程序,根據(jù)并行算法的要求修改原程序,改成可并行的模式;同時需要重新設(shè)計并行算法;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于浪潮電子信息產(chǎn)業(yè)股份有限公司,未經(jīng)浪潮電子信息產(chǎn)業(yè)股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310725876.8/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:一種甘草哈密瓜果脯的制作方法
- 下一篇:一種多功能移動黑板
- 商品開發(fā)方法、商品開發(fā)系統(tǒng)、商品開發(fā)程序以及存儲商品開發(fā)程序的存儲介質(zhì)
- 開發(fā)支援裝置和開發(fā)支援程序
- 用于web開發(fā)系統(tǒng)的開發(fā)方法和web開發(fā)系統(tǒng)
- 控制裝置、開發(fā)裝置、以及開發(fā)程序
- 系統(tǒng)開發(fā)裝置、程序開發(fā)方法及開發(fā)程序
- 軟件開發(fā)平臺及其開發(fā)方法
- 菜譜開發(fā)方法和菜譜開發(fā)系統(tǒng)
- EasyApp移動開發(fā)平臺和開發(fā)方法
- 開發(fā)支援裝置、開發(fā)支援方法以及存儲介質(zhì)
- 開發(fā)輔助裝置、開發(fā)輔助系統(tǒng)和開發(fā)輔助方法





