[發明專利]GPU發散柵欄有效
| 申請號: | 201480052983.1 | 申請日: | 2014-09-10 |
| 公開(公告)號: | CN105579967B | 公開(公告)日: | 2019-09-03 |
| 發明(設計)人: | 梅春惠;阿列克謝·弗拉狄米羅維奇·布爾德;陳林 | 申請(專利權)人: | 高通股份有限公司 |
| 主分類號: | G06F9/52 | 分類號: | G06F9/52 |
| 代理公司: | 北京律盟知識產權代理有限責任公司 11287 | 代理人: | 宋獻濤 |
| 地址: | 美國加利*** | 國省代碼: | 美國;US |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | gpu 發散 柵欄 | ||
1.一種由至少一個可編程處理器執行的方法,所述方法包括:
為多個線程束中的每一線程束確定對于每一線程束的對應線程發散柵欄指令的布爾表達式自變量是否為真;
暫停執行具有對于其所述表達式為真的所述對應線程的每一線程束;
確定對于其所述表達式為真的所述多個線程束中的每一者的活動線程的數目,其中所述活動線程已采用分支;
基于所述多個線程束中的每一者中的活動線程的所述數目將對于其所述表達式為真的所述多個線程束排序,以產生多個經排序的線程束;
基于所述多個經排序的線程束中的每一者中的活動線程的所述數目將所述多個線程束的具有更多非活動線程的第一線程束的活動線程的線程數據與所述多個線程束的具有更多活動線程的第二線程束的非活動線程的線程數據調換;以及
恢復執行具有對于其所述表達式為真的多個線程中的一者的所述多個經排序的線程束中的至少一者。
2.根據權利要求1所述的方法,所述方法進一步包括:
在恢復執行所述多個經排序的線程束中的所述至少一者之前,調換對于其所述表達式為真的所述多個線程的每線程上下文數據。
3.根據權利要求1所述的方法,其中所述至少一個可編程處理器包括圖形處理單元GPU。
4.根據權利要求1所述的方法,其中所述活動線程的所述線程數據包括所述活動線程的寄存器數據,且
其中所述非活動線程的所述線程數據包括所述非活動線程的寄存器數據。
5.根據權利要求1所述的方法,其中將所述多個線程束排序包括使用插入排序將所述多個線程束排序。
6.根據權利要求1所述的方法,其進一步包括:
為對于其所述表達式為真的所述多個線程束中的每一線程束確定多個發散柵欄中的相關聯發散柵欄;
基于每一線程束的相關聯發散柵欄將所述多個線程束中的每一線程束分組到多個壓縮池中,
其中將所述多個線程束排序包括將屬于所述多個壓縮池中的同一者的所述多個線程束排序,
其中所述第一線程束以及所述第二線程束包括屬于所述多個壓縮池中的所述同一者的線程束,且
其中恢復執行對于其所述表達式為真的所述多個線程束中的所述至少一者包括恢復執行同一個壓縮池的至少一個線程束。
7.根據權利要求6所述的方法,其進一步包括:
基于與所述多個線程束中的每一者相關聯的所述發散柵欄將前綴指派到所述多個線程束中的每一者,
其中將所述多個線程束分組到所述至少一個壓縮池中包括基于所指派的所述前綴將所述多個線程束分組到至少一個壓縮池中。
8.根據權利要求1所述的方法,其中將活動線程的所述線程數據與非活動線程的所述線程數據調換繼續進行,直到非活動線程束不可形成為止。
9.根據權利要求1所述的方法,其進一步包括:
確定所述多個線程束包含具有全部活動線程的線程束;以及恢復執行具有全部活動線程的所述線程束。
10.根據權利要求1所述的方法,其中將對于其所述表達式為真的所述多個線程束排序包括:
將所述多個線程束存儲在隊列中;
基于活動線程的所述數目將對于其所述表達式為真的所述隊列中的所述多個線程束排序;以及
將所述多個經排序的線程束存儲在所述隊列中。
11.根據權利要求1所述的方法,其進一步包括:
確定其中很可能發生發散的位置和執行于多個線程束上的核心內的將顯著影響性能的位置中的至少一者;以及
將發散柵欄指令插入到所述核心中的所述至少一個位置處,
其中所述布爾表達式與所述發散柵欄指令相關聯。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于高通股份有限公司,未經高通股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201480052983.1/1.html,轉載請聲明來源鉆瓜專利網。





