本發(fā)明涉及并行與分布式計(jì)算處理領(lǐng)域,尤其涉及一種GPU編程模型中核函數(shù)最優(yōu)尺寸求解方法及裝置。
背景技術(shù):
自本世紀(jì)初以來(lái),圖形處理單元(GPU)逐漸開(kāi)始從特定的圖形加速器向通用計(jì)算設(shè)備進(jìn)行演變。近年來(lái),GPU被設(shè)計(jì)為對(duì)計(jì)算機(jī)圖像的高效處理,其計(jì)算能力也有了極大提高,且與CPU相比有著更高的計(jì)算能力。因此,越來(lái)越多的用戶(hù)開(kāi)始利用高性能的GPU來(lái)解決復(fù)雜的應(yīng)用問(wèn)題。
另外,時(shí)間開(kāi)銷(xiāo)是并行算法最基本的度量方法,其他的評(píng)價(jià)準(zhǔn)則都應(yīng)以縮短時(shí)間開(kāi)銷(xiāo)為目的。并行計(jì)算的時(shí)間開(kāi)銷(xiāo)方程的研究主要是結(jié)合并行機(jī)結(jié)構(gòu)的特點(diǎn)和通信機(jī)制,揭示影響時(shí)間開(kāi)銷(xiāo)的關(guān)鍵因素,將時(shí)間開(kāi)銷(xiāo)精確到若干參數(shù),用來(lái)輔助用戶(hù)改進(jìn)程序或算法,并正確估計(jì)算法的時(shí)間開(kāi)銷(xiāo)和性能,以獲得最優(yōu)性能。
為最大限度發(fā)揮GPU的高性能計(jì)算能力,一般有三種優(yōu)化方案:(1)全局存儲(chǔ)優(yōu)化;(2)共享存儲(chǔ)優(yōu)化;(3)工作流劃分優(yōu)化。其中,前兩種優(yōu)化方案可被歸為GPU的存儲(chǔ)訪問(wèn)優(yōu)化,目前已有很多該方面的相關(guān)研究。對(duì)GPU存儲(chǔ)訪問(wèn)的優(yōu)化可以極大提升CPU與GPU之間的通信效率,但在存儲(chǔ)訪問(wèn)優(yōu)化之后,對(duì)kernel函數(shù)尺寸的工作流劃分優(yōu)化方法直接影響著GPU的性能。同時(shí),對(duì)一個(gè)確定的并行程序來(lái)說(shuō),其線程總數(shù)是確定的,因此對(duì)kernel函數(shù)最優(yōu)尺寸的選擇是很有必要的。其中,kernel函數(shù)尺寸是由網(wǎng)格尺寸和線程塊尺寸兩部分組成的,即kernel函數(shù)中的兩個(gè)尺寸參數(shù)。
目前用戶(hù)通常根據(jù)他們的經(jīng)驗(yàn)和多次嘗試來(lái)決定kernel函數(shù)中網(wǎng)格尺寸和線程塊尺寸大小,而并沒(méi)有一種指導(dǎo)性的方法,這使用戶(hù)在移植并行程序時(shí),對(duì)尺寸劃分的主觀性和隨意性較大,在一定程度上使GPU的高性能無(wú)法得到最大發(fā)揮。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種GPU編程模型中核函數(shù)最優(yōu)尺寸求解方法及裝置,用于解決現(xiàn)有技術(shù)中核函數(shù)尺寸的不合理劃分給GPU的高性能帶來(lái)影響的問(wèn)題。
第一方面,本發(fā)明提供一種GPU編程模型中核函數(shù)最優(yōu)尺寸求解方法,包括:
獲取GPU硬件結(jié)構(gòu)的結(jié)構(gòu)參數(shù);
獲取并行應(yīng)用程序中預(yù)設(shè)的分析參數(shù);
根據(jù)所述結(jié)構(gòu)參數(shù)和所述分析參數(shù)建立時(shí)間開(kāi)銷(xiāo)模型;
根據(jù)所述時(shí)間開(kāi)銷(xiāo)模型建立尺寸優(yōu)化模型;
對(duì)所述尺寸優(yōu)化模型進(jìn)行求解獲得核函數(shù)最優(yōu)尺寸并輸出。
優(yōu)選地,根據(jù)所述結(jié)構(gòu)參數(shù)和所述分析參數(shù)建立時(shí)間開(kāi)銷(xiāo)模型,包括:
根據(jù)所述所述結(jié)構(gòu)參數(shù)和所述分析參數(shù)獲得線程簇訪存并行度和線程簇計(jì)算并行度;
根據(jù)所述結(jié)構(gòu)參數(shù)、分析參數(shù)、線程簇訪存并行度和線程簇計(jì)算并行度獲得線性塊在核函數(shù)上的分配時(shí)間模型和執(zhí)行時(shí)間模型;
將所述分配時(shí)間模型和所述執(zhí)行時(shí)間模型進(jìn)行整合獲得時(shí)間開(kāi)銷(xiāo)模型。
優(yōu)選地,根據(jù)所述所述結(jié)構(gòu)參數(shù)和所述分析參數(shù)獲得線程簇訪存并行度和線程簇計(jì)算并行度,包括:
線程簇訪存并行度的計(jì)算包括:
WMPDM=min(WMPDMax,WMPDReg,WMPDSmem) (3)
其中,WMPD為線程簇訪存并行度,WMPDReg為在流多處理器中寄存器數(shù)量的限制下可同時(shí)運(yùn)行的線程簇?cái)?shù)量,WMPDSmem為在流多處理器中共享內(nèi)存大小的限制下可同時(shí)運(yùn)行的線程簇?cái)?shù)量,WMPDM為在硬件限制下一個(gè)流多處理器上可同時(shí)運(yùn)行的最大線程簇?cái)?shù)量,WMDPMax為在硬件限制下一個(gè)流多處理器上可同時(shí)運(yùn)行的線程簇?cái)?shù)量;
NReg_per_SM為每個(gè)流多處理器中寄存器的數(shù)量,NReg_per_Thread為每個(gè)線程所需寄存器的數(shù)量,warpSize為每個(gè)線程簇中的線程數(shù)目,NSmem_per_SM為每個(gè)流多處理器中共享內(nèi)存的大小,NSmem_per_Thread為每個(gè)線程所需共享內(nèi)存的數(shù)量,NActive_Blocks_per_SM為每個(gè)流多處理器上活動(dòng)線程塊的數(shù)量,NMax_Active_Blocks_per_SM為每個(gè)流多處理器上最大活動(dòng)線程塊數(shù)量,dGrid為線程塊的總數(shù)量,NSMs為GPU結(jié)構(gòu)中流多處理器的數(shù)量,dBlock為每個(gè)線程塊中線程的數(shù)量,NThreads為線程的總數(shù)量,dGrid.x為x維度上線程塊的數(shù)量,dGrid.y為y維度上線程塊的數(shù)量;
線程簇計(jì)算并行度的計(jì)算包括:
TM=Mem_Cycle×Mem_insts (8)
TC=Comp_Cycle×Comp_insts (9)
其中,WCPD為線程簇計(jì)算并行度,TM為每個(gè)線程簇的訪存時(shí)間,TC為每個(gè)warp的計(jì)算時(shí)間。
優(yōu)選地,根據(jù)所述結(jié)構(gòu)參數(shù)、分析參數(shù)、線程簇訪存并行度和線程簇計(jì)算并行度獲得線性塊在核函數(shù)上的分配時(shí)間模型和執(zhí)行時(shí)間模型,包括:
分配時(shí)間模型的建立包括:設(shè)置一個(gè)參數(shù)Tallo,其為每個(gè)線程塊被分配到流多處理器上的時(shí)間,則根據(jù)線程塊的總數(shù)量和每個(gè)線程塊被分配到流多處理器上的時(shí)間建立分配時(shí)間模型:
Tinit=dGrid×Tallo (10)
執(zhí)行時(shí)間模型的建立包括:
若Tc<TM,則執(zhí)行時(shí)間模型為:
若Tc≥TM或N不大于WMPD,則執(zhí)行時(shí)間模型為:
TGPU=N×TC+TM (13)
其中,N為每個(gè)流多處理器上分配到的線程塊個(gè)數(shù),
Tinit為線性塊在核函數(shù)上的分配時(shí)間,TGPU為線性塊在核函數(shù)上的執(zhí)行時(shí)間。
優(yōu)選地,將所述分配時(shí)間模型和所述執(zhí)行時(shí)間模型進(jìn)行整合獲得時(shí)間開(kāi)銷(xiāo)模型,包括:
所述時(shí)間開(kāi)銷(xiāo)模型為:
優(yōu)選地,根據(jù)所述時(shí)間開(kāi)銷(xiāo)模型建立尺寸優(yōu)化模型,包括:
設(shè)置一約束條件,使所述約束條件與所述時(shí)間開(kāi)銷(xiāo)模型結(jié)合轉(zhuǎn)化為核函數(shù)的尺寸優(yōu)化模型;
所述約束條件為:
優(yōu)選地,對(duì)所述尺寸優(yōu)化模型進(jìn)行求解獲得核函數(shù)最優(yōu)尺寸并輸出,包括:
若N<WMDP,根據(jù)庫(kù)恩-卡特條件將尺寸優(yōu)化模型進(jìn)行整理得到:
dGrid.x×dGrid.y=K (20)
根據(jù)公式(20)得到核函數(shù)最優(yōu)尺寸;
若N>W(wǎng)MDP,根據(jù)庫(kù)恩-卡特條件將尺寸優(yōu)化模型整理得到:
根據(jù)公式(23)得到核函數(shù)最優(yōu)尺寸;
若N=WMDP,所述尺寸優(yōu)化模型是一個(gè)分段函數(shù),則分段函數(shù)的轉(zhuǎn)折點(diǎn)為:
dGrid.x×dGrid.y=NSMs×NMax_Active_Blocks_per_SM (24)
根據(jù)公式(24)得到核函數(shù)最優(yōu)尺寸。
優(yōu)選地,所述結(jié)構(gòu)參數(shù)包括:每個(gè)線程簇中的線程數(shù)目、GPU結(jié)構(gòu)中流多處理器的數(shù)量、每個(gè)流多處理器中寄存器的數(shù)量、每個(gè)流多處理器中共享內(nèi)存的大小、每個(gè)流多處理器上最大活動(dòng)線程塊數(shù)量、執(zhí)行每條訪存語(yǔ)句的時(shí)間和執(zhí)行每條計(jì)算語(yǔ)句的時(shí)間。
優(yōu)選地,所述分析參數(shù)包括:每個(gè)線程所需寄存器的數(shù)量、每個(gè)線程所需共享內(nèi)存的數(shù)量、線程的總數(shù)量、x維度上線程塊的數(shù)量、y維度上線程塊的數(shù)量、每個(gè)流多處理器上活動(dòng)線程塊的數(shù)量、每個(gè)線程中訪存指令數(shù)和每個(gè)線程中計(jì)算指令數(shù)。
第二方面,本發(fā)明提供一種GPU編程模型中核函數(shù)最優(yōu)尺寸求解裝置,包括:
第一獲取模塊,用于獲取GPU硬件結(jié)構(gòu)的結(jié)構(gòu)參數(shù);
第二獲取模塊,用于獲取并行應(yīng)用程序中預(yù)設(shè)的分析參數(shù);
第一建立模塊,用于根據(jù)所述結(jié)構(gòu)參數(shù)和所述分析參數(shù)建立時(shí)間開(kāi)銷(xiāo)模型;
第二建立模塊,用于根據(jù)所述時(shí)間開(kāi)銷(xiāo)模型建立尺寸優(yōu)化模型;
計(jì)算輸出模塊,用于對(duì)所述尺寸優(yōu)化模型進(jìn)行求解獲得核函數(shù)最優(yōu)尺寸并輸出。
由上述技術(shù)方案可知,本發(fā)明提供的GPU編程模型中核函數(shù)最優(yōu)尺寸求解方法及裝置,通過(guò)構(gòu)建時(shí)間開(kāi)銷(xiāo)模型能夠滿(mǎn)足并行應(yīng)用程序的基本要求,保證對(duì)時(shí)間開(kāi)銷(xiāo)預(yù)測(cè)的有效性,且預(yù)測(cè)結(jié)果更為真實(shí)。通過(guò)分析時(shí)間開(kāi)銷(xiāo)模型中的參數(shù),增設(shè)約束條件,構(gòu)造尺寸優(yōu)化模型,使對(duì)kernel函數(shù)尺寸的分析更全面合理,提高模型的精度和運(yùn)行效率。采用分類(lèi)討論的思想,對(duì)并行程序在GPU上執(zhí)行時(shí)可能出現(xiàn)的三種情況進(jìn)行詳細(xì)分析,對(duì)每種情況下kernel函數(shù)的尺寸進(jìn)行求解,得到簡(jiǎn)單易操作的公式來(lái)指導(dǎo)用戶(hù)進(jìn)行尺寸的快速選擇??稍诓贿\(yùn)行并行應(yīng)用程序的情況下,通過(guò)靜態(tài)分析得到kernel函數(shù)的最優(yōu)尺寸,大大的提高工作與生產(chǎn)效率。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例1提供的GPU編程模型中核函數(shù)最優(yōu)尺寸求解方法的流程示意圖;
圖2為本發(fā)明實(shí)施例所述方法的整體框架流程圖;
圖3為本發(fā)明實(shí)施例WCPD大于WMPD時(shí)的執(zhí)行時(shí)間示意圖;
圖4為本發(fā)明實(shí)施例WCPD小于WMPD時(shí)的執(zhí)行時(shí)間示意圖;
圖5為本發(fā)明實(shí)施例計(jì)算時(shí)間大于訪存時(shí)間時(shí)的執(zhí)行時(shí)間示意圖;
圖6為本發(fā)明實(shí)施例warp數(shù)量不足時(shí)的執(zhí)行時(shí)間示意圖;
圖7為本發(fā)明實(shí)施例2提供的GPU編程模型中核函數(shù)最優(yōu)尺寸求解裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步詳細(xì)描述。以下實(shí)施例用于說(shuō)明本發(fā)明,但不用來(lái)限制本發(fā)明的范圍。
圖1示出了本發(fā)明一種GPU編程模型中核函數(shù)最優(yōu)尺寸求解方法,包括:
S11、獲取GPU硬件結(jié)構(gòu)的結(jié)構(gòu)參數(shù);
S12、獲取并行應(yīng)用程序中預(yù)設(shè)的分析參數(shù);
S13、根據(jù)所述結(jié)構(gòu)參數(shù)和所述分析參數(shù)建立時(shí)間開(kāi)銷(xiāo)模型;
S14、根據(jù)所述時(shí)間開(kāi)銷(xiāo)模型建立尺寸優(yōu)化模型;
S15、對(duì)所述尺寸優(yōu)化模型進(jìn)行求解獲得核函數(shù)最優(yōu)尺寸并輸出。
下面對(duì)上述方法的各個(gè)步驟進(jìn)行解釋說(shuō)明:
如圖2為本發(fā)明實(shí)施例所述方法的整體框架流程圖,從圖2中可知,需針對(duì)GPU硬件結(jié)構(gòu)和并行應(yīng)用程序進(jìn)行分析以獲取到所需的結(jié)構(gòu)參數(shù)和分析參數(shù)。通過(guò)獲得的參數(shù)得到線程簇(warp)訪存并行度和線程簇(warp)計(jì)算并行度。根據(jù)線程簇(warp)訪存并行度和線程簇(warp)計(jì)算并行度對(duì)線程塊的分配時(shí)間和執(zhí)行時(shí)間進(jìn)行分析,以建立時(shí)間開(kāi)銷(xiāo)模型。對(duì)時(shí)間開(kāi)銷(xiāo)模型增加約束條件形成尺寸優(yōu)化模型,對(duì)尺寸優(yōu)化模型進(jìn)行求解得到核函數(shù)最優(yōu)尺寸并輸出,使系統(tǒng)按照最優(yōu)尺寸進(jìn)行設(shè)置,達(dá)到最大發(fā)揮GDP高性能的目的。
如下表所示為結(jié)構(gòu)參數(shù)和分析參數(shù)的獲取列表:
其中,SM為流多處理器,warp為線程簇,GPU為圖像處理器。
步驟S13:根據(jù)所述結(jié)構(gòu)參數(shù)和所述分析參數(shù)建立時(shí)間開(kāi)銷(xiāo)模型,包括:
S131、根據(jù)所述所述結(jié)構(gòu)參數(shù)和所述分析參數(shù)獲得線程簇訪存并行度和線程簇計(jì)算并行度;
S132、根據(jù)所述結(jié)構(gòu)參數(shù)、分析參數(shù)、線程簇訪存并行度和線程簇計(jì)算并行度獲得線性塊在核函數(shù)上的分配時(shí)間模型和執(zhí)行時(shí)間模型;
S133、將所述分配時(shí)間模型和所述執(zhí)行時(shí)間模型進(jìn)行整合獲得時(shí)間開(kāi)銷(xiāo)模型。
下面對(duì)各個(gè)步驟進(jìn)行解釋說(shuō)明:
線程簇訪存并行度采用以下計(jì)算方式進(jìn)行處理:
WMPDM=min(WMPDMax,WMPDReg,WMPDSmem) (3)
其中,WMPD為線程簇訪存并行度,WMPDReg為在流多處理器中寄存器數(shù)量的限制下可同時(shí)運(yùn)行的線程簇?cái)?shù)量,WMPDSmem為在流多處理器中共享內(nèi)存大小的限制下可同時(shí)運(yùn)行的線程簇?cái)?shù)量,WMPDM為在硬件限制下一個(gè)流多處理器上可同時(shí)運(yùn)行的最大線程簇?cái)?shù)量,WMDPMax為在硬件限制下一個(gè)流多處理器上可同時(shí)運(yùn)行的線程簇?cái)?shù)量;
NReg_per_SM為每個(gè)流多處理器中寄存器的數(shù)量,NReg_per_Thread為每個(gè)線程所需寄存器的數(shù)量,warpSize為每個(gè)線程簇中的線程數(shù)目,NSmem_per_SM為每個(gè)流多處理器中共享內(nèi)存的大小,NSmem_per_Thread為每個(gè)線程所需共享內(nèi)存的數(shù)量,NActive_Blocks_per_SM為每個(gè)流多處理器上活動(dòng)線程塊的數(shù)量,NMax_Active_Blocks_per_SM為每個(gè)流多處理器上最大活動(dòng)線程塊數(shù)量,dGrid為線程塊的總數(shù)量,NSMs為GPU結(jié)構(gòu)中流多處理器的數(shù)量,dBlock為每個(gè)線程塊中線程的數(shù)量,NThreads為線程的總數(shù)量,dGrid.x為x維度上線程塊的數(shù)量,dGrid.y為y維度上線程塊的數(shù)量。
線程簇計(jì)算并行度采用以下計(jì)算公式進(jìn)行處理:
TM=Mem_Cycle×Mem_insts (8)
TC=Comp_Cycle×Comp_insts (9)
其中,WCPD為線程簇計(jì)算并行度,TM為每個(gè)線程簇的訪存時(shí)間,TC為每個(gè)warp的計(jì)算時(shí)間。
需要說(shuō)明的是,分配時(shí)間計(jì)算部分由于輪詢(xún)機(jī)制的存在,需設(shè)置一個(gè)參數(shù)Tallo,來(lái)表示每個(gè)線程塊被分配到SM上的時(shí)間,這樣可由公式(10)計(jì)算得到并行程序中線程塊的分配時(shí)間。
Tinit=dGrid×Tallo (10)
執(zhí)行時(shí)間計(jì)算部分則對(duì)可能出現(xiàn)的三種情況進(jìn)行討論:
(1)Tc<TM
對(duì)于圖3和圖4中可能出現(xiàn)的兩種情況,并行程序在kernel函數(shù)(核函數(shù))上的執(zhí)行時(shí)間都可由公式(12)計(jì)算得到:
(2)Tc≥TM
圖5展示了一種極端的情況,此時(shí)一個(gè)warp的計(jì)算時(shí)間要大于其訪存時(shí)間,并行應(yīng)用程序無(wú)法利用warp的訪存并行度,其在kernel函數(shù)上的執(zhí)行時(shí)間都可由公式(13)計(jì)算得到。
TGPU=N×TC+TM (13)
(3)N不大于WMPD
前兩種情況都描述了當(dāng)流多處理器上有足夠多warp的情況。但如果一個(gè)應(yīng)用程序沒(méi)有足夠多的warp,那么就無(wú)法充分利用GPU的并行度,圖6就展示了這樣一種情況,此時(shí)的執(zhí)行時(shí)間同樣可由公式(13)計(jì)算得到。
其中,N為每個(gè)流多處理器上分配到的線程塊個(gè)數(shù),
Tinit為線性塊在核函數(shù)上的分配時(shí)間,TGPU為線性塊在核函數(shù)上的執(zhí)行時(shí)間。
最后對(duì)以上公式(10)(12)(13)進(jìn)行歸納整理,可得到最終的基于GPU編程模型中kernel函數(shù)的時(shí)間開(kāi)銷(xiāo)模型,如公式(14)所示:
步驟S14:根據(jù)所述時(shí)間開(kāi)銷(xiāo)模型建立尺寸優(yōu)化模型。
設(shè)置一約束條件,使所述約束條件與所述時(shí)間開(kāi)銷(xiāo)模型結(jié)合轉(zhuǎn)化為核函數(shù)的尺寸優(yōu)化模型;
所述約束條件為:
第一個(gè)約束條件表示kernel函數(shù)的線程塊大小要在GPU架構(gòu)的限制內(nèi),不能小于其最低限制,也不能超過(guò)其最高限制;第二個(gè)約束條件表示線程塊的數(shù)目要盡可能的比GPU上流多處理器個(gè)數(shù)多,這樣才能使GPU得到充分的利用;后兩個(gè)約束條件表示線程塊的大小應(yīng)盡量是warp大小的倍數(shù),以避免并行度的浪費(fèi)。
步驟S15:對(duì)所述尺寸優(yōu)化模型進(jìn)行求解獲得核函數(shù)最優(yōu)尺寸并輸出。
根據(jù)N和WMPD之間可能存在的三種關(guān)系:大于、等于和小于,進(jìn)行分類(lèi)討論,來(lái)求解kernel函數(shù)最優(yōu)尺寸,具體分析如下:
(1)N<WMDP。
根據(jù)庫(kù)恩-卡特條件將尺寸優(yōu)化模型進(jìn)行整理得到:
其中,
Nouter_loop為外層循環(huán)的循環(huán)上限,Ninner_loop為內(nèi)層循環(huán)的循環(huán)上限。
然后,可計(jì)算得到梯度函數(shù),如公式(18)所示:
接著,可得到如公式(19)的四元一次方程組:
其中,γ1,γ2為系數(shù)。
根據(jù)上述公式(16)(17)(18)(19)可以得到這種情況下的最優(yōu)解,如公式(20)所示,利用該公式可直接得到kernel函數(shù)的最優(yōu)尺寸。
dGrid.x×dGrid.y=K (20)
(2)N>W(wǎng)MDP
根據(jù)庫(kù)恩-卡特條件將尺寸優(yōu)化模型整理得到:
根據(jù)公式(21)(22)得到得到三個(gè)解,如公式(23)所示:
這種情況下,把dGrid.x×dGrid.y看作一個(gè)整體,此時(shí)函數(shù)圖像為一個(gè)開(kāi)口朝上的拋物線。最優(yōu)解的選取取決于dGrid.x×dGrid.y的值。公式(23)中的(a)表示拋物線的極小值點(diǎn),當(dāng)該點(diǎn)在拋物線取值范圍中的時(shí)候,可用該公式來(lái)計(jì)算kernel函數(shù)的最優(yōu)尺寸;公式(23)中的(b)表示拋物線取值的下邊界,此時(shí)拋物線的極小值點(diǎn)在取值范圍的左側(cè),拋物線的有效部分為單調(diào)遞增函數(shù),可用該公式來(lái)計(jì)算kernel函數(shù)的最優(yōu)尺寸;公式(23)中的(c)表示拋物線取值的上邊界,此時(shí)拋物線的極小值點(diǎn)在取值范圍的右側(cè),拋物線的有效部分為單調(diào)遞減函數(shù),可用該公式來(lái)計(jì)算kernel函數(shù)的最優(yōu)尺寸。
(3)N=WMDP
尺寸優(yōu)化模型是一個(gè)分段函數(shù),因?yàn)閰?shù)NActive_Blocks_per_SM的取值是不確定的,當(dāng)其取值為公式(4)中的第二個(gè)值時(shí),可用(1)中的方法來(lái)計(jì)算kernel函數(shù)的最優(yōu)尺寸;而當(dāng)其取值為公式(4)中的第一個(gè)值時(shí),可用(2)中的方法來(lái)計(jì)算kernel函數(shù)的最優(yōu)尺寸。公式(24)代表該分段函數(shù)的轉(zhuǎn)折點(diǎn):
dGrid.x×dGrid.y=NSMs×NMax_Active_Blocks_per_sM (24)
通過(guò)上述方法即可直接對(duì)不同情況下kernel函數(shù)的最優(yōu)尺寸進(jìn)行求解,方便用戶(hù)的靜態(tài)使用。
本發(fā)明實(shí)施例1所述的GPU編程模型中核函數(shù)最優(yōu)尺寸求解方法,通過(guò)構(gòu)建時(shí)間開(kāi)銷(xiāo)模型能夠滿(mǎn)足并行應(yīng)用程序的基本要求,保證對(duì)時(shí)間開(kāi)銷(xiāo)預(yù)測(cè)的有效性,且預(yù)測(cè)結(jié)果更為真實(shí)。通過(guò)分析時(shí)間開(kāi)銷(xiāo)模型中的參數(shù),增設(shè)約束條件,構(gòu)造尺寸優(yōu)化模型,使對(duì)kernel函數(shù)尺寸的分析更全面合理,提高模型的精度和運(yùn)行效率。采用分類(lèi)討論的思想,對(duì)并行程序在GPU上執(zhí)行時(shí)可能出現(xiàn)的三種情況進(jìn)行詳細(xì)分析,對(duì)每種情況下kernel函數(shù)的尺寸進(jìn)行求解,得到簡(jiǎn)單易操作的公式來(lái)指導(dǎo)用戶(hù)進(jìn)行尺寸的快速選擇??稍诓贿\(yùn)行并行應(yīng)用程序的情況下,通過(guò)靜態(tài)分析得到kernel函數(shù)的最優(yōu)尺寸,大大的提高工作與生產(chǎn)效率。
圖7示出了本發(fā)明實(shí)施例2提供一種GPU編程模型中核函數(shù)最優(yōu)尺寸求解裝置,包括第一獲取模塊21、第二獲取模塊22、第一建立模塊23、第二建立模塊24和計(jì)算輸出模塊25,其中:
第一獲取模塊,用于獲取GPU硬件結(jié)構(gòu)的結(jié)構(gòu)參數(shù);
第二獲取模塊,用于獲取并行應(yīng)用程序中預(yù)設(shè)的分析參數(shù);
第一建立模塊,用于根據(jù)所述結(jié)構(gòu)參數(shù)和所述分析參數(shù)建立時(shí)間開(kāi)銷(xiāo)模型;
第二建立模塊,用于根據(jù)所述時(shí)間開(kāi)銷(xiāo)模型建立尺寸優(yōu)化模型;
計(jì)算輸出模塊,用于對(duì)所述尺寸優(yōu)化模型進(jìn)行求解獲得核函數(shù)最優(yōu)尺寸并輸出。
在執(zhí)行過(guò)程中,第一獲取模塊獲取GPU硬件結(jié)構(gòu)的結(jié)構(gòu)參數(shù),并將結(jié)構(gòu)參數(shù)發(fā)送給第一建立模塊。第二獲取模塊獲取并行應(yīng)用程序中預(yù)設(shè)的分析參數(shù),并將分析參數(shù)發(fā)送給第一建立模塊。第一建立模塊根據(jù)所述結(jié)構(gòu)參數(shù)和所述分析參數(shù)建立時(shí)間開(kāi)銷(xiāo)模型。第二建立模塊根據(jù)所述時(shí)間開(kāi)銷(xiāo)模型建立尺寸優(yōu)化模型。計(jì)算輸出模塊對(duì)所述尺寸優(yōu)化模型進(jìn)行求解獲得核函數(shù)最優(yōu)尺寸并輸出。
在本發(fā)明實(shí)施例2中一種GPU編程模型中核函數(shù)最優(yōu)尺寸求解裝置的具體工作過(guò)程,可以參考上述的一種GPU編程模型中核函數(shù)最優(yōu)尺寸求解方法所描述的內(nèi)容,在此不再一一贅述。
需要說(shuō)明的是,本發(fā)明實(shí)施例中可以通過(guò)硬件處理器(hardware processor)來(lái)實(shí)現(xiàn)相關(guān)功能模塊。
本發(fā)明實(shí)施例2所述的GPU編程模型中核函數(shù)最優(yōu)尺寸求解裝置,通過(guò)構(gòu)建時(shí)間開(kāi)銷(xiāo)模型能夠滿(mǎn)足并行應(yīng)用程序的基本要求,保證對(duì)時(shí)間開(kāi)銷(xiāo)預(yù)測(cè)的有效性,且預(yù)測(cè)結(jié)果更為真實(shí)。通過(guò)分析時(shí)間開(kāi)銷(xiāo)模型中的參數(shù),增設(shè)約束條件,構(gòu)造尺寸優(yōu)化模型,使對(duì)kernel函數(shù)尺寸的分析更全面合理,提高模型的精度和運(yùn)行效率。采用分類(lèi)討論的思想,對(duì)并行程序在GPU上執(zhí)行時(shí)可能出現(xiàn)的三種情況進(jìn)行詳細(xì)分析,對(duì)每種情況下kernel函數(shù)的尺寸進(jìn)行求解,得到簡(jiǎn)單易操作的公式來(lái)指導(dǎo)用戶(hù)進(jìn)行尺寸的快速選擇。可在不運(yùn)行并行應(yīng)用程序的情況下,通過(guò)靜態(tài)分析得到kernel函數(shù)的最優(yōu)尺寸,大大的提高工作與生產(chǎn)效率。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書(shū)中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱(chēng)。
本領(lǐng)域普通技術(shù)人員可以理解:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明權(quán)利要求所限定的范圍。