欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種任務(wù)處理方法及裝置與流程

文檔序號:11774462閱讀:184來源:國知局
一種任務(wù)處理方法及裝置與流程

本發(fā)明屬于高性能計算領(lǐng)域,尤其涉及一種任務(wù)處理方法及裝置。



背景技術(shù):

隨著大數(shù)據(jù)時代的不斷發(fā)展,大規(guī)模數(shù)據(jù)對于科學(xué)計算與科學(xué)統(tǒng)計起著關(guān)鍵作用,而矩陣乘是大型科學(xué)計算中較為普及的一種算法。并且隨著數(shù)據(jù)集的增加和計算復(fù)雜度的提升,科學(xué)實現(xiàn)中對算法性能的要求也越來越高,算法性能的提升對推進工程、項目的研究進度起著至關(guān)重要的作用,而限于計算機硬件資源內(nèi)存、計算速度等的限制,對于完成某個大規(guī)模矩陣的運算,單臺機器上實現(xiàn)往往需要數(shù)十天甚至數(shù)月的時間,并且對于內(nèi)存容量較小的計算平臺,其能力不足以支撐大規(guī)模數(shù)據(jù)集的存儲,嚴(yán)重情況下往往會導(dǎo)致程序的崩潰,從而限制了大規(guī)模數(shù)據(jù)集計算的實現(xiàn)。

傳統(tǒng)的矩陣算法實現(xiàn)一般基于單個計算節(jié)點上各矩陣元素的乘積依次求和,且采用串行的計算方式,即順序讀取數(shù)據(jù),等待前一步計算完成才開始下一步的計算。假如所要計算的矩陣規(guī)模為上萬階,采用串行方式實現(xiàn)兩個矩陣相乘法所帶來的時間復(fù)雜度及所消耗的成本可想而知。

因此,迫切需要提供一種高效、低成本的任務(wù)處理方案來解決上述技術(shù)問題。



技術(shù)實現(xiàn)要素:

本發(fā)明提供一種任務(wù)處理方法及裝置,以解決上述問題。

本發(fā)明實施例提供一種任務(wù)處理方法。上述方法包括以下步驟:通過多個數(shù)據(jù)節(jié)點并行讀取對應(yīng)的矩陣子數(shù)據(jù)集并分別將所述矩陣子數(shù)據(jù)集的計算任務(wù)劃分為多個子任務(wù)即多個子矩陣塊;

所述數(shù)據(jù)節(jié)點將所述子矩陣塊分配至對應(yīng)的計算節(jié)點并由所述計算節(jié)點執(zhí)行并行計算。

本發(fā)明實施例提供一種任務(wù)處理裝置,包括讀取模塊、劃分模塊、分配計算模塊;其中,所述讀取模塊通過所述劃分模塊與所述分配計算模塊相連;

所述讀取模塊,用于通過多個數(shù)據(jù)節(jié)點并行讀取對應(yīng)的矩陣子數(shù)據(jù)集;

所述劃分模塊,用于分別將所述矩陣子數(shù)據(jù)集的計算任務(wù)劃分為多個子任務(wù)即多個子矩陣塊;

所述分配計算模塊,用于將所述子矩陣塊分配至對應(yīng)的計算節(jié)點并由所述計算節(jié)點執(zhí)行并行計算。

通過以下方案:通過多個數(shù)據(jù)節(jié)點并行讀取對應(yīng)的矩陣子數(shù)據(jù)集并分別將所述矩陣子數(shù)據(jù)集的計算任務(wù)劃分為多個子任務(wù)即多個子矩陣塊;所述數(shù)據(jù)節(jié)點將所述子矩陣塊分配至對應(yīng)的計算節(jié)點并由所述計算節(jié)點執(zhí)行并行計算即文件的并行讀取和任務(wù)的并行執(zhí)行,實現(xiàn)了高效、低成本的任務(wù)處理,大大增強了用戶體驗。

通過以下方案:所述子矩陣塊包含大于1的行數(shù)且行數(shù)為連續(xù),使得計算節(jié)點將計算結(jié)果一次性發(fā)送給數(shù)據(jù)節(jié)點,減少了通信次數(shù),從而減少通信開銷。

