System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及電數字數據處理,尤其涉及基于線程鎖的gpgpu線程塊同步方法、設備及介質。
技術介紹
1、目前,通用圖形處理單元(general-purpose?computing?on?graphicsprocessing?units,gpgpu)技術是現代計算領域中的一項重要創新,巧妙地利用了圖形處理單元(gpu)強大的并行計算能力,從傳統的圖形渲染擴展到廣泛的通用計算任務,如科學計算、數據分析、深度學習等。
2、在gpgpu編程中,線程塊間的同步是一個比較復雜的問題,因為gpgpu架構通常不支持線程塊之間的直接同步,因此線程塊間的同步通常需要借助全局內存來實現,保證在屏障之前的內存操作完成后,才能執行屏障之后的內存操作。全局內存屏障的使用雖然解決了線程塊間的同步問題,但在一定程度上阻塞了線程塊內不存在數據依賴關系的線程的執行,降低了gpgpu的線程并行度,造成資源的浪費,降低了運算效率。
技術實現思路
1、本申請實施例提供了基于線程鎖的gpgpu線程塊同步方法、設備及介質,用以解決上述技術問題。
2、一方面,本申請實施例提供了基于線程鎖的gpgpu線程塊同步方法,應用于基于線程鎖的gpgpu線程塊同步系統,所述系統包括:host主機端、gpgpu設備端,所述gpgpu設備端包括線程塊調度模塊、流多處理器和線程鎖控制模塊,包括:
3、所述線程塊調度模塊為各流多處理器分配線程塊,并計算對應線程起始id,以維護所述線程塊對應的線程鎖表;
4
5、查詢對應線程鎖表中與所述內存訪問請求存在依賴關系的線程的線程鎖狀態,以將所述線程鎖狀態添加至所述鎖隊列對應的條目狀態;
6、在所述鎖隊列中條目與線程束存在依賴關系的所有線程的條目狀態均處于解鎖的情況下,將所述內存訪問請求從所述鎖隊列中出列,并根據所述內存訪問請求進行內存訪問,實現gpgpu線程塊的同步。
7、在本申請的一種實現方式中,所述線程塊調度模塊包括線程塊分配模塊、索引計算模塊和線程鎖控制模塊;
8、所述線程塊調度模塊為各流多處理器分配線程塊,并計算對應線程起始id,以維護所述線程塊對應的線程鎖表,具體包括:
9、所述線程塊調度模塊的線程塊分配模塊根據預設的線程塊調度策略,將所有線程塊分配至各流多處理器,并對待處理的線程塊內各線程添加線程鎖;
10、通過所述索引計算模塊計算所述線程塊對應的線程起始id,并在計算完成后向所述線程塊調度模塊返回計算完成信號,以使所述線程塊分配模塊向所述流多處理器分配下一待處理的線程塊;
11、將所述線程起始id發送至所述線程鎖控制模塊,以對所述線程塊對應的線程鎖表進行維護。
12、在本申請的一種實現方式中,通過所述索引計算模塊計算所述線程塊對應的線程起始id,具體包括:
13、確定所述線程塊對應的線程網格信息,并根據所述線程網格信息,計算所述線程塊的線程起始id;其中,所述線程網格信息包括:線程網格坐標、線程網格維度、線程網格大小;
14、通過以下公式計算線程起始id:
15、
16、其中,表示線程起始id,表示線程網格橫坐標,表示線程網格縱坐標,表示線程網格豎坐標,grid.x表示線程網格橫向維度,grid.y表示線程網格縱向維度,grid.z表示線程網格第三維度,表示線程塊大小的長度,表示線程塊大小的寬度。
17、在本申請的一種實現方式中,對所述線程塊對應的線程鎖表進行維護,具體包括:
18、所述線程鎖控制模塊對所述線程塊對應的線程鎖表進行維護,以將所述線程塊對應線程鎖表的第一條目索引映射為所述線程塊的線程起始id;
19、將所述線程塊中除所述第一條目索引之外的條目索引進行累加,并將所有的條目狀態設置為鎖定。
20、在本申請的一種實現方式中,所述線程塊調度模塊還包括內存訪問控制模塊;
21、在流多處理器的線程束具有訪存需求的情況下,分析內存訪問請求是否與當前占用程塊中的線程存在依賴關系,若是,則將存在依賴關系的內存訪問請求添加至鎖隊列,具體包括:
22、在流多處理器的線程束具有訪存需求的情況下,通過內存訪問控制模塊接收內存訪問請求,并對所述內存訪問請求進行依賴分析,以確定所述內存訪問請求對應的線程是否與當前占用線程塊中的線程存在依賴關系;
23、若否,則根據所述內存訪問請求進行內存訪問,若是,則將所述內存訪問請求添加至線程鎖控制模塊的鎖隊列中進行排隊。
24、在本申請的一種實現方式中,線程鎖控制模塊維護若干個線程鎖表和一個鎖隊列,線程鎖表數量與當前占用線程塊數量相同,每個當前占用線程塊對應一個線程鎖表;
25、查詢對應線程鎖表中與所述內存訪問請求存在依賴關系的線程的線程鎖狀態,以將所述線程鎖狀態添加至所述鎖隊列對應的條目狀態,具體包括:
26、通過線程鎖控制模塊確定所述線程塊對應的線程鎖表,并在所述對應的線程鎖表中查詢與所述內存訪問請求存在依賴關系的線程的線程鎖狀態;其中,所述線程鎖狀態包括鎖定狀態和解鎖狀態;
27、在所述線程鎖控制模塊的鎖隊列中,確定與所述線程塊存在依賴關系的線程對應的條目狀態位置,并將對應線程的線程鎖狀態添加至所述條目狀態位置。
28、在本申請的一種實現方式中,將所述線程鎖狀態添加至所述鎖隊列對應的條目狀態之后,所述方法還包括:
29、基于所述鎖隊列,對存在依賴關系的線程束進行線程鎖狀態監測,并通過維護監測過程,獲取對應的監測結果;
30、在所述監測結果中存在線程鎖狀態變化的情況下,對所述鎖隊列中存在變化的條目狀態進行更新。
31、在本申請的一種實現方式中,所述gpgpu設備端還包括:l2緩存;
32、根據所述內存訪問請求進行內存訪問,實現gpgpu線程塊的同步,具體包括:
33、將所述內存訪問請求轉發至所述l2緩存進行內存訪問,并將訪問結果返回至對應的流多處理器,以實現gpgpu線程塊的同步。
34、另一方面,本申請實施例還提供了基于線程鎖的gpgpu線程塊同步設備,應用于基于線程鎖的gpgpu線程塊同步系統,所述系統包括:host主機端、gpgpu設備端,所述gpgpu設備端包括線程塊調度模塊、流多處理器和線程鎖控制模塊,所述設備包括:
35、至少一個處理器;
36、以及,與所述至少一個處理器通信連接的存儲器;
37、其中,所述存儲器存儲有可被所述至少一個處理器執行的指令,所述指令被所述至少一個處理器執行,以使所述至少一個處理器能夠執行如上述的基于線程鎖的gpgpu線程塊同步方法。
38、另一方面,本申請實施例還本文檔來自技高網...
【技術保護點】
1.基于線程鎖的GPGPU線程塊同步方法,其特征在于,應用于基于線程鎖的GPGPU線程塊同步系統,所述系統包括:Host主機端、GPGPU設備端,所述GPGPU設備端包括線程塊調度模塊、流多處理器和線程鎖控制模塊,所述方法包括:
2.根據權利要求1所述的基于線程鎖的GPGPU線程塊同步方法,其特征在于,所述線程塊調度模塊包括線程塊分配模塊、索引計算模塊和線程鎖控制模塊;
3.根據權利要求2所述的基于線程鎖的GPGPU線程塊同步方法,其特征在于,通過所述索引計算模塊計算所述線程塊對應的線程起始ID,具體包括:
4.根據權利要求2所述的基于線程鎖的GPGPU線程塊同步方法,其特征在于,對所述線程塊對應的線程鎖表進行維護,具體包括:
5.根據權利要求1所述的基于線程鎖的GPGPU線程塊同步方法,其特征在于,所述線程塊調度模塊還包括內存訪問控制模塊;
6.根據權利要求1所述的基于線程鎖的GPGPU線程塊同步方法,其特征在于,線程鎖控制模塊維護若干個線程鎖表和一個鎖隊列,線程鎖表數量與當前占用線程塊數量相同,每個當前占用線程塊對應
7.根據權利要求1所述的基于線程鎖的GPGPU線程塊同步方法,其特征在于,將所述線程鎖狀態添加至所述鎖隊列對應的條目狀態之后,所述方法還包括:
8.根據權利要求1所述的基于線程鎖的GPGPU線程塊同步方法,其特征在于,所述GPGPU設備端還包括:L2緩存;
9.基于線程鎖的GPGPU線程塊同步設備,其特征在于,應用于基于線程鎖的GPGPU線程塊同步系統,所述系統包括:Host主機端、GPGPU設備端,所述GPGPU設備端包括線程塊調度模塊、流多處理器和線程鎖控制模塊,所述設備包括:
10.一種非易失性計算機存儲介質,存儲有計算機可執行指令,其特征在于,應用于基于線程鎖的GPGPU線程塊同步系統,所述系統包括:Host主機端、GPGPU設備端,所述GPGPU設備端包括線程塊調度模塊、流多處理器和線程鎖控制模塊,所述計算機可執行指令被執行時,實現如權利要求1-8任一項所述的基于線程鎖的GPGPU線程塊同步方法。
...【技術特征摘要】
1.基于線程鎖的gpgpu線程塊同步方法,其特征在于,應用于基于線程鎖的gpgpu線程塊同步系統,所述系統包括:host主機端、gpgpu設備端,所述gpgpu設備端包括線程塊調度模塊、流多處理器和線程鎖控制模塊,所述方法包括:
2.根據權利要求1所述的基于線程鎖的gpgpu線程塊同步方法,其特征在于,所述線程塊調度模塊包括線程塊分配模塊、索引計算模塊和線程鎖控制模塊;
3.根據權利要求2所述的基于線程鎖的gpgpu線程塊同步方法,其特征在于,通過所述索引計算模塊計算所述線程塊對應的線程起始id,具體包括:
4.根據權利要求2所述的基于線程鎖的gpgpu線程塊同步方法,其特征在于,對所述線程塊對應的線程鎖表進行維護,具體包括:
5.根據權利要求1所述的基于線程鎖的gpgpu線程塊同步方法,其特征在于,所述線程塊調度模塊還包括內存訪問控制模塊;
6.根據權利要求1所述的基于線程鎖的gpgpu線程塊同步方法,其特征在于,線程鎖控制模塊維護若干個線程鎖表和一個鎖隊列,線程...
【專利技術屬性】
技術研發人員:于帆,趙鑫鑫,姜凱,王雄儒,
申請(專利權)人:山東浪潮科學研究院有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。