日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

一種支持優(yōu)先級(jí)的GPU線程束的同步方法及系統(tǒng)與流程

文檔序號(hào):39723675發(fā)布日期:2024-10-22 13:19閱讀:1來源:國知局
一種支持優(yōu)先級(jí)的GPU線程束的同步方法及系統(tǒng)與流程

本發(fā)明涉及異構(gòu)計(jì)算,尤其涉及一種支持優(yōu)先級(jí)的gpu線程束的同步方法及系統(tǒng)。


背景技術(shù):

1、在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,圖形處理單元(gpu)作為加速計(jì)算的關(guān)鍵組件,廣泛應(yīng)用于圖形渲染、科學(xué)計(jì)算、人工智能和大數(shù)據(jù)處理等領(lǐng)域。隨著gpu計(jì)算任務(wù)的復(fù)雜性和規(guī)模的不斷增加,如何高效地管理和調(diào)度gpu線程成為了一個(gè)重要問題。在gpu中,為了提高計(jì)算效率和資源利用率,將線程劃分為4個(gè)層次:?最底層為gpu線程(thread);較高一層為線程束(warp/wavefront),由一定數(shù)量的gpu線程組成(通常為32個(gè))。多個(gè)線程束進(jìn)一步組成線程塊;多個(gè)線程塊進(jìn)一步組成網(wǎng)格(grid)。其中,一個(gè)線程束由一組同時(shí)執(zhí)行的線程組成,這些線程在同一個(gè)時(shí)鐘周期內(nèi)執(zhí)行相同的指令。

2、在同一個(gè)線程塊內(nèi),不同的線程束之間可能會(huì)為爭奪某些公共存儲(chǔ)資源而出現(xiàn)數(shù)據(jù)競爭,即不同的線程束對共享數(shù)據(jù)進(jìn)行互斥訪問。為了實(shí)現(xiàn)這一目的,主流的方案為:采用一些原子操作為共享數(shù)據(jù)設(shè)置互斥鎖,當(dāng)共享數(shù)據(jù)未上鎖時(shí),訪問它的線程束通過原子操作可以給數(shù)據(jù)上鎖,以防止訪問期間其他線程束對數(shù)據(jù)的訪問。若線程束得不到某個(gè)互斥鎖,則會(huì)釋放掉它獲得的所有鎖并在一段時(shí)間后再次嘗試獲得該鎖,這一現(xiàn)象被稱為同步失敗。不難看出,當(dāng)某線程束同步失敗后,會(huì)造成額外的執(zhí)行開銷并降低并行度。

3、在當(dāng)前的互斥鎖方案中,大多沒有考慮不同線程束的優(yōu)先級(jí)問題,這導(dǎo)致所有同步失敗的線程束必須等待其他線程束主動(dòng)釋放或者因占用互斥鎖時(shí)間過長而被動(dòng)釋放互斥鎖后才能繼續(xù)向下運(yùn)行,對于實(shí)時(shí)性要求較低的任務(wù),這種處理方式的影響較小,而當(dāng)處理某些實(shí)時(shí)性要求較高的任務(wù)時(shí),這種方式通常不滿足實(shí)時(shí)性要求。


技術(shù)實(shí)現(xiàn)思路

1、本發(fā)明實(shí)施例提供了一種支持優(yōu)先級(jí)的gpu線程束的同步方法及系統(tǒng),用于解決如下技術(shù)問題:目前的互斥鎖方案未考慮不同線程束的優(yōu)先級(jí)問題,導(dǎo)致同步失敗后的線程束需等待較長時(shí)間才能繼續(xù)向下運(yùn)行,無法滿足數(shù)據(jù)訪問任務(wù)的實(shí)時(shí)性要求。

2、本發(fā)明實(shí)施例采用下述技術(shù)方案:

3、一方面,本發(fā)明實(shí)施例提供了一種支持優(yōu)先級(jí)的gpu線程束的同步方法,方法包括:為同一線程塊中的若干個(gè)線程束分配任務(wù),并基于分配的任務(wù)設(shè)置各個(gè)線程束的優(yōu)先級(jí);

