[發明專利]一種通過死代碼移除來加快GPU運行速度的方法有效
| 申請號: | 201310020549.2 | 申請日: | 2013-01-21 |
| 公開(公告)號: | CN103049304A | 公開(公告)日: | 2013-04-17 |
| 發明(設計)人: | 遲利華;劉杰;胡慶豐;晏益慧;龔春葉;甘新標;徐涵;蔣杰;楊博 | 申請(專利權)人: | 中國人民解放軍國防科學技術大學 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45 |
| 代理公司: | 國防科技大學專利服務中心 43202 | 代理人: | 郭敏 |
| 地址: | 410073 湖*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 通過 代碼 加快 gpu 運行 速度 方法 | ||
1.一種通過死代碼移除來加快GPU運行速度的方法,其特征在于包括以下步驟:
第一步、為大規模GPU核心程序中的所有函數構建狀態檢測表,狀態檢測表的表項數為GPU核心程序中函數的個數;狀態檢測表共包含六個字段,分別為:函數編號ID、函數名稱Name、調用標記Callee、靜態分析標記Static、動態執行標記Dynamic和刪除標記Del;函數編號ID為函數的全局唯一標記,函數名稱Name表示函數的名字;調用標記Callee表示函數是否被程序調用,調用標記Callee為true表示函數被程序調用過,Callee為false表示函數沒有被程序調用過;靜態分析標記Static表示對函數模塊進行靜態分析后判斷其是否會執行,Static為true表示函數在程序執行時可能會運行,Static為false表示函數在程序執行時不會運行;動態執行標記Dynamic表示程序運行時函數是否被執行,Dynamic為true表明函數經在程序運行時運行過,Dynamic為false表明函數在程序運行時沒有運行過;刪除標記Del表示函數代碼段能否被刪除,Del為true表明函數代碼段是死代碼應該刪除,若Del為false表明函數代碼段不是死代碼不應刪除;
第二步、記錄函數基本信息:掃描程序代碼,從0開始給GPU核心程序中每個函數代碼段分配唯一函數編號并將分配的函數編號寫入狀態檢測表的ID字段中,并將函數編號為q的函數名記錄于ID字段為q的狀態檢測表的表項的Name字段中;對于有N個函數的GPU核心程序,則狀態檢測表有N個表項,N個表項的ID字段為0~N-1,0≤q≤N-1;
第三步、初始化狀態檢測表:初始化狀態檢測表中所有表項的函數的調用標記Callee為true;;初始化所有表項的函數的靜態分析標記Static為true;初始化所有表項的函數的動態執行標記Dynamic為true;初始化所有表項的函數的刪除標記Del為true;
第四步、對GPU程序源碼進行靜態分析,通過靜態分析結果更新狀態檢測表各函數檢測表字段的狀態,具體方法如下:
4.1獲取狀態檢測表的表項總數N,初始化q=0;
4.2如果狀態檢測表表項q對應的函數不會被調用,則置該表項對應的字段Callee為false,否則置為true;
4.3如果狀態檢測表表項q對應的字段Callee為true,則置該表項對應的字段Static為true,否則置字段Static為false;
4.4更新q=q+1,如果q<N,轉4.2;否則,轉第五步。
第五步、運行GPU核心程序,記錄GPU核心程序運行時信息,更新狀態檢測表各函數檢測表字段的狀態,具體方法如下:
5.1獲取狀態檢測表的表項總數N,初始化q=0;
5.2如果狀態檢測表表項q對應的函數不會被調用,則置該表項對應的字段Callee為false,否則置為true;
5.3如果表項q對應的字段Static和字段Dynamic均為false,則置該表項對應字段Del為true,否則置字段Del為false;
5.4更新q=q+1,如果q<N,轉5.2;否則,轉第六步;
第六步、死代碼標識:定義集合S0,S1,…Si…SM-1均為空集,將狀態檢測表中表項字段Del為true對應的第一個函數并入集合S0,將狀態檢測表中表項字段Del為true對應的第二個函數并入集合S1,…,將狀態檢測表中表項字段Del為true對應的第M個函數并入集合SM-1,其中,0≤i<M≤N,M為標識為死代碼的函數個數;
第七步、死代碼最終確認,具體方法如下:
7.1初始化死代碼函數集合為空定義變量j=0;
7.2使用GPU核心程序對應的語言注釋標識將Sj對應的函數代碼段注釋,使得該函數代碼段不運行;
7.3運行經將Sj注釋后的程序,比較運行結果,若結果正確,更新死代碼集合D=D∪Sj;否則,轉7.4;
7.4刪除當前Sj對應的函數代碼段的注釋;
7.5j=j+1;
7.6如果j<M,轉7.2;否則,轉第八步;
第八步、根據最終得到的死代碼集合D,進行死代碼刪除,具體流程如下:
8.1獲取死代碼集合D的元素個數P,0≤P≤M≤N,定義變量k=0;
8.2刪除死代碼集合D中第k個元素對應的函數代碼段;
8.3更新k=k+1,如果k<P,轉8.2;否則,轉第九步;
第九步、優化結束。
2.如權利要求1所述的一種通過死代碼移除來加快GPU運行速度的方法,其特征在于刪除死代碼集合D中第k個元素對應的函數代碼段的方法為:將狀態檢測表字段Del為true的函數代碼段進行預編譯處理,即在該函數代碼段前后分別添加預編譯代碼模式將該函數注釋。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍國防科學技術大學,未經中國人民解放軍國防科學技術大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310020549.2/1.html,轉載請聲明來源鉆瓜專利網。