附圖說明

此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:

圖1所示為本發(fā)明實施例1的任務(wù)處理方法流程圖;

圖2所示為本發(fā)明實施例2的設(shè)計架構(gòu)圖;

圖3所示為本發(fā)明實施例3的主從進程任務(wù)分配實施過程圖;

圖4所示為本發(fā)明實施例4的任務(wù)處理裝置結(jié)構(gòu)圖。

具體實施方式

下文中將參考附圖并結(jié)合實施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。

圖1所示為本發(fā)明實施例1的任務(wù)處理方法流程圖,包括以下步驟:

步驟101:通過多個數(shù)據(jù)節(jié)點并行讀取對應(yīng)的矩陣子數(shù)據(jù)集并分別將所述矩陣子數(shù)據(jù)集的計算任務(wù)劃分為多個子任務(wù)即多個子矩陣塊;

進一步地,通過多個數(shù)據(jù)節(jié)點并行讀取對應(yīng)的矩陣子數(shù)據(jù)集的過程為:

多個數(shù)據(jù)節(jié)點分別通過對應(yīng)的數(shù)據(jù)讀取主進程打開存放矩陣的文件,返回一個文件句柄;

計算每個數(shù)據(jù)讀取主進程對應(yīng)的矩陣文件中的偏移量,獲得每個數(shù)據(jù)讀取主進程所要讀取的矩陣子數(shù)據(jù)集在矩陣文件中的邏輯位置;

所述數(shù)據(jù)讀取主進程根據(jù)所要讀取的矩陣子數(shù)據(jù)集在矩陣文件中的邏輯位置,讀取對應(yīng)的矩陣子數(shù)據(jù)集。

優(yōu)選地,多個數(shù)據(jù)節(jié)點并行讀取對應(yīng)的矩陣子數(shù)據(jù)集后,存儲于內(nèi)存中。

進一步地,所述數(shù)據(jù)節(jié)點根據(jù)計算節(jié)點數(shù)量,將所述矩陣子數(shù)據(jù)集平均劃分為多個子矩陣塊并發(fā)送至對應(yīng)的計算節(jié)點。

優(yōu)選地,所述子矩陣塊包含大于1的行數(shù)且行數(shù)為連續(xù)。

若所述數(shù)據(jù)節(jié)點讀取的矩陣子數(shù)據(jù)集的行數(shù)為m,計算節(jié)點個數(shù)為child_process,則分配每個計算節(jié)點per_rank=m/child_process行,

對于余下的extra=m%child_process行,將extra行平均分配到1至extra號計算節(jié)點,1至extra號計算節(jié)點每個進程增加一行。

步驟102:所述數(shù)據(jù)節(jié)點將所述子矩陣塊分配至對應(yīng)的計算節(jié)點并由所述計算節(jié)點執(zhí)行并行計算。

進一步地,所述計算節(jié)點完成所述子矩陣塊的計算后,將計算結(jié)果發(fā)送至對應(yīng)的數(shù)據(jù)節(jié)點。

進一步地,從所述數(shù)據(jù)節(jié)點中選擇一個數(shù)據(jù)節(jié)點,作為用于統(tǒng)計的數(shù)據(jù)節(jié)點;

所述用于統(tǒng)計的數(shù)據(jù)節(jié)點對從其他數(shù)據(jù)節(jié)點中獲取的計算結(jié)果進行匯總并存儲。

本發(fā)明實施例所提出的方法一方面通過并行文件讀取的方式將大規(guī)模數(shù)據(jù)集劃分成眾多矩陣子數(shù)據(jù)集,解決內(nèi)存限制問題,另一方面通過將矩陣子數(shù)據(jù)集的計算任務(wù)劃分為多個子任務(wù),實現(xiàn)多個計算子任務(wù)的并行執(zhí)行,從而提高算法基于大規(guī)模數(shù)據(jù)集下的計算效率。

