[發明專利]一種剖析CUDA程序行為的方法有效
申請號: | 201210006272.3 | 申請日: | 2012-01-06 |
公開(公告)號: | CN102567206A | 公開(公告)日: | 2012-07-11 |
發明(設計)人: | 金海;喻之斌;程偉 | 申請(專利權)人: | 華中科技大學 |
主分類號: | G06F11/36 | 分類號: | G06F11/36 |
代理公司: | 華中科技大學專利中心 42201 | 代理人: | 曹葆青 |
地址: | 430074 湖北*** | 國省代碼: | 湖北;42 |
權利要求書: | 查看更多 | 說明書: | 查看更多 |
摘要: | |||
搜索關鍵詞: | 一種 剖析 cuda 程序 行為 方法 | ||
技術領域
本發明屬于高性能計算研究和程序行為剖析領域,具體涉及針對CUDA編程模型開發的高性能應用程序(例如在GPGPU平臺上運行的高性能數據庫和氣象預測程序)的行為剖析以及剖析工具的研究,它適用于CUDA應用程序的行為研究和剖析方法的優化。
背景技術
GPU以其理論上計算性能顯著超越同時代的多核CPU的技術優勢,已經在近幾年里進入了非圖形計算領域,而像CUDA(Computing?Unified?Device?Architecture,計算統一設備體系結構)這樣的編程模型的涌現,鼓舞了開發者利用GPU來運行高性能應用的熱情。在NVIDIA公司的官方網站上,已經有不同領域的幾百個成功的典型應用,它們獲得的加速比可以達到幾十甚至上百,并且這一情況仍在繼續發展。在產業界,也有不少公司希望把他們的應用,比如用于流媒體處理領域的H.264編解碼器,遷移到GPU架構上來,獲得更高的并行性能。
然而,目前缺乏一種優秀的剖析工具,來幫助開發者來深入理解CUDA應用程序的加速效果。NVIDIA公司開發的cudaprof工具受到硬件計數器數量的限制,提供的信息有限,而且不能擴展。而gpuocelot中的cuda程序剖析工具,主要是對源代碼的靜態剖析。我們希望開發一種CUDA程序剖析系統,來幫助開發者理解CUDA應用程序的動態行為特征,尤其是基本塊特征、線程同步特征以及相似特征等現有的CUDA剖析工具無法剖析的特征。
程序剖析一般分為靜態剖析和動態剖析兩種。靜態剖析并不真正執行程序,而是通過對序源碼進行分析,得到程序的結構信息(包括模塊調用關系圖、模塊的控制流程圖等)、逆向提取的對象模型和類關系及程序的復雜度度量等。動態剖析則要通過運行程序(實際運行或模擬運行)來得到程序的動態行為信息,包括分析指令的覆蓋率、監控內存的狀態等等。
動態剖析可以采用實際運行程序的方式,使用硬件計數器來統計程序的信息。這種方法受到了硬件計數器數量和功能的限制。也可以通過插裝技術來實現,在對源程序預處理后,插裝,匯編后,實際運行或者模擬運行。典型的插裝方法可以通過修改編譯器來實現。
發明內容
本發明的目的是設計和實現一種剖析CUDA程序行為的方法,它能夠對CUDA程序的動態行為特征尤其是基本塊特征、同步以及線程相似特征進行剖析,從而獲得CUDA程序重要而且獨特的行為特征。
本發明提供的一種剖析CUDA程序行為的方法,其特征在于,該方法包括下述步驟:
(1)使用GPU模擬器軟件,修改它的配置文件開啟指令跟蹤和程序信息調試功能后,運行CUDA程序;
(2)記錄CUDA程序運行過程中產生的線程的id信息、指令操作碼、指令依賴距離以及基本塊的塊號、平均大小、前驅、后繼結點信息;
(3)通過CUDA程序中的基本塊的前驅、后繼結點的連接信息,計算CUDA程序中的基本塊之間跳轉的概率;
(4)顯示CUDA程序的控制流-基本塊跳轉的邏輯關系,獲取基本塊的總數;
(5)針對每一個線程,搜索步驟(2)記錄的線程號和基本塊號,找出它經過的所有基本塊的塊號;
(6)針對每一個線程經過的所有基本塊,搜索步驟(2)記錄的信息里的線程id和基本塊塊號,計算出每個基本塊被該線程訪問的次數;
(7)以每個基本塊被某線程訪問的次數為數組的元素,建立該線程的基本塊向量;
(8)針對每一個線程的基本塊向量,計算出不同的線程的基本塊向量之間的距離;
(9)以不同的線程的基本塊向量之間的距離為矩陣的元素,建立線程的相似矩陣;
(10)根據與現有CUDA程序的行為特征進行比較的結果,判斷該CUDA程序是否屬于該行為特征顯著型程序;所述行為特征表現為數學統計結果,如果該結果超過預設的臨界值,則判斷該CUDA程序屬于該行為特征顯著型程序;
(11)如果不需要剖析其它的程序,結束;反之,轉入步驟(1)。
本發明方法對CUDA程序的行為進行剖析,修改模擬器軟件配置文件開啟指令跟蹤和程序信息調試功能,產生原始的程序運行數據。我們對原始的程序運行數據進行提取和過濾后,通過計算同一線程組中的線程之間的基本塊向量距離,建立同步矩陣和相似矩陣模型來分析程序的線程特征。這樣,我們提供了一種現有的CUDA剖析工具尚不具備的基本塊級別和線程級別的特征剖析方法。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華中科技大學,未經華中科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210006272.3/2.html,轉載請聲明來源鉆瓜專利網。