一種cpu/gpu的混合并行計(jì)算方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種CPU/GPU的混合并行計(jì)算方法及裝置。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)技術(shù)的迅速發(fā)展,數(shù)據(jù)的處理級別也越來越大。為了解決日漸緊迫的大數(shù)據(jù)處理問題,目前已經(jīng)提出了 MapReduce編程模型,MapReduce是一種分布式編程模型,可以方便地把海量數(shù)據(jù)集分發(fā)到計(jì)算集群的各節(jié)點(diǎn)上,以使多個(gè)節(jié)點(diǎn)共同處理,從而實(shí)現(xiàn)大數(shù)據(jù)的快速處理。
[0003]為了進(jìn)一步提高M(jìn)apReduce的計(jì)算性能,學(xué)術(shù)界和工業(yè)界對此都做出了許多相關(guān)的研宄。單核GPU (Graphics Processing Unit,圖形處理器)的出現(xiàn)給系統(tǒng)的性能提升帶來了巨大的效果,其中,GPU中包含上百個(gè)流處理核心,其計(jì)算性能超過了每秒萬億次級別,相當(dāng)于一個(gè)高性能計(jì)算集群,從而可以實(shí)現(xiàn)海量數(shù)據(jù)的快速計(jì)算。
[0004]然而,利用單核GPU來實(shí)現(xiàn)的MapReduce編程模型,導(dǎo)致計(jì)算效率較低。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供一種CPU/GPU的混合并行計(jì)算方法及裝置,以已解決現(xiàn)有技術(shù)中計(jì)算效率較低的問題。
[0006]本發(fā)明實(shí)施例提供了一種CPU/GPU的混合并行計(jì)算方法,利用一個(gè)以上的計(jì)算節(jié)點(diǎn)建立計(jì)算集群,每一個(gè)計(jì)算節(jié)點(diǎn)中包括CPU和GPU,確定調(diào)度策略;還包括:
[0007]獲取一個(gè)以上的待處理任務(wù);
[0008]將獲取的所述一個(gè)以上的待處理任務(wù)緩存到任務(wù)隊(duì)列中;
[0009]根據(jù)所述調(diào)度策略,將所述任務(wù)隊(duì)列中的所述一個(gè)以上的待處理任務(wù)調(diào)度給一個(gè)以上的計(jì)算節(jié)點(diǎn);
[0010]在被調(diào)度有待處理任務(wù)的計(jì)算節(jié)點(diǎn)中,CPU對調(diào)度的待處理任務(wù)逐個(gè)進(jìn)行預(yù)處理,并在每預(yù)處理完一個(gè)任務(wù)則將預(yù)處理之后的任務(wù)映射到GPU的顯存中;
[0011]GPU對映射到顯存中的任務(wù)進(jìn)行計(jì)算,并返回計(jì)算結(jié)果。
[0012]優(yōu)選地,在所述將所述任務(wù)隊(duì)列中的所述一個(gè)以上的待處理任務(wù)調(diào)度給一個(gè)以上的計(jì)算節(jié)點(diǎn)之前,進(jìn)一步包括:
[0013]遍歷所述任務(wù)隊(duì)列中所述一個(gè)以上的待處理任務(wù);在每遍歷一個(gè)待處理任務(wù)時(shí)獲取當(dāng)前遍歷的待處理任務(wù)的操作屬性并記錄;在將所述任務(wù)隊(duì)列遍歷結(jié)束后,將具有相同操作屬性的待處理任務(wù)合并為同一個(gè)任務(wù);并對合并后的任務(wù)進(jìn)行分組,并根據(jù)分組后的任務(wù)建立哈希索引區(qū),以將分組后的任務(wù)保存在所述哈希索引區(qū)中。
[0014]優(yōu)選地,所述GPU對映射到顯存中的任務(wù)進(jìn)行計(jì)算,包括:
[0015]將映射到顯存中的任務(wù)分割為一個(gè)以上的任務(wù)塊,并針對每一個(gè)任務(wù)塊分配相應(yīng)的Map任務(wù),并將每一個(gè)任務(wù)塊對應(yīng)的Map任務(wù)分配到GPU的各個(gè)SM處理器上,以利用各個(gè)SM處理器針對每一個(gè)任務(wù)塊執(zhí)行Map操作;
[0016]通過Shuffle操作將中間任務(wù)反向定位到GPU顯存中,并在Reduce階段匯總Map階段的運(yùn)算結(jié)果。
[0017]優(yōu)選地,
[0018]進(jìn)一步包括:預(yù)先設(shè)置訪問控制列表,所述訪問控制列表中包括任務(wù)及具有操作該任務(wù)權(quán)限的用戶的對應(yīng)關(guān)系;
[0019]在所述獲取一個(gè)以上的待處理任務(wù)之前,進(jìn)一步包括:根據(jù)所述訪問控制列表確定提交待處理任務(wù)的用戶是否具有對該待處理任務(wù)的操作權(quán)限,在具有時(shí),執(zhí)行獲取該待處理任務(wù)的操作。
[0020]本發(fā)明實(shí)施例還提供了一種CPU/GPU的混合并行計(jì)算裝置,利用一個(gè)以上的計(jì)算節(jié)點(diǎn)建立計(jì)算集群,每一個(gè)計(jì)算節(jié)點(diǎn)中包括CPU和GPU,確定調(diào)度策略,包括:
[0021]任務(wù)緩存模塊,用于獲取一個(gè)以上的待處理任務(wù),并將獲取的所述一個(gè)以上的待處理任務(wù)緩存到任務(wù)隊(duì)列中;
[0022]任務(wù)調(diào)度模塊,用于根據(jù)所述調(diào)度策略,將所述任務(wù)隊(duì)列中的所述一個(gè)以上的待處理任務(wù)調(diào)度給一個(gè)以上的計(jì)算節(jié)點(diǎn);
[0023]計(jì)算節(jié)點(diǎn),用于在被調(diào)度有待處理任務(wù)時(shí)利用CPU對調(diào)度的待處理任務(wù)逐個(gè)進(jìn)行預(yù)處理,并在每預(yù)處理完一個(gè)任務(wù)則將預(yù)處理之后的任務(wù)映射到GPU的顯存中;利用GPU對映射到顯存中的任務(wù)進(jìn)行計(jì)算,并返回計(jì)算結(jié)果。
[0024]優(yōu)選地,
[0025]所述任務(wù)緩存模塊,用于遍歷所述任務(wù)隊(duì)列中所述一個(gè)以上的待處理任務(wù);在每遍歷一個(gè)待處理任務(wù)時(shí)獲取當(dāng)前遍歷的待處理任務(wù)的操作屬性并記錄;在將所述任務(wù)隊(duì)列遍歷結(jié)束后,將具有相同操作屬性的待處理任務(wù)合并為同一個(gè)任務(wù);并對合并后的任務(wù)進(jìn)行分組,并根據(jù)分組后的任務(wù)建立哈希索引區(qū),以將分組后的任務(wù)保存在所述哈希索引區(qū)中。
[0026]優(yōu)選地,所述計(jì)算節(jié)點(diǎn),用于將映射到顯存中的任務(wù)分割為一個(gè)以上的任務(wù)塊,并針對每一個(gè)任務(wù)塊分配相應(yīng)的Map任務(wù),并將每一個(gè)任務(wù)塊對應(yīng)的Map任務(wù)分配到GPU的各個(gè)SM處理器上,以利用各個(gè)SM處理器針對每一個(gè)任務(wù)塊執(zhí)行Map操作;通過Shuffle操作將中間任務(wù)反向定位到GPU顯存中,并在Reduce階段匯總Map階段的運(yùn)算結(jié)果。
[0027]優(yōu)選地,進(jìn)一步包括:
[0028]安全模塊,用于根據(jù)預(yù)先設(shè)置的訪問控制列表確定提交待處理任務(wù)的用戶是否具有對該待處理任務(wù)的操作權(quán)限,在具有時(shí),執(zhí)行獲取該待處理任務(wù)的操作,所述訪問控制列表中包括任務(wù)及具有操作該任務(wù)權(quán)限的用戶的對應(yīng)關(guān)系。
[0029]本發(fā)明實(shí)施例提供了一種CPU/GPU的混合并行計(jì)算方法及裝置,通過利用CPU和GPU相結(jié)合,由CPU對待處理任務(wù)進(jìn)行預(yù)處理,由GPU對預(yù)處理后的任務(wù)進(jìn)行計(jì)算,在GPU進(jìn)行計(jì)算的過程中,CPU能夠繼續(xù)獲取待處理任務(wù)進(jìn)行預(yù)處理,從而實(shí)現(xiàn)了 CPU和GPU的并行計(jì)算,不僅對GPU的計(jì)算能力實(shí)現(xiàn)了擴(kuò)容,還提高了計(jì)算節(jié)點(diǎn)的計(jì)算效率。
【附圖說明】
[0030]圖1是本發(fā)明實(shí)施例提供的方法流程圖;
[0031]圖2是本發(fā)明另一實(shí)施例提供的方法流程圖;
[0032]圖3是本發(fā)明實(shí)施例提供的裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0033]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0034]本發(fā)明實(shí)施例提供了一種CPU/GPU的混合并行計(jì)算方法,請參見圖1,利用一個(gè)以上的計(jì)算節(jié)點(diǎn)建立集群,每一個(gè)計(jì)算節(jié)點(diǎn)中包括CPU和GPU,確定調(diào)度策略;該方法可以包括以下步驟:
[0035]步驟101:獲取一個(gè)以上的待處理任務(wù)。
[0036]步驟102:將獲取的一個(gè)以上的待處理任務(wù)緩存到任務(wù)隊(duì)列中。
[0037]步驟103:根據(jù)調(diào)度策略,將任務(wù)隊(duì)列中的一個(gè)以上的待處理任務(wù)調(diào)度給一個(gè)以上的計(jì)算節(jié)點(diǎn)。
[0038]步驟104:在被調(diào)度有待處理任務(wù)的計(jì)算節(jié)點(diǎn)中,CPU對調(diào)度的待處理任務(wù)逐個(gè)進(jìn)行預(yù)處理,并在每預(yù)處理完一個(gè)任務(wù)則將預(yù)處理之后的任務(wù)映射到GPU的顯存中。
[0039]步驟105:GPU對映射到顯存中的任務(wù)進(jìn)行計(jì)算,并返回計(jì)算結(jié)果。
[0040]根據(jù)本方案,通過利用CPU和GPU相結(jié)合,由CPU對待處理任務(wù)進(jìn)行預(yù)處理,由GPU對預(yù)處理后的任務(wù)進(jìn)行計(jì)算,在GPU進(jìn)行計(jì)算的過程中,CPU能夠繼續(xù)獲取待處理任務(wù)進(jìn)行預(yù)處理,從而實(shí)現(xiàn)了 CPU和GPU的并行計(jì)算,不僅對GPU的計(jì)算能力實(shí)現(xiàn)了擴(kuò)容,還提高了計(jì)算節(jié)點(diǎn)的計(jì)算效率。
[0041]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖及具體實(shí)施例對本發(fā)明作進(jìn)一步地詳細(xì)描述。
[0042]本發(fā)明實(shí)施例提供了一種CPU/GPU的混合并行計(jì)算方法,請參見圖2,該方法可以包括以下步驟:
[0043]201:利用一個(gè)以上的計(jì)算節(jié)點(diǎn)建立計(jì)算集群,每一個(gè)計(jì)算節(jié)點(diǎn)中包括CPU和GPU。
[0044]在本實(shí)施例中,由于單核GPU或單核CPU在進(jìn)行海量數(shù)據(jù)的計(jì)算時(shí)效率較低,因此,可以考慮在計(jì)算節(jié)點(diǎn)中利用CPU和GPU的混合并行計(jì)算,以提高海量數(shù)據(jù)的計(jì)算效率。