(1)對于大規(guī)模數(shù)據(jù)集的處理,采用并行文件讀取的方式,利用并行文件i/o技術(shù),當(dāng)矩陣存放于文件中,在集群多節(jié)點情況下,選擇幾個節(jié)點作為數(shù)據(jù)節(jié)點從文件中通過指定顯示偏移,讀取文件中不同位置的數(shù)據(jù),將大矩陣數(shù)據(jù)集劃分,每個數(shù)據(jù)節(jié)點從矩陣文件中獲取整個矩陣數(shù)據(jù)集的一部分子集,如果多個數(shù)據(jù)節(jié)點并行讀取數(shù)據(jù)則這多個節(jié)點可同時作為mpi主進程進行數(shù)據(jù)分發(fā)與管理。這種方式一方面可解決矩陣規(guī)模太大,單節(jié)點內(nèi)存不足以存儲整個矩陣容量的問題,同時又利用并行文件偏移地址讀取的方式實現(xiàn)各數(shù)據(jù)節(jié)點并行讀取數(shù)據(jù),提高文件的訪問效率。

(2)對于串行矩陣計算效率低下的問題,采用多個子任務(wù)劃分的方式,在集群多節(jié)點系統(tǒng)中,利用mpi多進程通信技術(shù)將(1)中各數(shù)據(jù)節(jié)點并行讀取的矩陣子數(shù)據(jù)集的計算任務(wù)劃分成多個子任務(wù),即將矩陣劃分為多個子矩陣塊,分配至不同的進程處理,處理子矩陣塊的進程所在的節(jié)點為計算節(jié)點(主進程所在的節(jié)點為數(shù)據(jù)節(jié)點,從進程所在的節(jié)點為計算節(jié)點),各計算節(jié)點間的計算任務(wù)并行執(zhí)行。

本發(fā)明實施例提供一套有效的主進程、從進程協(xié)同管理方法,主進程完成任務(wù)的劃分、數(shù)據(jù)的分發(fā)與搜集工作,從進程完成子數(shù)據(jù)集的并行計算,若有多個數(shù)據(jù)節(jié)點并行讀取數(shù)據(jù),則可以認(rèn)為有多個主進程,每個主進程負(fù)責(zé)多個從進程(即每個數(shù)據(jù)節(jié)點負(fù)責(zé)多個計算節(jié)點)。

(3)本發(fā)明實施例所提出的矩陣乘優(yōu)化方法可運行于大規(guī)模集群平臺,利用mpi技術(shù),針對大規(guī)模數(shù)據(jù)集,采用多個數(shù)據(jù)節(jié)點并行文件讀取的方式,通過設(shè)置偏移地址,不同數(shù)據(jù)節(jié)點同時獲取文件不同位置的子數(shù)據(jù)集,這樣既可提高文件讀取效率,又解決了單節(jié)點內(nèi)存有限不足以存儲整個數(shù)據(jù)集的問題。同時為了提高算法的計算效率,利用mpi多進程協(xié)同合作的方式,將某一矩陣數(shù)據(jù)集的計算任務(wù)劃分為多個子矩陣塊的計算,各從進程負(fù)責(zé)其中某一子矩陣塊,各從進程間并行完成對應(yīng)子矩陣塊的計算。

(4)本發(fā)明實施例的顯著特點是在大規(guī)模集群系統(tǒng)中,針對大規(guī)模數(shù)據(jù)集,在單節(jié)點機器不足以存儲整個數(shù)據(jù)集的情況下,設(shè)置多個數(shù)據(jù)節(jié)點并行讀取對應(yīng)子數(shù)據(jù)集,對于不同數(shù)據(jù)節(jié)點中的矩陣數(shù)據(jù),劃分為多個子矩陣塊,子矩陣塊被分配至多個計算節(jié)點并行完成不同子矩陣塊的處理,各節(jié)點間協(xié)同工作,最后由數(shù)據(jù)節(jié)點統(tǒng)一完成通信的管理與結(jié)果數(shù)據(jù)的整理。

下面進行詳細(xì)說明:

基于集群系統(tǒng)的大規(guī)模矩陣乘的優(yōu)化方法中,分為數(shù)據(jù)節(jié)點與計算節(jié)點,當(dāng)單個節(jié)點內(nèi)存不足以存儲數(shù)據(jù)集時,多個節(jié)點采用并行文件工/o的方式,文件中通過指定顯示偏移不同節(jié)點讀取文件中不同位置的數(shù)據(jù),這些節(jié)點稱為數(shù)據(jù)節(jié)點。不同于傳統(tǒng)的mpi程序,本發(fā)明實施例所實現(xiàn)的mpi程序中存在多個“主進程”,即數(shù)據(jù)節(jié)點中并行讀取文件的每個進程我們稱為主進程,為了提高計算效率,各主進程將所獲得的子數(shù)據(jù)集再次劃分(及將數(shù)據(jù)節(jié)點中的矩陣子數(shù)據(jù)集劃分為多個子矩陣塊),分配至相應(yīng)計算節(jié)點(從進程所在的節(jié)點我們稱為計算節(jié)點),多個計算節(jié)點獲取子矩陣塊后并行執(zhí)行計算,替代矩陣劃分之前的串行計算,通過兩次并行(數(shù)據(jù)讀取并行與數(shù)據(jù)計算并行)與兩次劃分(大規(guī)模數(shù)據(jù)集劃分為子數(shù)據(jù)集與矩陣塊劃分為子矩陣塊),實現(xiàn)基于集群平臺大規(guī)模矩陣乘的算法優(yōu)化。本發(fā)明實施例的實現(xiàn)框架如圖2所示,各個數(shù)據(jù)節(jié)點從數(shù)據(jù)庫中獲取矩陣子數(shù)據(jù)集即sub_dataset;各數(shù)據(jù)節(jié)點負(fù)責(zé)不同的計算節(jié)點(計算節(jié)點獲取對應(yīng)的子矩陣塊,例如:sub1,并將計算結(jié)果res返回給對應(yīng)的數(shù)據(jù)節(jié)點),最后的計算結(jié)果由其中一個數(shù)據(jù)節(jié)點進行統(tǒng)一匯總(res_dataset)和存儲。

多個數(shù)據(jù)節(jié)點(即多個數(shù)據(jù)讀取主進程)并行讀取文件的實施方式如下,首先調(diào)用mpi_file_open(comm,filename…),每個進程都打開存放矩陣的文件,返回一個文件句柄,各個進程對文件的操作都通過句柄來實現(xiàn)。計算每個進程對應(yīng)矩陣文件中的偏移量,得到每個進程所需數(shù)據(jù)在矩陣文件中的邏輯位置,這樣各個進程(數(shù)據(jù)節(jié)點)可獲取矩陣數(shù)據(jù)集的一部分(即子數(shù)據(jù)集),各數(shù)據(jù)讀取進程通過調(diào)用mpi_file_read_at()分別讀文件中矩陣的不同部分,這樣每個數(shù)據(jù)節(jié)點將獲取的子矩陣數(shù)據(jù)集存放于各自內(nèi)存中進行下一步計算操作。

前面提到,本發(fā)明實施例所實現(xiàn)的方法中是利用mpi多進程技術(shù)將數(shù)據(jù)集二次劃分,第一次劃分是多個數(shù)據(jù)節(jié)點(主進程)并行讀取大規(guī)模數(shù)據(jù)集中的子數(shù)據(jù)集并存儲于內(nèi)存中,第二次劃分即數(shù)據(jù)節(jié)點將矩陣子數(shù)據(jù)集再次劃分為多個子矩陣塊,各子矩陣塊的計算被分配至對應(yīng)的計算節(jié)點(從進程),計算節(jié)點之間并行執(zhí)行子矩陣塊的計算,實現(xiàn)將一個大規(guī)模數(shù)據(jù)集的串行計算轉(zhuǎn)換為為多個計算節(jié)點針對子矩陣塊的并行計算。在多個數(shù)據(jù)節(jié)點并行讀取數(shù)據(jù)集的條件下,每個數(shù)據(jù)節(jié)點對應(yīng)多個計算節(jié)點,數(shù)據(jù)節(jié)點作為一個主進程將矩陣子數(shù)據(jù)集平均劃分為多個子矩陣塊發(fā)送至相應(yīng)計算節(jié)點(計算節(jié)點作為從進程),計算節(jié)點在并行完成子矩陣塊的計算后,將計算結(jié)果統(tǒng)一發(fā)送至對應(yīng)數(shù)據(jù)節(jié)點,各數(shù)據(jù)節(jié)點完成數(shù)據(jù)的分配和搜集,最后選擇一個數(shù)據(jù)節(jié)點完成結(jié)果數(shù)據(jù)的匯總與存儲。

