本發(fā)明屬于gpu資源調(diào)度,尤其涉及面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度方法及系統(tǒng)。
背景技術(shù):
1、隨著計(jì)算機(jī)技術(shù)的不斷進(jìn)步,gpu作為一種專門用于并行計(jì)算的硬件設(shè)備對(duì)于深度學(xué)習(xí)應(yīng)用(dnn)提供了強(qiáng)大的支持。gpu在深度學(xué)習(xí)應(yīng)用中的意義在于其強(qiáng)大的并行計(jì)算能力、高吞吐量、優(yōu)化的硬件架構(gòu)以及對(duì)主流深度學(xué)習(xí)框架的良好支持,dnn應(yīng)用在gpu上運(yùn)行時(shí)能夠顯著提高吞吐量,因此廣泛用于各種計(jì)算密集型任務(wù),通過(guò)使用gpu,dnn應(yīng)用可以大幅提高計(jì)算效率、加速模型訓(xùn)練和推理過(guò)程,從而提高生產(chǎn)力和研究效率。
2、然而dnn應(yīng)用往往不能充分利用gpu資源,由于工作負(fù)載中的操作符不同的內(nèi)存和計(jì)算需求,當(dāng)某個(gè)操作符飽和gpu的計(jì)算單元或內(nèi)存帶寬時(shí),會(huì)導(dǎo)致另一種資源處于閑置狀態(tài)。為了提高gpu資源的利用率,現(xiàn)有很多gpu共享技術(shù),但仍然存在細(xì)粒度和干擾感知的問(wèn)題。時(shí)間片輪轉(zhuǎn)技術(shù)通過(guò)在多個(gè)任務(wù)之間進(jìn)行上下文切換來(lái)共享gpu資源,但是時(shí)間片過(guò)小會(huì)導(dǎo)致進(jìn)程切換頻繁,時(shí)間片過(guò)大會(huì)影響響應(yīng)速度,對(duì)于優(yōu)先級(jí)低的任務(wù)可能會(huì)因時(shí)間片短而帶來(lái)饑餓問(wèn)題,并且運(yùn)行的單個(gè)任務(wù)不能消耗所有的計(jì)算和內(nèi)存資源??臻g共享技術(shù)雖然允許多個(gè)任務(wù)同時(shí)使用gpu,但當(dāng)前的空間共享技術(shù)通常提供的是粗粒度的gpu分區(qū),無(wú)法充分利用gpu資源。多個(gè)任務(wù)共享同一gpu時(shí)可能在計(jì)算單元、內(nèi)存帶寬、緩存等方面產(chǎn)生資源競(jìng)爭(zhēng),因此對(duì)于干擾感知方面提出了要求。
3、因此,如何實(shí)現(xiàn)dnn應(yīng)用的細(xì)粒度和干擾感知的調(diào)度,提高gpu的資源利用率,是當(dāng)前研究的重點(diǎn)。
技術(shù)實(shí)現(xiàn)思路
1、為克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提供了面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度方法及系統(tǒng),在cuda內(nèi)核級(jí)別進(jìn)行調(diào)度,優(yōu)先調(diào)度高優(yōu)先級(jí)任務(wù)隊(duì)列中的cuda內(nèi)核任務(wù),且根據(jù)干擾評(píng)分以及內(nèi)核任務(wù)的資源需求判斷是否調(diào)度低優(yōu)先級(jí)任務(wù)隊(duì)列的內(nèi)核任務(wù),減少任務(wù)之間的資源沖突和干擾,實(shí)現(xiàn)gpu資源共享,提高gpu資源利用率。
2、為實(shí)現(xiàn)上述目的,本發(fā)明的一個(gè)或多個(gè)實(shí)施例提供了如下技術(shù)方案:
3、本發(fā)明第一方面提供了面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度方法。
4、面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度方法,包括以下步驟:
5、在離線階段收集工作負(fù)載的資源需求信息;
6、根據(jù)應(yīng)用程序的計(jì)算需求,生成每個(gè)應(yīng)用程序?qū)?yīng)的在gpu上執(zhí)行的cuda內(nèi)核任務(wù);
7、攔截每個(gè)應(yīng)用程序cuda內(nèi)核任務(wù)的啟動(dòng)請(qǐng)求,并將啟動(dòng)請(qǐng)求對(duì)應(yīng)的cuda內(nèi)核任務(wù)緩存在每個(gè)應(yīng)用程序?qū)?yīng)的任務(wù)隊(duì)列中;
8、判斷每個(gè)應(yīng)用程序的優(yōu)先級(jí)為高優(yōu)先級(jí)還是低優(yōu)先級(jí);
9、輪詢每個(gè)應(yīng)用程序的任務(wù)隊(duì)列,對(duì)于高優(yōu)先級(jí)應(yīng)用程序,直接將對(duì)應(yīng)任務(wù)隊(duì)列中的cuda內(nèi)核任務(wù)提交給gpu調(diào)度;對(duì)于低優(yōu)先級(jí)應(yīng)用程序,根據(jù)干擾評(píng)分以及資源需求判斷是否提交cuda內(nèi)核任務(wù)至gpu進(jìn)行調(diào)度。
10、本發(fā)明第二方面提供了面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度系統(tǒng)。
11、面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度系統(tǒng),包括:
12、負(fù)載分析模塊,被配置為:在離線階段收集工作負(fù)載的資源需求信息;
13、任務(wù)生成模塊,被配置為:根據(jù)應(yīng)用程序的計(jì)算需求,生成每個(gè)應(yīng)用程序?qū)?yīng)的在gpu上執(zhí)行的cuda內(nèi)核任務(wù);
14、內(nèi)核攔截和管理模塊,被配置為:攔截每個(gè)應(yīng)用程序cuda內(nèi)核任務(wù)的啟動(dòng)請(qǐng)求,并將啟動(dòng)請(qǐng)求對(duì)應(yīng)的cuda內(nèi)核任務(wù)緩存在每個(gè)應(yīng)用程序?qū)?yīng)的任務(wù)隊(duì)列中;
15、優(yōu)先級(jí)判斷模塊,被配置為:判斷每個(gè)應(yīng)用程序的優(yōu)先級(jí)為高優(yōu)先級(jí)還是低優(yōu)先級(jí);
16、內(nèi)核任務(wù)調(diào)度模塊,被配置為:輪詢每個(gè)應(yīng)用程序的任務(wù)隊(duì)列,對(duì)于高優(yōu)先級(jí)應(yīng)用程序,直接將對(duì)應(yīng)任務(wù)隊(duì)列中的cuda內(nèi)核任務(wù)提交給gpu調(diào)度;對(duì)于低優(yōu)先級(jí)應(yīng)用程序,根據(jù)干擾評(píng)分以及資源需求判斷是否提交cuda內(nèi)核任務(wù)至gpu進(jìn)行調(diào)度。
17、以上一個(gè)或多個(gè)技術(shù)方案存在以下有益效果:
18、本發(fā)明提供了一種面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度方法,對(duì)于不同優(yōu)先級(jí)的應(yīng)用采取不同的調(diào)度策略,對(duì)于高優(yōu)先級(jí)應(yīng)用的內(nèi)核任務(wù),直接提交給gpu調(diào)度,對(duì)于低優(yōu)先級(jí)任務(wù),建立干擾評(píng)分的模型,結(jié)合干擾評(píng)分以及內(nèi)核的需求進(jìn)行調(diào)度,保證了高優(yōu)先級(jí)任務(wù)的執(zhí)行性能,同時(shí)在較低的干擾下利用閑置資源處理低優(yōu)先級(jí)任務(wù),提高了資源利用率,實(shí)現(xiàn)gpu共享。
19、本發(fā)明將gpu資源調(diào)度細(xì)化到內(nèi)核任務(wù)級(jí)別,可以更精確地控制每個(gè)任務(wù)的執(zhí)行,這種細(xì)粒度的調(diào)度方式使得資源利用率更高,確保每個(gè)內(nèi)核任務(wù)在合適的時(shí)機(jī)得到執(zhí)行。
20、本發(fā)明附加方面的優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過(guò)本發(fā)明的實(shí)踐了解到。
1.面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度方法,其特征在于,包括以下步驟:
2.如權(quán)利要求1所述的面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度方法,其特征在于,所述資源需求信息包括線程塊數(shù)量、每個(gè)線程塊的線程數(shù)、計(jì)算單元和內(nèi)存帶寬的利用率以及預(yù)計(jì)執(zhí)行時(shí)間。
3.如權(quán)利要求1所述的面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度方法,其特征在于,根據(jù)應(yīng)用程序的計(jì)算需求,生成每個(gè)應(yīng)用程序?qū)?yīng)的在gpu上執(zhí)行的cuda內(nèi)核任務(wù),具體為:
4.如權(quán)利要求1所述的面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度方法,其特征在于,通過(guò)動(dòng)態(tài)鏈接庫(kù)的方式攔截來(lái)自每個(gè)應(yīng)用程序cuda內(nèi)核任務(wù)的啟動(dòng)請(qǐng)求。
5.如權(quán)利要求1所述的面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度方法,其特征在于,基于多個(gè)因素判斷應(yīng)用程序的優(yōu)先級(jí)為高優(yōu)先級(jí)還是低優(yōu)先級(jí),若其中一個(gè)因素滿足高優(yōu)先級(jí)的要求,則當(dāng)前應(yīng)用程序?yàn)楦邇?yōu)先級(jí),否則為低優(yōu)先級(jí);所述多個(gè)因素包括任務(wù)類型、業(yè)務(wù)重要性和實(shí)時(shí)性能要求。
6.如權(quán)利要求1所述的面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度方法,其特征在于,當(dāng)輪詢到高優(yōu)先級(jí)應(yīng)用程序的任務(wù)隊(duì)列時(shí):
7.如權(quán)利要求1所述的面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度方法,其特征在于,對(duì)于低優(yōu)先級(jí)應(yīng)用程序,根據(jù)干擾評(píng)分以及資源需求判斷是否提交cuda內(nèi)核任務(wù)至gpu進(jìn)行調(diào)度,具體為:
8.如權(quán)利要求7所述的面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度方法,其特征在于,所述干擾評(píng)分用于衡量將低優(yōu)先級(jí)cuda內(nèi)核任務(wù)調(diào)度到gpu時(shí)產(chǎn)生的干擾程度:
9.如權(quán)利要求7所述的面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度方法,其特征在于,還包括計(jì)算低優(yōu)先級(jí)cuda內(nèi)核任務(wù)的sm需求,具體為:
10.面向深度學(xué)習(xí)的細(xì)粒度、干擾感知的gpu調(diào)度系統(tǒng),其特征在于:包括: