• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種基于CUDA并行環(huán)境的GPU程序優(yōu)化方法技術(shù)

    技術(shù)編號:8452783 閱讀:417 留言:0更新日期:2013-03-21 13:17
    本發(fā)明專利技術(shù)涉及一種基于CUDA并行環(huán)境的GPU并行程序優(yōu)化方法,定義了GPU程序內(nèi)核的性能瓶頸,根據(jù)級別包括全局儲存器訪問延遲、共享存儲器訪問沖突、指令流水線沖突、指令瓶頸。并為每個性能瓶頸提出實際可操作的判定標準和瓶頸優(yōu)化解決方法:全局儲存器訪問延遲優(yōu)化方法:轉(zhuǎn)存共享存儲器、訪問歸并、提高線程級并行度、提高指令級并行度;共享存儲器訪問沖突和指令流水線沖突優(yōu)化方法:解決bank?conflict,轉(zhuǎn)存寄存器、提高線程級并行度、提高指令級并行度;指令瓶頸:指令替換和減少分支。本發(fā)明專利技術(shù)為CUDA程序編寫和優(yōu)化提供依據(jù),幫助程序編寫者方便得找到CUDA程序中的性能瓶頸,并針對性能瓶頸做出高效有針對性的優(yōu)化,使得CUDA程序可以更大限度的發(fā)揮GPU設(shè)備的計算能力。

    【技術(shù)實現(xiàn)步驟摘要】

    本專利技術(shù)涉及一種圖形、動畫、科學(xué)計算、地質(zhì)、生物、物理模擬等諸多領(lǐng)域的并行計算與數(shù)據(jù)處理方法,特別涉及一種基于CUDA架構(gòu)的GPU內(nèi)核程序優(yōu)化方法,屬于高性能計算領(lǐng)域。
    技術(shù)介紹
    CUDA 架構(gòu)(Compute Unified Device Architecture)是面向 GPU (Graphic Processing Unit)圖形處理器等設(shè)備的并行計算架構(gòu),是一套在GPU上完成高性能計算的解決方案,在CUDA環(huán)境上并行編程的接口 API有CUDA C,C++,OpenCL, RapidMind等。CUDA C是基于CUDA架構(gòu)的C語言擴展,程序編寫者可以方便的利用這套API進行GPU編程。而程序的效果實現(xiàn)則依賴于程序員編寫性能高效、功能穩(wěn)定和可移植性強的CUDA內(nèi)核程序, CUDA內(nèi)核程序又被稱為kernel函數(shù),是在GPU上運行的并行計算函數(shù),內(nèi)核程序的性能直接反映了程序?qū)υO(shè)備計算資源的利用情況。目前針對CUDA內(nèi)核程序的優(yōu)化存在一些較為成熟的技術(shù),本專利技術(shù)重點整理了以下內(nèi)容
    技術(shù)介紹
    一 CUDA的技術(shù)手冊(CUDA的技術(shù)手冊以NVIDIA. CUDA C Best Practices Guide. January 2012.為主)上公布了對存儲器訪問、處理器資源利用以及指令優(yōu)化的一些技術(shù)。在這套手冊中,強調(diào)了兩部分內(nèi)容一是通過提高以SM設(shè)備占有率為指標的程序并行度來掩蓋指令執(zhí)行時遇到的延遲問題;二是對以全局存儲器訪問為代表的存儲器訪問模式進行較深入的優(yōu)化。但是,這些優(yōu)化技術(shù)的不足在于過多的考慮設(shè)備占有率對程序性能的影響,其提出的程序并行度也主要是線程級并行(TLP =Thread Level Parallelism),而沒有提及指令級并行(ILP !Instruction Level Parallelism)這一優(yōu)化 CUDA程序性能的重要技術(shù);同時,CUDA技術(shù)手冊在考慮程序延遲時輕視了全局存儲器延遲外的其它延遲,這些延遲成為程序進一步優(yōu)化工作中的重點。技術(shù)背景二 =NVIDIA公司的王鵬博士提出了一套較為完整的CUDA程序優(yōu)化流程, (Peng Wang. CUDA Optimization.1n:NVIDIA GPU Technology Conference, 2010.)將性能瓶頸分為存儲器瓶頸、指令瓶頸和延遲瓶頸,并給出了具體的瓶頸解決方法。但是,這套優(yōu)化流程所給出的瓶頸判定標準不夠清晰明確,如指令瓶頸的判定僅有兩條1.計算密集型程序很容易成為指令瓶頸;2.將指令優(yōu)化放在存儲器優(yōu)化和延遲優(yōu)化之后等(具體可參見文獻 Peng Wang. CUDA Optimization.1n:NVIDIA GPU Technology Conference, 2010.);同樣,在這套優(yōu)化流程中也沒有提到ILP優(yōu)化和非全局存儲器訪問的延遲問題。
    技術(shù)介紹
    三伯克利大學(xué)的Volkov在2010年GTC大會上對CUDA程序在低占有率下使用指令級并行的優(yōu)化方案進行了論述Vasily Volkov,Better Performance at Lower Occupancy, GTC 2010,UC Berkeley, September 22,2010,提出了可以在較低的占有率下進行CUDA程序優(yōu)化,并給出具有優(yōu)化效果的程序樣例。Volkov在之后的另外兩篇文獻 Vasily Volkov,Use registers and multiple outputs per thread on GPU,UC Berkeley,PMAAj 10, June30,2010 和 Vasily Volkov, Unrolling parallel loops, UC Berkeley, tutorial talk SCI I, November 14, 2011中對指令并行如何操作做了進一步的解釋。但是, 這些文獻中都沒有對指令集并行優(yōu)化的場合和條件做出限定,這一技術(shù)與實際應(yīng)用仍有距離。本專利技術(shù)認為指令級并行并不適合所有的代碼,并首次對指令并行使用的場合和條件做出嚴格限定。上述這些公開的優(yōu)化技術(shù)都只局限于CUDA程序優(yōu)化的幾個方面,不足以充分發(fā)揮GPU設(shè)備的運算能力,實際達到的優(yōu)化效果也不夠完善;同時,這些文獻或作者往往沒有給出技術(shù)的理論闡述,對優(yōu)化技術(shù)的使用場合和條件解釋的不清楚,因此很難達到實際可操作的標準。在實際編寫的大量CUDA程序中,性能的優(yōu)化工作往往是不夠的,要求更多的程序員可以快捷的掌握CUDA程序的編寫和優(yōu)化技術(shù)而不止是讓技術(shù)停留在研究層面。因此,提出一套完整的實際可操作的,具有較強通用性和優(yōu)化效果的技術(shù)流程是本領(lǐng)域亟待解決的技術(shù)問題。
    技術(shù)實現(xiàn)思路
    針對目前已公開的優(yōu)化技術(shù)現(xiàn)狀,本專利技術(shù)提供了一種實際可操作的CUDA內(nèi)核程序性能優(yōu)化解決方案,從性能瓶頸的判定到優(yōu)化方法的選取,再到優(yōu)技術(shù)的具體實施給出詳細方案和步驟,為CUDA程序編寫和優(yōu)化提供依據(jù),幫助程序編寫者方便得找到CUDA程序中的性能瓶頸,并針對性能瓶頸做出高效有針對性的優(yōu)化,使得CUDA程序可以更大限度的發(fā)揮GPU設(shè)備的計算能力。本專利技術(shù)所使用的CUDA架構(gòu)軟硬件特性資料主要引自本領(lǐng)域較權(quán)威的技術(shù)指南 《GPU高性能運算之CUDA》(張舒,褚艷利等編著,中國水利水電出版社2009年)以及NVIDIA 公司提高的 CUDA C 編程手冊(NVIDIA. CUDA C Programming Guide. January 2012·)。目前市場上支持CUDA的GPU設(shè)備規(guī)格不盡相同,本專利技術(shù)以設(shè)備計算能力設(shè)備計算能力是衡量 GPU設(shè)備對CUDA支持能力的指標,較高級的版本會繼承發(fā)展較低級版本的全部特性并增添新的功能2. I的GF114子架構(gòu),GF114架構(gòu)是Fermi 2. O架構(gòu)的典型代表,該架構(gòu)的GPU是目前硬件市場的主流產(chǎn)品。在本專利技術(shù)中以該設(shè)備為例具體說明,并且盡可能的兼顧其它版本的計算能力。本專利技術(shù)技術(shù)方案如下一種基于CUDA并行環(huán)境的GPU程序優(yōu)化方法,其步驟包括I)根據(jù)CUDA上的程序分析工具對GPU程序進行檢測,得到程序需求占有率并判斷此時程序是否存在全局存儲器訪問瓶頸,同時對所述全局存儲器訪問瓶頸進行消除,進入步驟2);2)根據(jù)共享存儲器中bank-conflicts訪問沖突的數(shù)目判斷所述步驟I)的GPU程序中是否存在共享存儲器訪問瓶頸,同時消除所述共享存儲器訪問瓶頸和新生成的全局存儲器訪問瓶頸,進入步驟3);3)使用CUDA的程序分析工具在所述步驟2)的GPU程序提取出性能參數(shù),綜合分析判斷是否存在流水線指令執(zhí)行依賴瓶頸并消除該指令流水線沖突,得到實際IPC可達到指令瓶頸IPC的GPU程序進入步驟4);4)在所述步驟3)中若GPU程序?qū)嶋HIPC達到指令瓶頸IPC,則進行指令瓶頸優(yōu)化5處理;5)重復(fù)遍歷以上步驟I) 一4),直至所述GPU程序不存在上述步驟2)-4)中的任意一項瓶頸并且程序性能提升滿足用戶需求,完成GPU程序優(yōu)化過程。所述程序需求占有率¢1=^/48=0^/1^)=1=1748,其中Na為active warp數(shù)目,T為一次訪問存儲延遲,NnZNi為訪問存儲請求次數(shù)與指令數(shù)目之比。所述全局存儲器訪問瓶頸判斷方法是若實際占本文檔來自技高網(wǎng)
    ...

    【技術(shù)保護點】
    一種基于CUDA并行環(huán)境的GPU程序優(yōu)化方法,其步驟包括:1)根據(jù)CUDA上的程序分析工具對GPU程序進行檢測,得到程序需求占有率并判斷此時程序是否存在全局存儲器訪問瓶頸,同時對所述全局存儲器訪問瓶頸進行消除,進入步驟2);2)根據(jù)共享存儲器中bank?conflicts訪問沖突的數(shù)目判斷所述步驟1)的GPU程序中是否存在共享存儲器訪問瓶頸,同時消除所述共享存儲器訪問瓶頸和新生成的全局存儲器訪問瓶頸,進入步驟3);3)使用CUDA的程序分析工具在所述步驟2)的GPU程序提取出性能參數(shù),判斷是否存在流水線指令執(zhí)行依賴瓶頸并消除該指令流水線沖突,得到實際IPC可達到指令瓶頸IPC的GPU程序進入步驟4);4)在所述步驟3)中若GPU程序?qū)嶋HIPC達到指令瓶頸IPC,則進行指令瓶頸優(yōu)化處理;5)重復(fù)遍歷以上步驟1)—4),直至所述GPU程序不存在上述步驟2)?4)中的任意一項瓶頸,完成GPU程序優(yōu)化。

    【技術(shù)特征摘要】

    【專利技術(shù)屬性】
    技術(shù)研發(fā)人員:孟洋李勝汪國平
    申請(專利權(quán))人:北京大學(xué)
    類型:發(fā)明
    國別省市:

    網(wǎng)友詢問留言 已有0條評論
    • 還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 亚洲AV无码欧洲AV无码网站| 无码av中文一区二区三区桃花岛| 精品人妻系列无码一区二区三区| 无码人妻AV免费一区二区三区| 中文无码不卡的岛国片| 中文字幕无码乱码人妻系列蜜桃| 亚洲aⅴ无码专区在线观看| 中文字幕无码人妻AAA片| 亚洲AV无码XXX麻豆艾秋| 在线观看片免费人成视频无码| 无码国产精品一区二区免费模式| 国产精品午夜无码体验区| 亚洲AV无码久久久久网站蜜桃| 午夜无码性爽快影院6080| 无码中文字幕乱在线观看| 精品无码人妻一区二区三区18| 直接看的成人无码视频网站| 狠狠躁狠狠爱免费视频无码| 国产精品无码AV天天爽播放器| 人妻无码αv中文字幕久久| 亚洲AV永久纯肉无码精品动漫| 午夜无码人妻av大片色欲| 亚洲AV无码乱码麻豆精品国产| 无码中文字幕乱在线观看| 日韩人妻无码精品系列| 一本一道AV无码中文字幕| 久久亚洲精品无码网站| 亚洲AV无码一区二区一二区| 日韩AV无码久久一区二区| 西西午夜无码大胆啪啪国模| 综合无码一区二区三区| 国产高清无码视频| 久久精品无码免费不卡| 潮喷失禁大喷水aⅴ无码| 亚洲不卡无码av中文字幕| 久久久人妻精品无码一区| 一道久在线无码加勒比| 亚洲无码高清在线观看 | 久久无码人妻一区二区三区| 曰批全过程免费视频在线观看无码| 国产精品无码不卡一区二区三区|