本發(fā)明涉及深度學(xué)習(xí)技術(shù)領(lǐng)域,具體而言,涉及一種節(jié)點(diǎn)集群中任務(wù)分配的方法、節(jié)點(diǎn)和系統(tǒng)。
背景技術(shù):
近年來,深度學(xué)習(xí)在語音識別、圖像識別、自然語言處理等應(yīng)用中取得了顯著的成效;在安防行業(yè),深度學(xué)習(xí)已經(jīng)開始大規(guī)模實(shí)施,已經(jīng)有很多安防企業(yè)開始投入資源開發(fā)基于深度學(xué)習(xí)技術(shù)的任務(wù)、產(chǎn)品;可見,深度學(xué)習(xí)正影響著安防企業(yè),影響著智能視頻分析技術(shù);尤其是體現(xiàn)在人臉識別應(yīng)用和車輛特征識別應(yīng)用等方面。
深度學(xué)習(xí)帶來了更高的識別率以及更多的視頻信息的同時,也引入了任務(wù)計(jì)算量超大的問題,傳統(tǒng)做法是采用cpu來完成計(jì)算量,但是在計(jì)算量過大時,采用單核或者多核cpu的計(jì)算速度依然達(dá)不到使用要求;而且即便采用多核計(jì)算能夠滿足要求,但是卻帶來了多核cpu的成本更高和計(jì)算密度更低的缺陷;現(xiàn)有技術(shù)中,采用專用的gpu計(jì)算卡完成深度學(xué)習(xí)任務(wù),雖然使運(yùn)算速度得以提高,但是在使用過程中都是分別設(shè)有cpu節(jié)點(diǎn)集群或者gpu節(jié)點(diǎn)集群,在進(jìn)行任務(wù)執(zhí)行時則分別使用cpu節(jié)點(diǎn)集群或者gpu節(jié)點(diǎn)集群,進(jìn)而cpu節(jié)點(diǎn)集群和gpu節(jié)點(diǎn)集群是被分別進(jìn)行管理管理和使用的,二者相互獨(dú)立,無法進(jìn)行g(shù)pu節(jié)點(diǎn)集群加cpu節(jié)點(diǎn)集群混合計(jì)算,在進(jìn)行任務(wù)分配時集群中的cpu資源和gpu資源無法混合使用。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明實(shí)施例的目的在于提供一種節(jié)點(diǎn)集群中任務(wù)分配的方法、節(jié)點(diǎn)和系統(tǒng),以達(dá)到cpu節(jié)點(diǎn)集群和gpu節(jié)點(diǎn)集群的統(tǒng)一管理和混合使用的目的。
第一方面,本發(fā)明實(shí)施例提供了一種節(jié)點(diǎn)集群中任務(wù)分配的方法,所述節(jié)點(diǎn)集群包括多個計(jì)算節(jié)點(diǎn),所述多個計(jì)算節(jié)點(diǎn)包括圖形處理器gpu節(jié)點(diǎn)和中央處理器cpu節(jié)點(diǎn),多個所述gpu節(jié)點(diǎn)組成gpu節(jié)點(diǎn)集群,多個所述cpu節(jié)點(diǎn)組成cpu節(jié)點(diǎn)集群,所述cpu節(jié)點(diǎn)集群和所述gpu節(jié)點(diǎn)集群統(tǒng)一被中心節(jié)點(diǎn)管理,所述方法包括:
中心節(jié)點(diǎn)接收用戶請求,所述用戶請求攜帶有待執(zhí)行的任務(wù)和用戶自定義參數(shù);
所述中心節(jié)點(diǎn)控制任一計(jì)算節(jié)點(diǎn)確定執(zhí)行所述任務(wù)所需要的服務(wù)器資源類型和資源大?。?/p>
所述中心節(jié)點(diǎn)根據(jù)所述任務(wù)所需要的服務(wù)器資源類型和資源大小以及當(dāng)前計(jì)算節(jié)點(diǎn)的狀態(tài)信息將所述任務(wù)分配到相應(yīng)的計(jì)算節(jié)點(diǎn)。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了第一方面的第一種可能的實(shí)施方式,其中:
所述中心節(jié)點(diǎn)控制任一計(jì)算節(jié)點(diǎn)確定執(zhí)行所述任務(wù)所需要的服務(wù)器資源類型和資源大小,包括:
根據(jù)所述用戶自定義參數(shù)對所述任務(wù)進(jìn)行分解成多個子任務(wù);
判斷所述子任務(wù)是否必須使用gpu資源,生成標(biāo)記信息;
計(jì)算執(zhí)行每個所述子任務(wù)所需的cpu資源和/或gpu資源所要滿足的資源條件,生成資源條件信息;
所述中心節(jié)點(diǎn)根據(jù)所述標(biāo)記信息、資源條件信息和當(dāng)前每個計(jì)算節(jié)點(diǎn)的狀態(tài)信息,將所述子任務(wù)分配至相應(yīng)的計(jì)算節(jié)點(diǎn)。
結(jié)合第一方面或者第一方面的第一種可能的實(shí)施方式,本發(fā)明實(shí)施例提供了第一方面的第二種可能的實(shí)施方式,其中:
所述狀態(tài)信息包括:cpu使用率和/或gpu使用率。
結(jié)合第一方面的第一種可能的實(shí)施方式,本發(fā)明實(shí)施例提供了第一方面的第三種可能的實(shí)施方式,其中:
所述中心節(jié)點(diǎn)根據(jù)所述標(biāo)記信息、資源條件信息和當(dāng)前每個計(jì)算節(jié)點(diǎn)的狀態(tài)信息,將所述子任務(wù)分配至相應(yīng)的計(jì)算節(jié)點(diǎn),包括:
如果所述子任務(wù)需要gpu資源,所述中心節(jié)點(diǎn)則優(yōu)先將所述子任務(wù)分配在滿足資源條件的gpu節(jié)點(diǎn)集群中g(shù)pu負(fù)載最低的計(jì)算節(jié)點(diǎn);
如果所述子任務(wù)不需要gpu資源,所述中心節(jié)點(diǎn)優(yōu)先將所述子任務(wù)分配至在滿足資源條件的cpu節(jié)點(diǎn)集群中cpu負(fù)載最低的計(jì)算節(jié)點(diǎn)。
結(jié)合第一方面的第一種可能的實(shí)施方式,本發(fā)明實(shí)施例提供了第一方面的第四種可能的實(shí)施方式,其中:
所述中心節(jié)點(diǎn)根據(jù)所述標(biāo)記信息、資源條件信息和當(dāng)前每個計(jì)算節(jié)點(diǎn)的狀態(tài)信息,將所述子任務(wù)分配至相應(yīng)的計(jì)算節(jié)點(diǎn),還包括:
如果所述子任務(wù)需要gpu資源,但不是必須使用gpu資源,在gpu節(jié)點(diǎn)集群中沒有滿足gpu資源條件的計(jì)算節(jié)點(diǎn)時,所述中心節(jié)點(diǎn)將所述子任務(wù)分配至gpu節(jié)點(diǎn)集群中滿足cpu資源條件的計(jì)算節(jié)點(diǎn);如果所述gpu節(jié)點(diǎn)集群沒有滿足所述cpu資源條件的計(jì)算節(jié)點(diǎn),所述中心節(jié)點(diǎn)將所述子任務(wù)分配至cpu節(jié)點(diǎn)集群中滿足cpu資源條件的計(jì)算節(jié)點(diǎn);
如果所述子任務(wù)不需要gpu資源,且cpu節(jié)點(diǎn)集群中沒有滿足cpu資源條件的計(jì)算節(jié)點(diǎn),所述中心節(jié)點(diǎn)將所述子任務(wù)分配至gpu節(jié)點(diǎn)集群中滿足cpu資源要求的計(jì)算節(jié)點(diǎn)。
結(jié)合第一方面的第一種可能的實(shí)施方式,本發(fā)明實(shí)施例提供了第一方面的第五種可能的實(shí)施方式,其中:
所述中心節(jié)點(diǎn)根據(jù)所述標(biāo)記信息、資源條件信息和當(dāng)前每個計(jì)算節(jié)點(diǎn)的狀態(tài)信息,將所述子任務(wù)分配至相應(yīng)的計(jì)算節(jié)點(diǎn),還包括:
如果所述子任務(wù)當(dāng)前沒有滿足資源條件的計(jì)算節(jié)點(diǎn),則使所述子任務(wù)處于等待狀態(tài),直到有滿足資源條件的計(jì)算節(jié)點(diǎn)出現(xiàn)時再為所述子任務(wù)分配節(jié)點(diǎn)。
結(jié)合第一方面的第一種可能的實(shí)施方式,本發(fā)明實(shí)施例提供了第一方面的第六種可能的實(shí)施方式,其中:
所述中心節(jié)點(diǎn)控制任一計(jì)算節(jié)點(diǎn)確定執(zhí)行所述任務(wù)所需要的服務(wù)器資源類型和資源大小,還包括:
將所述用戶自定義參數(shù)拆分成每個子任務(wù)所對應(yīng)的具體參數(shù);
根據(jù)每個所述子任務(wù)所對應(yīng)的具體參數(shù)計(jì)算所述述子任務(wù)所需的cpu資源和/或gpu資源所要滿足的資源條件。
第二方面,本發(fā)明實(shí)施例提供了一種節(jié)點(diǎn),包括:
接收模塊,用于接收用戶請求,所述用戶請求攜帶有待執(zhí)行的任務(wù)和用戶自定義參數(shù);
確定模塊,用于控制任一計(jì)算節(jié)點(diǎn)確定執(zhí)行所述任務(wù)所需要的服務(wù)器資源類型和資源大??;
分配模塊,用于根據(jù)所述任務(wù)所需要的服務(wù)器資源類型和資源大小以及當(dāng)前計(jì)算節(jié)點(diǎn)的狀態(tài)信息將所述任務(wù)分配到相應(yīng)的計(jì)算節(jié)點(diǎn)。
結(jié)合第二方面,本發(fā)明實(shí)施例提供了第二方面的第一種可能的實(shí)施方式,其中:
所述確定模塊,還包括:
分解單元,用于根據(jù)所述用戶自定義參數(shù)對所述任務(wù)進(jìn)行分解成多個子任務(wù);
判斷單元,用于判斷所述子任務(wù)是否必須使用gpu資源,生成標(biāo)記信息;
計(jì)算單元計(jì)算執(zhí)行每個所述子任務(wù)所需的cpu資源和/或gpu資源所要滿足的資源條件,生成資源條件信息;
所述中心節(jié)點(diǎn)根據(jù)所述標(biāo)記信息、資源條件信息和當(dāng)前每個計(jì)算節(jié)點(diǎn)的狀態(tài)信息,將所述子任務(wù)分配至相應(yīng)的計(jì)算節(jié)點(diǎn)。
結(jié)合第二方面的第一種可能的實(shí)施方式,本發(fā)明實(shí)施例提供了第二方面的第二種可能的實(shí)施方式,其中:
所述分配模塊,用于:
如果所述子任務(wù)需要gpu資源,所述中心節(jié)點(diǎn)則優(yōu)先將所述子任務(wù)分配在滿足資源條件的gpu節(jié)點(diǎn)集群中g(shù)pu負(fù)載最低的計(jì)算節(jié)點(diǎn);
如果所述子任務(wù)不需要gpu資源,所述中心節(jié)點(diǎn)優(yōu)先將所述子任務(wù)分配至在滿足資源條件的cpu節(jié)點(diǎn)集群中cpu負(fù)載最低的計(jì)算節(jié)點(diǎn)。
結(jié)合第二方面的第一種可能的實(shí)施方式,本發(fā)明實(shí)施例提供了第二方面的第三種可能的實(shí)施方式,其中:
所述分配模塊,還用于:
如果所述子任務(wù)需要gpu資源,但不是必須使用gpu資源,在gpu節(jié)點(diǎn)集群中沒有滿足gpu資源條件的計(jì)算節(jié)點(diǎn)時,將所述子任務(wù)分配至gpu節(jié)點(diǎn)集群中滿足cpu資源條件的計(jì)算節(jié)點(diǎn);如果所述gpu節(jié)點(diǎn)集群沒有滿足所述cpu資源條件的計(jì)算節(jié)點(diǎn),將所述子任務(wù)分配至cpu節(jié)點(diǎn)集群中滿足cpu資源條件的計(jì)算節(jié)點(diǎn);
如果所述子任務(wù)不需要gpu資源,且cpu節(jié)點(diǎn)集群中沒有滿足cpu資源條件的計(jì)算節(jié)點(diǎn),將所述子任務(wù)分配至gpu節(jié)點(diǎn)集群中滿足cpu資源要求的計(jì)算節(jié)點(diǎn)。
結(jié)合第二方面的第一種可能的實(shí)施方式,本發(fā)明實(shí)施例提供了第二方面的第四種可能的實(shí)施方式,其中:
所述確定模塊,還包括:
自定義參數(shù)拆分模塊,用于將所述用戶自定義參數(shù)拆分成每個子任務(wù)所對應(yīng)的具體參數(shù);
所述計(jì)算單元根據(jù)每個所述子任務(wù)所對應(yīng)的具體參數(shù)計(jì)算所述述子任務(wù)所需的cpu資源和/或gpu資源所要滿足的資源條件。
第三方面,本發(fā)明實(shí)施例還提供了一種節(jié)點(diǎn)集群中任務(wù)分配的系統(tǒng),包括:
中心節(jié)點(diǎn),所述中心節(jié)點(diǎn)為上述任一實(shí)施例中所述的節(jié)點(diǎn);
多個計(jì)算節(jié)點(diǎn),所述多個計(jì)算節(jié)點(diǎn)包括圖形處理器gpu節(jié)點(diǎn)和中央處理器cpu節(jié)點(diǎn),多個所述gpu節(jié)點(diǎn)組成gpu節(jié)點(diǎn)集群,多個所述cpu節(jié)點(diǎn)組成cpu節(jié)點(diǎn)集群,其中,所述gpu節(jié)點(diǎn)集群中的gpu節(jié)點(diǎn)是配有g(shù)pu計(jì)算卡的節(jié)點(diǎn),含有cpu資源;
所述計(jì)算節(jié)點(diǎn)和所述中心節(jié)點(diǎn)通過網(wǎng)絡(luò)連接。
本發(fā)明實(shí)施例提供的一種節(jié)點(diǎn)集群中任務(wù)分配的方法、節(jié)點(diǎn)和系統(tǒng),節(jié)點(diǎn)集群中包括多個計(jì)算節(jié)點(diǎn),該多個計(jì)算節(jié)點(diǎn)包括gpu節(jié)點(diǎn)和cpu節(jié)點(diǎn),多個gpu節(jié)點(diǎn)組成gpu節(jié)點(diǎn)集群,多個cpu節(jié)點(diǎn)組成cpu節(jié)點(diǎn)集群,在工作過程中,中心節(jié)點(diǎn)接收用戶請求,該用戶請求攜帶有用戶待執(zhí)行的任務(wù)和用戶自定義參數(shù),中心節(jié)點(diǎn)控制節(jié)點(diǎn)集群中的任一個節(jié)點(diǎn)確定執(zhí)行上述任務(wù)所需要的服務(wù)器資源類型和大小,并根據(jù)執(zhí)行該任務(wù)所需要的服務(wù)器資源類型和大小對該任務(wù)進(jìn)行分配相應(yīng)的計(jì)算節(jié)點(diǎn);本發(fā)明實(shí)施例所提供的方法能夠?qū)崿F(xiàn)cpu節(jié)點(diǎn)集群和gpu節(jié)點(diǎn)集群的統(tǒng)一管理和資源的混合使用。
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附附圖,作詳細(xì)說明如下。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對實(shí)施例中所需要使用的附圖作簡單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實(shí)施例,因此不應(yīng)被看作是對范圍的限定,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。
圖1示出了本發(fā)明的一個實(shí)施例所提供的一種節(jié)點(diǎn)集群中任務(wù)分配的方法的流程示意圖;
圖2示出了本發(fā)明的一個實(shí)施例所提供的一種節(jié)點(diǎn)的結(jié)構(gòu)示意圖;
圖3示出了本發(fā)明實(shí)施例一所提供的一種節(jié)點(diǎn)集群中任務(wù)分配的系統(tǒng)的結(jié)構(gòu)示意圖;
圖4示出了本本發(fā)明實(shí)施例二所提供的一種節(jié)點(diǎn)集群中任務(wù)分配的系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。通常在此處附圖中描述和示出的本發(fā)明實(shí)施例的組件可以以各種不同的配置來布置和設(shè)計(jì)。因此,以下對在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例?;诒景l(fā)明的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
目前,在深度學(xué)習(xí)技術(shù)領(lǐng)域,在計(jì)算過程中采用cpu或者專門的gpu來完成超大計(jì)算量,在現(xiàn)有技術(shù)中,一個計(jì)算系統(tǒng)中的cpu節(jié)點(diǎn)集群和gpu節(jié)點(diǎn)集群是分別進(jìn)行管理的,在進(jìn)行任務(wù)處理時,無法做到資源的整合和混合使用,既無法實(shí)現(xiàn)cpu加gpu的混合計(jì)算;基于此,本發(fā)明實(shí)施例提供了一種節(jié)點(diǎn)集群中任務(wù)分配的方法、節(jié)點(diǎn)和系統(tǒng)。
gpu節(jié)點(diǎn)是帶有圖形處理器gpu的節(jié)點(diǎn),是配有g(shù)pu計(jì)算卡的節(jié)點(diǎn),同時含有cpu資源;cpu節(jié)點(diǎn)是未帶有圖形處理器gpu的通用服務(wù)器節(jié)點(diǎn)。
如圖1所示的實(shí)施例,本發(fā)明實(shí)施例提供了一種節(jié)點(diǎn)集群中任務(wù)分配的方法,該節(jié)點(diǎn)集群包括多個計(jì)算節(jié)點(diǎn),所述的多個計(jì)算節(jié)點(diǎn)包括圖形處理器gpu節(jié)點(diǎn)和中央處理器cpu節(jié)點(diǎn),多個gpu節(jié)點(diǎn)組成gpu節(jié)點(diǎn)集群,多個cpu節(jié)點(diǎn)組成cpu節(jié)點(diǎn)集群,cpu節(jié)點(diǎn)集群和gpu節(jié)點(diǎn)集群統(tǒng)一被中心節(jié)點(diǎn)管理,該方法包括以下步驟:
s102、中心節(jié)點(diǎn)接收用戶請求,該用戶請求攜帶有待執(zhí)行的任務(wù)和用戶自定義參數(shù);
s104、中心節(jié)點(diǎn)控制任一計(jì)算節(jié)點(diǎn)確定執(zhí)行上述任務(wù)所需要的服務(wù)器資源類型和資源大??;
上述服務(wù)器資源類型包括:gpu資源和cpu資源;
s106、中心節(jié)點(diǎn)根據(jù)上述任務(wù)所需要的服務(wù)器資源類型和資源大小以及當(dāng)前每個計(jì)算節(jié)點(diǎn)的狀態(tài)信息將該任務(wù)分配到相應(yīng)的計(jì)算節(jié)點(diǎn)。
其中,上述中心節(jié)點(diǎn)接收到用戶請求后,在節(jié)點(diǎn)集群中隨機(jī)挑選一個計(jì)算節(jié)點(diǎn),啟動主進(jìn)程對該用戶請求進(jìn)行分析決策,將用戶請求中的任務(wù)根據(jù)用戶自定義參數(shù)分解成多個子任務(wù),并根據(jù)子任務(wù)的計(jì)算類型、計(jì)算復(fù)雜度等因素確定執(zhí)行每個子任務(wù)所需要的服務(wù)器資源類型,例如有的子任務(wù)在計(jì)算處理時不支持使用cpu資源,或者cpu資源無法滿足該子任務(wù)的計(jì)算復(fù)雜度要求,則確定該子任務(wù)使用gpu資源來執(zhí)行,并進(jìn)一步判斷每個子任務(wù)是否必須使用gpu資源,并進(jìn)行標(biāo)記,生成標(biāo)記信息,以供在后續(xù)為其分配節(jié)點(diǎn)時進(jìn)行參考;以及計(jì)算執(zhí)行該子任務(wù)所需要的cpu資源、gpu資源分別所要滿足的資源條件,生成資源條件信息,該資源條件信息主要是指資源所要滿足的大小條件,其中cpu資源以線程為單位,gpu資源以gpu使用百分比為單位;中心節(jié)點(diǎn)還實(shí)時獲取每個計(jì)算節(jié)點(diǎn)的狀態(tài)信息,該狀態(tài)信息包括但不限于:cpu使用率和/或gpu使用率,如果計(jì)算節(jié)點(diǎn)為gpu節(jié)點(diǎn)集群中的節(jié)點(diǎn),所述的狀態(tài)信息包括gpu使用率和cpu使用率,如果計(jì)算節(jié)點(diǎn)為cpu節(jié)點(diǎn)集群中的節(jié)點(diǎn),則狀態(tài)信息包括cpu使用率;進(jìn)一步的,上述的狀態(tài)信息還包括配套組件的使用率,該配套組件包括:內(nèi)存、網(wǎng)卡和硬盤等,進(jìn)而上述的狀態(tài)信息還可以包括:內(nèi)存使用率、顯存使用率、網(wǎng)絡(luò)使用率等。
中心節(jié)點(diǎn)還用于接收每個計(jì)算節(jié)點(diǎn)上報(bào)的標(biāo)簽信息,例如節(jié)點(diǎn)名稱、節(jié)點(diǎn)的ip等,接收計(jì)算節(jié)點(diǎn)的屬性信息,如cpu型號與數(shù)量、內(nèi)存容量、gpu型號與數(shù)量,網(wǎng)絡(luò)屬性(百兆、千兆、萬兆)等;本發(fā)明實(shí)施例中的節(jié)點(diǎn)可以是指服務(wù)器。
中心節(jié)點(diǎn)獲取上述的每個子任務(wù)執(zhí)行時所需要的服務(wù)器資源類型、標(biāo)記信息和資源條件信息以后進(jìn)行為該子任務(wù)分配相應(yīng)的計(jì)算節(jié)點(diǎn),如果子任務(wù)需要gpu資源,中心節(jié)點(diǎn)則優(yōu)先將該子任務(wù)分配在滿足gpu資源條件的gpu節(jié)點(diǎn)集群中g(shù)pu負(fù)載最低的計(jì)算節(jié)點(diǎn);
如果子任務(wù)不是必須使用gpu資源,在gpu節(jié)點(diǎn)集群中沒有滿足gpu資源條件的計(jì)算節(jié)點(diǎn)時,中心節(jié)點(diǎn)將該子任務(wù)分配至gpu節(jié)點(diǎn)集群中滿足cpu資源條件的計(jì)算節(jié)點(diǎn);如果gpu節(jié)點(diǎn)集群沒有滿足cpu資源條件的計(jì)算節(jié)點(diǎn),中心節(jié)點(diǎn)將該子任務(wù)分配至cpu節(jié)點(diǎn)集群中滿足cpu資源條件的計(jì)算節(jié)點(diǎn);
如果子任務(wù)不需要gpu資源,中心節(jié)點(diǎn)優(yōu)先將該子任務(wù)分配在滿足資源條件的cpu節(jié)點(diǎn)集群中cpu負(fù)載最低的計(jì)算節(jié)點(diǎn);如果cpu節(jié)點(diǎn)集群中沒有滿足資源條件的計(jì)算節(jié)點(diǎn),中心節(jié)點(diǎn)將該子任務(wù)分配至gpu節(jié)點(diǎn)集群中滿足cpu資源要求的負(fù)載最低的計(jì)算節(jié)點(diǎn),與現(xiàn)有技術(shù)不同,此時gpu節(jié)點(diǎn)中附帶的cpu資源也被利用到;
本實(shí)施例中,如果子任務(wù)需要gpu資源,但不是必須使用gpu資源,當(dāng)gpu資源不足時,則進(jìn)行降級處理,采用cpu資源進(jìn)行執(zhí)行該子任務(wù),并且優(yōu)先分配在gpu節(jié)點(diǎn)集群中滿足cpu資源條件的計(jì)算節(jié)點(diǎn);如果子任務(wù)不需要gpu資源,在cpu節(jié)點(diǎn)集群中沒有滿足cpu資源條件的計(jì)算節(jié)點(diǎn)時,中心節(jié)點(diǎn)將該任務(wù)分配至gpu節(jié)點(diǎn)集群中滿足cpu資源要求的計(jì)算節(jié)點(diǎn),本實(shí)施例中提供的任務(wù)分配方法,在由gpu節(jié)點(diǎn)集群和cpu節(jié)點(diǎn)集群組成的節(jié)點(diǎn)集群中,同一個集群內(nèi)同時管理cpu和gpu資源,降低了用戶使用復(fù)雜度;自動根據(jù)系統(tǒng)運(yùn)行情況決策請求采用cpu、gpu還是混合(cpu資源加gpu資源協(xié)同)計(jì)算,在執(zhí)行過程中子任務(wù)優(yōu)先被調(diào)度到指定的資源節(jié)點(diǎn)(如gpu節(jié)點(diǎn)或cpu節(jié)點(diǎn)),在資源不足的情況下可以利用其它類型的計(jì)算節(jié)點(diǎn)上的同類資源或是降級使用其他資源(從gpu處理降級為cpu處理),在宏觀上看一個任務(wù)由gpu加cpu混合執(zhí)行,實(shí)現(xiàn)了cpu節(jié)點(diǎn)集群加gpu節(jié)點(diǎn)集群的混合計(jì)算,并且滿足任務(wù)在執(zhí)行時能夠根據(jù)當(dāng)前狀態(tài)調(diào)整資源使用,達(dá)到有效資源利用率最大化和負(fù)載均衡的效果;并且將子任務(wù)分配至滿足資源條件的計(jì)算節(jié)點(diǎn)中負(fù)載最低的節(jié)點(diǎn),即分配到資源利用率最低的節(jié)點(diǎn),提高了任務(wù)計(jì)算處理的速度。
上述實(shí)施例中,中心節(jié)點(diǎn)在進(jìn)行子任務(wù)分配時,如果當(dāng)前沒有滿足資源條件的計(jì)算節(jié)點(diǎn),則使所述子任務(wù)處于等待狀態(tài),直到有滿足資源條件的計(jì)算節(jié)點(diǎn)出現(xiàn)時,中心節(jié)點(diǎn)再為所述子任務(wù)分配計(jì)算節(jié)點(diǎn)。
子任務(wù)被分配到相應(yīng)節(jié)點(diǎn)后進(jìn)行執(zhí)行,執(zhí)行過程中,計(jì)算節(jié)點(diǎn)定期向中心節(jié)點(diǎn)匯報(bào)其任務(wù)進(jìn)度等任務(wù)狀態(tài)信息。
子任務(wù)被分配到計(jì)算節(jié)點(diǎn)以后,子任務(wù)執(zhí)行時如果子任務(wù)申請資源失敗,則該計(jì)算節(jié)點(diǎn)反饋信息至中心節(jié)點(diǎn),由中心節(jié)點(diǎn)重新進(jìn)行對該子任務(wù)分配計(jì)算節(jié)點(diǎn);以此避免了由于某些異常,比如網(wǎng)絡(luò)延遲、丟包、系統(tǒng)down機(jī)等原因引起的中心節(jié)點(diǎn)獲取的計(jì)算節(jié)點(diǎn)的狀態(tài)信息和計(jì)算節(jié)點(diǎn)實(shí)際的狀態(tài)不一致所造成的子任務(wù)無法正常被執(zhí)行的現(xiàn)象發(fā)生。
子任務(wù)在執(zhí)行過程中,實(shí)際使用資源少于分配資源時,計(jì)算節(jié)點(diǎn)會上報(bào)信息給中心節(jié)點(diǎn),這部分資源就可以再次被利用,以達(dá)到資源利用率最大化的目的。
如圖2所示的實(shí)施例,本實(shí)施例中提供了一種節(jié)點(diǎn),該節(jié)點(diǎn)包括:
接收模塊202,用于接收用戶請求,所述用戶請求攜帶有待執(zhí)行的任務(wù)和用戶自定義參數(shù);
確定模塊204,用于控制任一計(jì)算節(jié)點(diǎn)確定執(zhí)行所述任務(wù)所需要的服務(wù)器資源類型和資源大?。?/p>
分配模塊206,用于根據(jù)所述任務(wù)所需要的服務(wù)器資源類型和資源大小以及當(dāng)前計(jì)算節(jié)點(diǎn)的狀態(tài)信息將所述任務(wù)分配到相應(yīng)的計(jì)算節(jié)點(diǎn)。
上述接收模塊接收到用戶請求以后,上述確定模塊控制任一計(jì)算節(jié)點(diǎn)確定執(zhí)行該任務(wù)所需要的服務(wù)器資源類型和資源大小,然后分配模塊根據(jù)該任務(wù)所需要的服務(wù)器資源類型和資源大小以及當(dāng)前計(jì)算節(jié)點(diǎn)的狀態(tài)信息將任務(wù)分配到相應(yīng)的計(jì)算節(jié)點(diǎn)。
本實(shí)施例中,上述確定模塊,包括:分解單元,用于根據(jù)用戶自定義參數(shù)對所述任務(wù)進(jìn)行分解成多個子任務(wù);
判斷單元,用于判斷子任務(wù)是否必須使用gpu資源,并做標(biāo)記,生成標(biāo)記信息;
計(jì)算單元,用于計(jì)算執(zhí)行每個子任務(wù)所需的cpu資源和/或gpu資源所要滿足的資源條件,生成資源條件信息;
上述確定模塊,還包括自定義參數(shù)拆分模塊,用于將用戶自定義參數(shù)拆分成每個子任務(wù)所對應(yīng)的具體參數(shù);上述計(jì)算單元根據(jù)每個子任務(wù)所對應(yīng)的具體參數(shù)計(jì)算該子任務(wù)所需的cpu資源和/或gpu資源所要滿足的資源條件;分配模塊根據(jù)上述標(biāo)記信息、資源條件信息和當(dāng)前每個計(jì)算節(jié)點(diǎn)的狀態(tài)信息,將子任務(wù)分配至相應(yīng)的計(jì)算節(jié)點(diǎn);如果子任務(wù)需要gpu資源,則優(yōu)先將該子任務(wù)分配在滿足資源條件的gpu節(jié)點(diǎn)集群中g(shù)pu負(fù)載最低的計(jì)算節(jié)點(diǎn);如果該子任務(wù)不需要gpu資源,則優(yōu)先將該子任務(wù)分配在滿足資源條件的cpu節(jié)點(diǎn)集群中cpu負(fù)載最低的計(jì)算節(jié)點(diǎn)。如果子任務(wù)需要gpu資源,但不是必須使用gpu資源,在gpu節(jié)點(diǎn)集群中沒有滿足gpu資源條件的計(jì)算節(jié)點(diǎn)時,將該子任務(wù)分配至gpu節(jié)點(diǎn)集群中滿足cpu資源條件的計(jì)算節(jié)點(diǎn),此時將將子任務(wù)的執(zhí)行進(jìn)行了降級處理,從gpu資源處理降到了cpu資源處理;如果gpu節(jié)點(diǎn)集群沒有滿足cpu資源條件的計(jì)算節(jié)點(diǎn),則將該子任務(wù)分配至cpu節(jié)點(diǎn)集群中滿足cpu資源條件的計(jì)算節(jié)點(diǎn),進(jìn)而實(shí)現(xiàn)了由gpu節(jié)點(diǎn)降級為cpu節(jié)點(diǎn)使用;如果所述子任務(wù)不需要gpu資源,且cpu節(jié)點(diǎn)集群中沒有滿足cpu資源條件的計(jì)算節(jié)點(diǎn),將所述子任務(wù)分配至gpu節(jié)點(diǎn)集群中滿足cpu資源要求的計(jì)算節(jié)點(diǎn)。
上述實(shí)施例中所提供的節(jié)點(diǎn),在使用時能夠?qū)崿F(xiàn)gpu節(jié)點(diǎn)集群和cpu節(jié)點(diǎn)集群統(tǒng)一管理、gpu資源和cpu資源綜合利用,達(dá)到了系統(tǒng)負(fù)載均衡和有效資源的利用率最大化的目的。
如3所示的實(shí)施例,本發(fā)明實(shí)施例中提供了一種節(jié)點(diǎn)集群中任務(wù)分配的系統(tǒng),該系統(tǒng)包括:
中心節(jié)點(diǎn)302,該中心節(jié)點(diǎn)302為上述實(shí)施例中任一所述的節(jié)點(diǎn);
多個計(jì)算節(jié)點(diǎn),多個計(jì)算節(jié)點(diǎn)包括gpu節(jié)點(diǎn)306和cpu節(jié)點(diǎn)304,多個gpu節(jié)點(diǎn)組成gpu節(jié)點(diǎn)集群,多個cpu節(jié)點(diǎn)組成cpu節(jié)點(diǎn)集群,其中,所述gpu節(jié)點(diǎn)集群中的gpu節(jié)點(diǎn)是配有g(shù)pu計(jì)算卡的節(jié)點(diǎn),含有cpu資源;所述計(jì)算節(jié)點(diǎn)和所述中心節(jié)點(diǎn)通過網(wǎng)絡(luò)連接。
本實(shí)施例中所提供的一種節(jié)點(diǎn)集群中任務(wù)分配的系統(tǒng),在進(jìn)行任務(wù)分配時,支持gpu節(jié)點(diǎn)降級為cpu節(jié)點(diǎn)使用,能夠滿足gpu節(jié)點(diǎn)集群和cpu節(jié)點(diǎn)集群的統(tǒng)一管理、調(diào)度和資源的混合使用,實(shí)現(xiàn)cpu節(jié)點(diǎn)集群加gpu節(jié)點(diǎn)集群的混合計(jì)算。
需要說明的是,附圖3為本實(shí)施例的示意圖,圖中示出了gpu節(jié)點(diǎn)和cpu節(jié)點(diǎn)個數(shù)為3個的情況,但實(shí)際中節(jié)點(diǎn)的數(shù)目并不局限于此。
如4所示的一個實(shí)施例,本實(shí)施例中,系統(tǒng)包括客戶端、中心節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)集群,其中計(jì)算節(jié)點(diǎn)集群包括cpu節(jié)點(diǎn)集群和gpu節(jié)點(diǎn)集群,中心節(jié)點(diǎn)負(fù)責(zé)整個系統(tǒng)的集群管理和任務(wù)分配,計(jì)算節(jié)點(diǎn)接收被分配的任務(wù)并執(zhí)行該任務(wù),中心節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)通過網(wǎng)絡(luò)連接,運(yùn)行在整個系統(tǒng)上的算法程序包括gpu版本和cpu版本;用戶通過客戶端發(fā)送用戶請求,中心節(jié)點(diǎn)接收客戶端發(fā)送的用戶請求,該用戶請求中攜帶有待執(zhí)行的任務(wù),該任務(wù)被分成多個子任務(wù),每個子任務(wù)均為運(yùn)動目標(biāo)檢測,其中有被標(biāo)記的必須使用gpu資源進(jìn)行運(yùn)算處理的運(yùn)動目標(biāo)檢測子任務(wù),中心節(jié)點(diǎn)將子任務(wù)任務(wù)分配到計(jì)算節(jié)點(diǎn)集群中的相應(yīng)的計(jì)算節(jié)點(diǎn),中心節(jié)點(diǎn)在進(jìn)行子任務(wù)分配時,如果子任務(wù)需要gpu資源,在gpu資源不足時,則進(jìn)行降級處理為該子任務(wù)分配cpu資源,如果為必須使用gpu資源的子任務(wù),在沒有合適的節(jié)點(diǎn)分配時,則使該子任務(wù)處于等待狀態(tài)。本實(shí)施例所提供的系統(tǒng),在同一個集群內(nèi)同時管理cpu資源和gpu資源,自動根據(jù)系統(tǒng)運(yùn)行情況決策請求采用cpu資源、gpu資源還是cpu與gpu協(xié)同進(jìn)行計(jì)算;并在任務(wù)處理過程中實(shí)時分配節(jié)點(diǎn),調(diào)整資源使用,在進(jìn)行任務(wù)分配時,優(yōu)先將任務(wù)分配到指定的資源節(jié)點(diǎn),在資源不足的情況下可以為其分配其它類型的節(jié)點(diǎn)上的同類資源,或者低一級的計(jì)算節(jié)點(diǎn),使任務(wù)從gpu資源分析降級為cpu資源分析;以達(dá)到集群系統(tǒng)內(nèi)資源統(tǒng)一管理、負(fù)載均衡和資源利用率最大化的效果。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的節(jié)點(diǎn)、系統(tǒng)的具體工作過程,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。
本發(fā)明實(shí)施例所提供的一種節(jié)點(diǎn)集群中任務(wù)分配的方法的計(jì)算機(jī)程序產(chǎn)品,包括存儲了程序代碼的計(jì)算機(jī)可讀存儲介質(zhì),所述程序代碼包括的指令可用于執(zhí)行前面方法實(shí)施例中所述的方法,具體實(shí)現(xiàn)可參見方法實(shí)施例,在此不再贅述。
在本申請所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、節(jié)點(diǎn)和方法,可以通過其它的方式實(shí)現(xiàn)。以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述模塊、單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,又例如,多個單元可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。
所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在一個計(jì)算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機(jī)存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。