4、檢測當(dāng)前線程束申請的互斥鎖的鎖定狀態(tài);其中,所述鎖定狀態(tài)為未被鎖定或已被鎖定;

5、若所述互斥鎖已被鎖定,則基于線程束的優(yōu)先級(jí),對當(dāng)前線程束與正在占用所述互斥鎖的線程束進(jìn)行仲裁;

6、根據(jù)仲裁結(jié)果,判斷當(dāng)前線程束能否獲取所述互斥鎖。

7、在一種可行的實(shí)施方式中,為同一線程塊中的若干個(gè)線程束分配任務(wù),并基于分配的任務(wù)設(shè)置各個(gè)線程束的優(yōu)先級(jí),具體包括:

8、獲取分配給每個(gè)線程束的任務(wù)的實(shí)時(shí)性要求等級(jí);

9、按照所述實(shí)時(shí)性要求等級(jí)由高到低的順序,通過競爭優(yōu)先級(jí)寄存器,對分配了任務(wù)的若干個(gè)線程束設(shè)置相應(yīng)的優(yōu)先級(jí);

10、其中,接收到高實(shí)時(shí)性要求等級(jí)任務(wù)的線程束設(shè)置為高優(yōu)先級(jí);

11、接收到相同實(shí)時(shí)性要求等級(jí)任務(wù)的兩個(gè)或多個(gè)線程束的優(yōu)先級(jí)也相同。

12、在一種可行的實(shí)施方式中,檢測當(dāng)前線程束申請的互斥鎖的鎖定狀態(tài),具體包括:

13、獲取當(dāng)前線程束申請的互斥鎖的最高存儲(chǔ)位的數(shù)值;

14、若所述最高存儲(chǔ)位的數(shù)值為0,則確定所述互斥鎖未被鎖定,即當(dāng)前沒有線程束占用所述互斥鎖;

15、若所述最高存儲(chǔ)位的數(shù)值為1,則確定所述互斥鎖已被鎖定,即當(dāng)前已有線程束在占用所述互斥鎖。

16、在一種可行的實(shí)施方式中,在檢測當(dāng)前線程束申請的互斥鎖的鎖定狀態(tài)之后,所述方法還包括:

17、若所述互斥鎖未被鎖定,則直接獲取所述互斥鎖執(zhí)行互斥任務(wù),并將當(dāng)前線程束的id存儲(chǔ)到所述互斥鎖的其余存儲(chǔ)位中。

18、在一種可行的實(shí)施方式中,在直接獲取所述互斥鎖執(zhí)行互斥任務(wù)之后,所述方法還包括:

19、在當(dāng)前線程束獲取到所述互斥鎖后,每向前執(zhí)行一個(gè)任務(wù)指令,則將當(dāng)前線程束中的計(jì)數(shù)線程的計(jì)數(shù)值加一;所述計(jì)數(shù)值的初始值為0;

20、當(dāng)所述計(jì)數(shù)值達(dá)到預(yù)設(shè)上限后,控制所述當(dāng)前線程束釋放所述互斥鎖,并將所述計(jì)數(shù)值清零。

21、在一種可行的實(shí)施方式中,若所述互斥鎖已被鎖定,則基于線程束的優(yōu)先級(jí),對當(dāng)前線程束與正在占用所述互斥鎖的線程束進(jìn)行仲裁,具體包括:

22、在所述線程塊中設(shè)置一個(gè)仲裁裝置,并在所述仲裁裝置中設(shè)置fifo隊(duì)列;

23、若所述互斥鎖正在被占用,則在所述互斥鎖中獲取正在占用所述互斥鎖的線程束的id;

24、將正在占用所述互斥鎖的線程束的id與當(dāng)前線程束的id存儲(chǔ)到所述仲裁裝置中;

25、通過所述仲裁裝置,比較所述正在占用所述互斥鎖的線程束與當(dāng)前線程束的優(yōu)先級(jí),以進(jìn)行仲裁。

26、在一種可行的實(shí)施方式中,將正在占用所述互斥鎖的線程束的id與當(dāng)前線程束的id存儲(chǔ)到所述仲裁裝置中,具體包括:

27、將正在占用所述互斥鎖的線程束的id與當(dāng)前線程束的id組成一個(gè)線程束id對,并作為一個(gè)元素存儲(chǔ)進(jìn)所述仲裁裝置的fifo隊(duì)列中;

28、通過所述仲裁裝置依次取出所述fifo隊(duì)列中的元素并進(jìn)行仲裁。

29、在一種可行的實(shí)施方式中,根據(jù)仲裁結(jié)果,判斷當(dāng)前線程束能否獲取所述互斥鎖,具體包括:

30、若當(dāng)前線程束的優(yōu)先級(jí)高于正在占用所述互斥鎖的線程束的優(yōu)先級(jí),則向正在占用所述互斥鎖的線程束發(fā)出釋放互斥鎖的信號(hào),以使該線程束釋放所有取的互斥鎖,并使當(dāng)前線程束獲取所述互斥鎖執(zhí)行互斥任務(wù)。

31、在一種可行的實(shí)施方式中,根據(jù)仲裁結(jié)果,判斷當(dāng)前線程束能否獲取所述互斥鎖,具體還包括:

32、若當(dāng)前線程束的優(yōu)先級(jí)等于或低于正在占用所述互斥鎖的線程束的優(yōu)先級(jí),則令當(dāng)前線程束等待所述互斥鎖,并釋放掉已經(jīng)獲取的所有互斥鎖。

33、另一方面,本發(fā)明實(shí)施例還提供了一種支持優(yōu)先級(jí)的gpu線程束的同步系統(tǒng),所述系統(tǒng)包括:

34、優(yōu)先級(jí)設(shè)置模塊,用于為同一線程塊中的若干個(gè)線程束分配任務(wù),并基于分配的任務(wù)設(shè)置各個(gè)線程束的優(yōu)先級(jí);

35、仲裁模塊,用于檢測當(dāng)前線程束申請的互斥鎖的鎖定狀態(tài);其中,所述鎖定狀態(tài)為未被鎖定或已被鎖定;若所述互斥鎖已被鎖定,則基于線程束的優(yōu)先級(jí),對當(dāng)前線程束與正在占用所述互斥鎖的線程束進(jìn)行仲裁;根據(jù)仲裁結(jié)果,判斷當(dāng)前線程束能否獲取所述互斥鎖。

36、與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例提供的一種支持優(yōu)先級(jí)的gpu線程束的同步方法及系統(tǒng),具有如下有益效果:

37、本發(fā)明提出了一種優(yōu)先級(jí)和時(shí)間片相結(jié)合的方式進(jìn)行線程束之間的同步,為線程塊中的每個(gè)線程束設(shè)置一個(gè)競爭優(yōu)先級(jí)寄存器(competitive?priority?register,cpr),在主機(jī)為線程束分配任務(wù)的同時(shí),通過設(shè)置cpr指定每個(gè)被分配了任務(wù)的線程束的優(yōu)先級(jí)。同時(shí),在每個(gè)線程塊中設(shè)置一個(gè)仲裁裝置,用來對需要和已經(jīng)獲得互斥鎖的線程束的執(zhí)行進(jìn)行仲裁。當(dāng)線程束在執(zhí)行具有同步操作的任務(wù)時(shí)同步失敗,它不會(huì)立刻釋放掉所有已經(jīng)獲得的互斥鎖,而是通過互斥鎖中存儲(chǔ)的線程束id值找出當(dāng)前已經(jīng)獲得該互斥鎖的線程束id,并將該id和該線程束本身id發(fā)送給仲裁裝置,仲裁裝置根據(jù)兩個(gè)線程束的優(yōu)先級(jí)確定是令已經(jīng)獲得互斥鎖的線程束釋放互斥鎖還是令請求獲得互斥鎖的線程束進(jìn)行等待。

38、本發(fā)明通過設(shè)置優(yōu)先級(jí)保證優(yōu)先級(jí)較高的線程束的實(shí)時(shí)性,解決了當(dāng)前互斥鎖方案中同步失敗的線程束必須等待其他線程束釋放互斥鎖后才能繼續(xù)向下運(yùn)行的問題,提升了實(shí)時(shí)性要求較高的任務(wù)的運(yùn)行效率,滿足不同實(shí)時(shí)性任務(wù)的運(yùn)行需求。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1