對于數(shù)據(jù)節(jié)點(主進程)劃分子矩陣塊至計算節(jié)點(從進程)實現(xiàn)并行計算的實施過程如圖3所示,主要包括以下關(guān)鍵點:

主進程進行子矩陣塊平均劃分,并發(fā)送連續(xù)數(shù)行數(shù)據(jù)至從進程;

從進程并行計算子矩陣塊,計算結(jié)果發(fā)送至主進程;

主進程接收從進程的反饋數(shù)據(jù),結(jié)果匯總與存儲。

另外,在子矩陣塊劃分與發(fā)送過程中,為保證內(nèi)存連續(xù)讀取,主進程發(fā)送給每個從進程的數(shù)據(jù)都需是矩陣中連續(xù)的幾行,各從進程接收主進程數(shù)據(jù)后進行計算,然后將計算結(jié)果一次性發(fā)送給主進程,這樣可減少通信次數(shù),從而減少通信開銷。對于余數(shù)的處理,若當(dāng)前矩陣行數(shù)為m,從進程個數(shù)為child_process,則首先每個從進程會得到per_rank=m/child_process行,對于余下的extra=m%child_process行,為保證各進程處理的負(fù)載均衡,將extra行平均分配到1至extra號進程,1至extra號進程每個進程增加一行,即主進程向1至extra號從進程每個發(fā)送m/num_process+1行數(shù)據(jù),向extra至child_process進程發(fā)送m/child_process行數(shù)據(jù)。

圖4所示為本發(fā)明實施例4的任務(wù)處理裝置結(jié)構(gòu)圖,包括讀取模塊、劃分模塊、分配計算模塊;其中,所述讀取模塊通過所述劃分模塊與所述分配計算模塊相連;

所述讀取模塊,用于通過多個數(shù)據(jù)節(jié)點并行讀取對應(yīng)的矩陣子數(shù)據(jù)集;

所述劃分模塊,用于分別將所述矩陣子數(shù)據(jù)集的計算任務(wù)劃分為多個子任務(wù)即多個子矩陣塊;

所述分配計算模塊,用于將所述子矩陣塊分配至對應(yīng)的計算節(jié)點并由所述計算節(jié)點執(zhí)行并行計算。

進一步地,所述子矩陣塊包含大于1的行數(shù)且行數(shù)為連續(xù)。

通過以下方案:通過多個數(shù)據(jù)節(jié)點并行讀取對應(yīng)的矩陣子數(shù)據(jù)集并分別將所述矩陣子數(shù)據(jù)集的計算任務(wù)劃分為多個子任務(wù)即多個子矩陣塊;所述數(shù)據(jù)節(jié)點將所述子矩陣塊分配至對應(yīng)的計算節(jié)點并由所述計算節(jié)點執(zhí)行并行計算即文件的并行讀取和任務(wù)的并行執(zhí)行,實現(xiàn)了高效、低成本的任務(wù)處理,大大增強了用戶體驗。

通過以下方案:所述子矩陣塊包含大于1的行數(shù)且行數(shù)為連續(xù),使得計算節(jié)點將計算結(jié)果一次性發(fā)送給數(shù)據(jù)節(jié)點,減少了通信次數(shù),從而減少通信開銷。

以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
蒲城县| 乌兰县| 禄劝| 闵行区| 四会市| 县级市| 巴青县| 丹棱县| 宁蒗| 天津市| 呼玛县| 乐清市| 三原县| 清水河县| 山东省| 达孜县| 稻城县| 抚远县| 赞皇县| 疏附县| 寿光市| 丰县| 谷城县| 东宁县| 韶山市| 宜良县| 思茅市| 东安县| 遵化市| 柘荣县| 荆门市| 西安市| 泸州市| 河东区| 如东县| 攀枝花市| 高安市| 台州市| 玉屏| 新建县| 凯里市|