亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

圖形處理單元中的存儲(chǔ)器共享的制作方法

文檔序號(hào):6495601閱讀:176來(lái)源:國(guó)知局
圖形處理單元中的存儲(chǔ)器共享的制作方法
【專利摘要】本發(fā)明的方面是針對(duì)一種用圖形處理單元GPU處理數(shù)據(jù)的方法。根據(jù)本發(fā)明的一些方面,所述方法包括接收定義著色器處理器的執(zhí)行次序的輸入,其中所述執(zhí)行次序包括多個(gè)內(nèi)核標(biāo)號(hào)及多個(gè)工作組標(biāo)號(hào)。所述方法還可包含將所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的工作組指派給所述著色器處理器。所述方法還可包括通過所述著色器處理器執(zhí)行所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的所述工作組以處理輸入數(shù)據(jù),其中將執(zhí)行次序流執(zhí)行包括在所述多個(gè)工作組標(biāo)號(hào)中所識(shí)別的兩個(gè)或兩個(gè)以上工作組之間共享輸入數(shù)據(jù)。
【專利說明】圖形處理單元中的存儲(chǔ)器共享
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及使用圖形處理單元(GPU)來(lái)處理數(shù)據(jù)。
【背景技術(shù)】
[0002]圖形處理裝置可經(jīng)實(shí)施以進(jìn)行多種圖像處理或其它通用處理應(yīng)用程序。舉例來(lái)說,圖形處理單元(GPU,有時(shí)被稱作通用圖形處理單元(GPGPU))可執(zhí)行受益于高平行度的應(yīng)用程序,例如色彩校正算法、人臉檢測(cè)算法、模式辨識(shí)算法、擴(kuò)增實(shí)境應(yīng)用程序、多種算法應(yīng)用程序(例如,小波變換、傅里葉變換等)或多種其它應(yīng)用程序。
[0003]一般來(lái)說,GPU經(jīng)設(shè)計(jì)以使用駐留于GPU中的一個(gè)或一個(gè)以上著色器處理器來(lái)處理一系列指令,所述指令可被稱作著色器指令。在實(shí)例圖像處理應(yīng)用程序中,著色器指令可定義將由著色器處理器對(duì)組成圖像的像素執(zhí)行的一個(gè)或一個(gè)以上數(shù)學(xué)操作。通過將著色器指令應(yīng)用于像素,根據(jù)由著色器指令定義的數(shù)學(xué)操作而改變或評(píng)估像素值。
[0004]可將著色器指令組織成被稱作內(nèi)核的著色器程序代碼。內(nèi)核可定義由GPU執(zhí)行的功能或任務(wù)。為了執(zhí)行內(nèi)核,將程序代碼劃分成若干工作項(xiàng)(例如,GPU中的基本工作單元),工作項(xiàng)被組織成一個(gè)或一個(gè)以上工作組(例如,一組工作項(xiàng))。

【發(fā)明內(nèi)容】

[0005]一般來(lái)說,本發(fā)明的方面涉及產(chǎn)生及處理內(nèi)核及工作組執(zhí)行次序以用于圖形處理。內(nèi)核及工作組執(zhí)行次序可提供與圖形處理單元(GPU)的著色器處理器(SP)相關(guān)聯(lián)的存儲(chǔ)器資源的管理。舉例來(lái)說,內(nèi)核及工作組執(zhí)行次序允許存儲(chǔ)于SP的本地存儲(chǔ)器資源中的數(shù)據(jù)由不同內(nèi)核的工作組共享。在一個(gè)實(shí)例中,本發(fā)明的方面是針對(duì)一種用圖形處理單元(GPU)處理數(shù)據(jù)的方法。所述方法包含接收定義著色器處理器的執(zhí)行次序的輸入,其中所述執(zhí)行次序包括多個(gè)內(nèi)核標(biāo)號(hào)及多個(gè)工作組標(biāo)號(hào)。所述方法還包含將所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的工作組指派給所述著色器處理器。所述方法還包含通過所述著色器處理器執(zhí)行所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的所述工作組以處理輸入數(shù)據(jù)。
[0006]在另一實(shí)例中,本發(fā)明的方面是針對(duì)包括定序器模塊的圖形處理單元(GPU)。所述定序器模塊經(jīng)配置以接收定義著色器處理器的執(zhí)行次序的輸入,其中所述執(zhí)行次序包括多個(gè)內(nèi)核標(biāo)號(hào)及多個(gè)工作組標(biāo)號(hào)。所述定序器模塊還經(jīng)配置以將所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的工作組指派給所述著色器處理器。所述著色器處理器經(jīng)配置以執(zhí)行所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的所述工作組以處理輸入數(shù)據(jù)。
[0007]在另一實(shí)例中,本發(fā)明的方面是針對(duì)用指令編碼的計(jì)算機(jī)可讀存儲(chǔ)媒體,所述指令用于致使計(jì)算裝置的一個(gè)或一個(gè)以上可編程處理器接收定義著色器處理器的執(zhí)行次序的輸入,其中所述執(zhí)行次序包括多個(gè)內(nèi)核標(biāo)號(hào)及多個(gè)工作組標(biāo)號(hào)。所述指令還致使計(jì)算裝置的一個(gè)或一個(gè)以上可編程處理器將所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的工作組指派給所述著色器處理器。所述指令還致使計(jì)算裝置的一個(gè)或一個(gè)以上可編程處理器通過所述著色器處理器執(zhí)行所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的所述工作組以處理輸入數(shù)據(jù)。
[0008]在另一實(shí)例中,本發(fā)明的方面是針對(duì)一種圖形處理單元(GPU),其包括用于接收定義著色器處理器的執(zhí)行次序的輸入的裝置,其中所述執(zhí)行次序包括多個(gè)內(nèi)核標(biāo)號(hào)及多個(gè)工作組標(biāo)號(hào)。所述GPU還包括用于將所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的工作組指派給所述著色器處理器的裝置。所述GPU還包括用于通過所述著色器處理器執(zhí)行所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的所述工作組以處理輸入數(shù)據(jù)的裝置。
[0009]一個(gè)或一個(gè)以上實(shí)例的細(xì)節(jié)陳述于附圖及以下描述中。其它特征、目標(biāo)及優(yōu)勢(shì)將從描述及附圖和從權(quán)利要求書中顯而易見。
【專利附圖】

【附圖說明】
[0010]圖1為說明具有可經(jīng)配置以實(shí)施本發(fā)明的方面的圖形處理單元(GPU)的計(jì)算裝置的框圖。
[0011]圖2為說明根據(jù)本發(fā)明的方面的具有圖像數(shù)據(jù)的實(shí)例圖像的框圖,所述圖像數(shù)據(jù)具有可由GPU執(zhí)行的用于處理圖像的相關(guān)聯(lián)的指令。
[0012]圖3為說明根據(jù)本發(fā)明的方面的具有可由GPU執(zhí)行的三個(gè)內(nèi)核的應(yīng)用程序的框圖。
[0013]圖4為說明可經(jīng)配置以進(jìn)行本發(fā)明的方面的GPU的框圖。
[0014]圖5為說明根據(jù)本發(fā)明的方面的經(jīng)配置以分配第一內(nèi)核、第二內(nèi)核及第三內(nèi)核146的工作組的定序器模塊的實(shí)例的框圖。
[0015]圖6為說明根據(jù)本發(fā)明的方面的經(jīng)配置以分配第一內(nèi)核、第二內(nèi)核及第三內(nèi)核的工作組的定序器模塊的實(shí)例的框圖。
[0016]圖7為說明根據(jù)本發(fā)明的方面的指派執(zhí)行次序流的實(shí)例的框圖。
[0017]圖8為說明根據(jù)本發(fā)明的方面的產(chǎn)生及執(zhí)行一個(gè)或一個(gè)以上執(zhí)行次序流的方法的流程圖。
【具體實(shí)施方式】
[0018]本發(fā)明的方面大體上涉及定義及產(chǎn)生用于由GPU的著色器處理器(SP)執(zhí)行的著色器指令流,所述GPU可實(shí)施為GPGPU。通常,GPU包含經(jīng)設(shè)計(jì)以執(zhí)行一個(gè)或一個(gè)以上著色器程序(在本文中被稱作“內(nèi)核”)的多個(gè)SP。內(nèi)核定義可經(jīng)實(shí)施以分析或修改多種輸入數(shù)據(jù)的功能。實(shí)例包含用于并行處理相對(duì)較大數(shù)值的數(shù)據(jù)集的功能。在圖像處理上下文中,功能可包含(例如)色彩校正算法、人臉檢測(cè)算法或用于進(jìn)行擴(kuò)增實(shí)境應(yīng)用程序的功能。其它實(shí)例包含變換功能、用于射線跟蹤的功能,或多種其它功能。
[0019]內(nèi)核包括經(jīng)分組成工作組的個(gè)別工作項(xiàng)(例如,GPU中的基本工作單元)。在GPU經(jīng)實(shí)施以處理圖像(例如,視頻數(shù)據(jù)幀、計(jì)算機(jī)產(chǎn)生的圖形圖像、靜態(tài)圖像等)的實(shí)例中,輸入數(shù)據(jù)為圖像,且工作項(xiàng)經(jīng)配置以分析或修改圖像的像素??蓪⒍鄠€(gè)工作項(xiàng)組織成工作組(例如,一組工作項(xiàng))。因此,在圖像處理實(shí)例中,工作組可包含與圖像中的特定像素群組相關(guān)的指令。
[0020]當(dāng)執(zhí)行內(nèi)核時(shí),GPU將與工作組相關(guān)聯(lián)的輸入數(shù)據(jù)載入到SP的本地存儲(chǔ)器中,之后SP可執(zhí)行工作組。通常,當(dāng)GPU執(zhí)行內(nèi)核時(shí),GPU在不識(shí)別或控制哪一 SP執(zhí)行特定工作組的情況下將內(nèi)核的工作組指派給SP。舉例來(lái)說,GPU可包含按固定模式將工作組分配到SP的硬件,所述固定模式可不由GPU應(yīng)用程序開發(fā)者(例如,計(jì)算機(jī)程序員)配置。在此實(shí)例中,通過均勻地分配及執(zhí)行與特定內(nèi)核相關(guān)聯(lián)的所有工作組,之后繼續(xù)移到下一個(gè)內(nèi)核,GPU按順序執(zhí)行具有多個(gè)內(nèi)核的應(yīng)用程序。
[0021]工作組數(shù)據(jù)通常無(wú)法在SP之間共享。舉例來(lái)說,SP通常為GPU內(nèi)的離散且物理上分離的單元,且GPU應(yīng)用程序開發(fā)者不控制哪一 SP執(zhí)行特定工作組。因此,在具有處理相同或?qū)嵸|(zhì)上相同的輸入數(shù)據(jù)的多個(gè)內(nèi)核的應(yīng)用程序中,可需要將與特定工作組相關(guān)聯(lián)的輸入數(shù)據(jù)載入到不同SP的本地存儲(chǔ)器中。舉例來(lái)說,在無(wú)能力控制GPU的哪一 SP執(zhí)行特定內(nèi)核的特定工作組的情況下,具有與第二內(nèi)核的工作組相同的輸入數(shù)據(jù)的第一內(nèi)核的工作組可由GPU的不同SP處理。
[0022]本發(fā)明的方面涉及產(chǎn)生及處理內(nèi)核及工作組執(zhí)行次序。內(nèi)核及工作組執(zhí)行次序支持與GPU的SP相關(guān)聯(lián)的本地存儲(chǔ)器資源的管理。舉例來(lái)說,由GPU執(zhí)行的內(nèi)核及工作組執(zhí)行次序允許存儲(chǔ)于SP本地存儲(chǔ)器中的數(shù)據(jù)由不同內(nèi)核的工作組共享。內(nèi)核及工作組執(zhí)行次序可被稱作“指令流”。指令流將工作組與內(nèi)核系結(jié)或?qū)嶋H上連結(jié)在一起,使得與一個(gè)內(nèi)核的一個(gè)工作組相關(guān)聯(lián)的輸入數(shù)據(jù)可使用單個(gè)SP由多個(gè)其它內(nèi)核共享及連續(xù)執(zhí)行。通過產(chǎn)生指令流,輸入數(shù)據(jù)能夠保留在本地SP存儲(chǔ)器中,且可能可用于多個(gè)內(nèi)核的工作組。產(chǎn)生指令流減少存儲(chǔ)器帶寬消耗以及SP算術(shù)邏輯單元(ALU)操作,這是因?yàn)锳LU操作對(duì)于多次提取相同數(shù)據(jù)而言是不必要的。
[0023]在一些實(shí)例中,當(dāng)GPU正執(zhí)行具有處理相同或?qū)嵸|(zhì)上相同的輸入數(shù)據(jù)的多個(gè)內(nèi)核的應(yīng)用程序時(shí),內(nèi)核及工作組執(zhí)行次序?yàn)橛杏玫摹T谝粋€(gè)實(shí)例實(shí)施方案中,GPU可經(jīng)實(shí)施以處理圖像(例如,視頻數(shù)據(jù)幀、計(jì)算機(jī)產(chǎn)生的圖形圖像、靜態(tài)圖像等)。在此實(shí)例中,工作項(xiàng)可對(duì)應(yīng)于與圖像的特定像素相關(guān)的指令??蓪⒍鄠€(gè)工作項(xiàng)組織成包含與圖像的特定像素群組相關(guān)的指令的工作組。當(dāng)處理與像素群組相關(guān)聯(lián)的工作組時(shí),GPU將與像素群組相關(guān)聯(lián)的圖像數(shù)據(jù)載入到SP的本地存儲(chǔ)器中。
[0024]在無(wú)能力控制GPU的哪一 SP執(zhí)行特定工作組的情況下,在圖像處理實(shí)例中,連續(xù)執(zhí)行多個(gè)內(nèi)核可導(dǎo)致由不同SP處理相同的輸入圖像區(qū)域。舉例來(lái)說,為了執(zhí)行第一內(nèi)核,GPU將與整個(gè)圖像相關(guān)聯(lián)的數(shù)據(jù)一次一個(gè)工作組地載入到GPU的SP的本地存儲(chǔ)器中以用于執(zhí)行。為了在執(zhí)行第一內(nèi)核之后執(zhí)行第二內(nèi)核,GPU將相同圖像數(shù)據(jù)重新載入到GPU的SP的本地存儲(chǔ)器中以用于執(zhí)行。因此,將輸入圖像數(shù)據(jù)載入到本地SP存儲(chǔ)器中許多次,其中每一內(nèi)核一次。整個(gè)圖像的SP本地存儲(chǔ)器輸入帶寬消耗大致等于圖像數(shù)據(jù)大小乘以內(nèi)核的數(shù)目(例如,具有3個(gè)內(nèi)核的用于分析64MB圖像的程序?qū)е?x64MB或192MB的帶寬消耗)。在內(nèi)核與其經(jīng)執(zhí)行的工作組之間無(wú)任何輸入數(shù)據(jù)共享的情況下,消耗相對(duì)較大的存儲(chǔ)器帶寬量。
[0025]在圖像處理實(shí)例中,產(chǎn)生及執(zhí)行指令流允許與圖像的特定部分相關(guān)聯(lián)的數(shù)據(jù)載入到特定SP的本地存儲(chǔ)器資源中一次且用多個(gè)內(nèi)核執(zhí)行。提供具有三個(gè)內(nèi)核(例如,第一內(nèi)核、第二內(nèi)核及第三內(nèi)核)的實(shí)例程序。將與第一內(nèi)核的第一工作組相關(guān)聯(lián)的數(shù)據(jù)載入到特定SP的本地存儲(chǔ)器中,且由SP執(zhí)行第一工作組。另外,提供包含內(nèi)核及工作組執(zhí)行次序的指令流,內(nèi)核及工作組執(zhí)行次序指示相同SP隨后執(zhí)行第二內(nèi)核的第一工作組,接著是第三內(nèi)核的第一工作組。因此,不需要在執(zhí)行第二內(nèi)核及第三內(nèi)核之前將與第一工作組相關(guān)聯(lián)的圖像數(shù)據(jù)載入到特定SP的本地存儲(chǔ)器中。替代地,第二內(nèi)核及第三內(nèi)核使用先前針對(duì)第一內(nèi)核載入的輸入數(shù)據(jù)。以此方式,可減少存儲(chǔ)器帶寬消耗,這是因?yàn)榕c輸入圖像的特定區(qū)域相關(guān)聯(lián)的數(shù)據(jù)僅需載入到本地SP存儲(chǔ)器中一次且可用多個(gè)內(nèi)核處理。在上文提供的三內(nèi)核實(shí)例中,存儲(chǔ)器帶寬消耗減少三分之二。
[0026]可以多種方式定義指令流。根據(jù)一些方面,用戶識(shí)別將從利用指令流中受益的候選內(nèi)核。舉例來(lái)說,用戶可識(shí)別多次利用相同輸入數(shù)據(jù)的內(nèi)核。利用指令流可通過減少輸入數(shù)據(jù)需要載入到本地存儲(chǔ)器資源中的次數(shù),幫助管理SP的本地存儲(chǔ)器資源。
[0027]在識(shí)別候選者之后,用戶可在由GPU執(zhí)行的程序中定義指令流。舉例來(lái)說,GPU應(yīng)用程序編程通常由應(yīng)用程序開發(fā)者(例如,計(jì)算機(jī)程序員)用應(yīng)用程序接口(API)來(lái)執(zhí)行,所述API提供可運(yùn)行于多個(gè)平臺(tái)、操作系統(tǒng)及硬件上的標(biāo)準(zhǔn)軟件接口。API的實(shí)例包含開放式圖形庫(kù)(“OpenGL”,版本4.1于2010年7月26號(hào)發(fā)布且公開可用)、統(tǒng)一計(jì)算設(shè)備架構(gòu)(由NVIDIA公司開發(fā)的“CUDA”,版本3.2于2010年9月17號(hào)發(fā)布)、及DirectX (由微軟公司開發(fā),版本11于2009年10月27號(hào)發(fā)布)。一般來(lái)說,API包含由相關(guān)聯(lián)的硬件執(zhí)行的一組預(yù)定標(biāo)準(zhǔn)化命令。API命令允許用戶指導(dǎo)GPU的硬件組件執(zhí)行命令而無(wú)關(guān)于硬件組件的細(xì)節(jié)的用戶知識(shí)。
[0028]本發(fā)明的方面涉及允許用戶定義指令流的一個(gè)或一個(gè)以上API命令。舉例來(lái)說,可在設(shè)計(jì)環(huán)境中開發(fā)及產(chǎn)生一個(gè)或一個(gè)以上API命令。API命令接著可包含于API (例如,上文所描述的API)中,作為用于API的用戶(例如,計(jì)算機(jī)程序員)的預(yù)配置選項(xiàng)。
[0029]用戶可實(shí)施預(yù)配置指令流API命令以指定應(yīng)用程序中的將在應(yīng)用程序的開發(fā)及譯碼期間由GPU執(zhí)行的指令流。舉例來(lái)說,指令流API命令允許用戶指定來(lái)自將由特定SP按順序處理的多內(nèi)核應(yīng)用程序的不同內(nèi)核的指令(例如,一個(gè)或一個(gè)以上工作組)。在執(zhí)行包含指令流標(biāo)號(hào)的應(yīng)用程序之后,GPU便根據(jù)所接收的標(biāo)號(hào)將指令(例如,不同內(nèi)核的工作組)投送到GPU的SP。
[0030]在另一實(shí)例中,自動(dòng)化系統(tǒng)可經(jīng)實(shí)施以產(chǎn)生指令流。舉例來(lái)說,例如編譯器程序等程序可自動(dòng)地產(chǎn)生用于應(yīng)用程序的指令流,所述應(yīng)用程序用多個(gè)內(nèi)核重復(fù)處理相同輸入數(shù)據(jù)。在此實(shí)例中,程序可分割每一內(nèi)核的指令,使得每一指令群組對(duì)應(yīng)于預(yù)定量的輸入數(shù)據(jù)(例如,指令的工作組)。程序接著可通過連結(jié)來(lái)自不同內(nèi)核的指令群組以使得與一個(gè)內(nèi)核的一個(gè)指令群組相關(guān)聯(lián)的輸入數(shù)據(jù)可使用單個(gè)SP由多個(gè)其它內(nèi)核共享及連續(xù)執(zhí)行而產(chǎn)生指令流。
[0031]在非限制性圖像處理實(shí)例中,GPU應(yīng)用程序開發(fā)者可將輸入圖像及用于處理所述圖像的具有三個(gè)內(nèi)核的應(yīng)用程序提供給產(chǎn)生程序的指令流。產(chǎn)生程序的指令流可基于圖像的預(yù)定義空間區(qū)域自動(dòng)地產(chǎn)生指令流。舉例來(lái)說,產(chǎn)生程序的指令流可將三個(gè)內(nèi)核中的每一者的指令分割成指令群組,其中每一指令群組對(duì)應(yīng)于輸入圖像的預(yù)定義區(qū)域。產(chǎn)生程序的指令流接著可通過連結(jié)與相同輸入圖像區(qū)域相關(guān)聯(lián)的內(nèi)核中的每一者的指令群組而產(chǎn)生指令流。
[0032]舉例來(lái)說,例如編譯器程序或其它開發(fā)/分析程序等程序可識(shí)別將從實(shí)施指令流中受益的候選內(nèi)核。舉例來(lái)說,程序可監(jiān)視存儲(chǔ)器存取模式,且識(shí)別由一個(gè)以上內(nèi)核使用的數(shù)據(jù)。在此實(shí)例中,程序可監(jiān)視且記錄與具有多個(gè)內(nèi)核的應(yīng)用程序的工作組相關(guān)聯(lián)的讀取/寫入存取模式。在記錄之后,程序可檢測(cè)每一內(nèi)核的相應(yīng)的工作組的輸入/輸出相依性。即,程序可確定多個(gè)內(nèi)核應(yīng)用程序的哪些工作組利用相同輸入數(shù)據(jù)?;诖藬?shù)據(jù)共享信息,指令流標(biāo)號(hào)可插入到應(yīng)用程序中,其促進(jìn)來(lái)自多內(nèi)核應(yīng)用程序的不同內(nèi)核的工作組由特定SP按順序處理。舉例來(lái)說,代碼可插入到應(yīng)用程序中,其指導(dǎo)GPU執(zhí)行來(lái)自不同內(nèi)核的工作組,所述不同內(nèi)核共享將由相同SP按順序執(zhí)行的相同輸入數(shù)據(jù)。
[0033]用于識(shí)別候選內(nèi)核且向指令流指定不同內(nèi)核的工作組的程序可在應(yīng)用程序開發(fā)期間執(zhí)行或在GPU應(yīng)用程序執(zhí)行期間“在運(yùn)作中”。舉例來(lái)說,根據(jù)一些方面,GPU應(yīng)用程序開發(fā)者可實(shí)施用于識(shí)別候選內(nèi)核且向指令流指定不同內(nèi)核的工作組的程序。所開發(fā)的GPU應(yīng)用程序接著可包含將由GPU執(zhí)行的指令流標(biāo)號(hào)。在另一實(shí)例中,計(jì)算裝置的主機(jī)處理器或GPU可實(shí)施在執(zhí)行GPU應(yīng)用程序時(shí)“在運(yùn)作中”的用于識(shí)別候選內(nèi)核且向指令流指定不同內(nèi)核的工作組的程序。
[0034]圖1為說明可經(jīng)配置以實(shí)施本發(fā)明的方面的計(jì)算裝置20的框圖。如圖1中所示,計(jì)算裝置20包含主機(jī)處理器24、存儲(chǔ)裝置28、存儲(chǔ)器32、網(wǎng)絡(luò)模塊36、用戶接口 40及顯示器44。計(jì)算裝置20還包含圖形處理單元(GPU)48。
[0035]在一些實(shí)例中,計(jì)算裝置20可包含或?yàn)楸銛y式計(jì)算裝置(例如,移動(dòng)電話、上網(wǎng)本、膝上型計(jì)算機(jī)、平板裝置、數(shù)字媒體播放器、游戲裝置或其它便攜式計(jì)算裝置)的一部分?;蛘?,計(jì)算裝置20可被配置為桌上型計(jì)算機(jī)或其它固定計(jì)算裝置。計(jì)算裝置20可包含圖1中出于清楚起見而未展示的額外組件。舉例來(lái)說,計(jì)算裝置20可包含用于在計(jì)算裝置20的組件之間傳送數(shù)據(jù)的一個(gè)或一個(gè)以上通信橋。此外,圖1中所示的計(jì)算裝置20的組件在計(jì)算裝置20的每一實(shí)例中可能并非必要的。舉例來(lái)說,用戶接口 40及顯示器44可在計(jì)算裝置20外部,例如在計(jì)算裝置20為桌上型計(jì)算機(jī)的實(shí)例中。
[0036]主機(jī)處理器24可包含以下各者中的任何一者或一者以上:微處理器、控制器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)或等效離散或集成邏輯電路。另外,在本發(fā)明中,歸于主機(jī)處理器24的功能可體現(xiàn)為軟件、固件、硬件或其任何組合。
[0037]主機(jī)處理器24處理供在計(jì)算裝置20內(nèi)執(zhí)行的指令。主機(jī)處理器24可能夠處理存儲(chǔ)于存儲(chǔ)裝置28上的指令或存儲(chǔ)于存儲(chǔ)器32中的指令。實(shí)例應(yīng)用程序包含用于處理可視圖像(例如,過濾圖像,針對(duì)預(yù)定義特征分析圖像等)的應(yīng)用程序。主機(jī)處理器24可基于用戶經(jīng)由用戶接口 40進(jìn)行的選擇執(zhí)行一個(gè)或一個(gè)以上應(yīng)用程序。在一些實(shí)例中,主機(jī)處理器24可在無(wú)用戶交互的情況下執(zhí)行一個(gè)或一個(gè)以上應(yīng)用程序。
[0038]根據(jù)本發(fā)明的一些方面,且如下文關(guān)于GPU48更詳細(xì)所描述,主機(jī)處理器24可與GPU48合作以執(zhí)行與一個(gè)或一個(gè)以上應(yīng)用程序相關(guān)聯(lián)的各種任務(wù)。舉例來(lái)說,主機(jī)處理器24可初始化應(yīng)用程序的執(zhí)行,且將與應(yīng)用程序相關(guān)聯(lián)的某些處理功能推卸或委任給GPU48。在實(shí)例中,主機(jī)處理器24可初始化圖像處理應(yīng)用程序的執(zhí)行,且將與應(yīng)用程序相關(guān)聯(lián)的某些處理功能推卸給GPU48。
[0039]存儲(chǔ)裝置28可包含一個(gè)或一個(gè)以上計(jì)算機(jī)可讀存儲(chǔ)媒體。存儲(chǔ)裝置28可經(jīng)配置以用于長(zhǎng)期存儲(chǔ)信息。在一些實(shí)例中,存儲(chǔ)裝置28可包含非易失性存儲(chǔ)元件。此些非易失性存儲(chǔ)元件的實(shí)例可包含磁性硬盤、光盤、軟盤、快閃存儲(chǔ)器或電可編程存儲(chǔ)器(EPROM)或電可擦除且可編程(EEPROM)存儲(chǔ)器的形式。在一些實(shí)例中,存儲(chǔ)裝置28可被視為非暫時(shí)性存儲(chǔ)媒體。術(shù)語(yǔ)“非暫時(shí)性”可指示存儲(chǔ)媒體并不以載波或傳播信號(hào)體現(xiàn)。然而,術(shù)語(yǔ)“非暫時(shí)性”不應(yīng)被解釋為意謂存儲(chǔ)裝置28為不可移的。作為一個(gè)實(shí)例,存儲(chǔ)裝置28可從計(jì)算裝置20中移除,且移動(dòng)到另一裝置。作為另一實(shí)例,實(shí)質(zhì)上類似于存儲(chǔ)裝置28的存儲(chǔ)裝置可插入到計(jì)算裝置20中。
[0040]存儲(chǔ)裝置28可存儲(chǔ)用于由主機(jī)處理器24或GPU48執(zhí)行一個(gè)或一個(gè)以上應(yīng)用程序的指令。存儲(chǔ)裝置28還可存儲(chǔ)用于由主機(jī)處理器24或GPU48使用的數(shù)據(jù)。舉例來(lái)說,存儲(chǔ)裝置28可存儲(chǔ)用于由主機(jī)處理器24或GPU48處理的圖像數(shù)據(jù)。
[0041]存儲(chǔ)器32可經(jīng)配置以存儲(chǔ)計(jì)算裝置20在操作期間的信息。在一些實(shí)例中,存儲(chǔ)器32為暫時(shí)存儲(chǔ)器,意謂存儲(chǔ)器32的主要目的不是長(zhǎng)期存儲(chǔ)。在一些實(shí)例中,存儲(chǔ)器32可描述為計(jì)算機(jī)可讀存儲(chǔ)媒體。因此,盡管存儲(chǔ)可隨時(shí)間而改變的數(shù)據(jù),存儲(chǔ)器32還可被視為“非暫時(shí)性的”。在一些實(shí)例中,存儲(chǔ)器32還可描述為易失性存儲(chǔ)器,意謂當(dāng)關(guān)掉計(jì)算機(jī)時(shí)存儲(chǔ)器32并不維持所存儲(chǔ)的內(nèi)容。易失性存儲(chǔ)器的實(shí)例包含隨機(jī)存取存儲(chǔ)器(RAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)及現(xiàn)有技術(shù)中已知的其它形式的易失性存儲(chǔ)器。
[0042]在一些實(shí)例中,存儲(chǔ)器32可用以存儲(chǔ)用于由主機(jī)處理器24或GPU48執(zhí)行的程序指令。存儲(chǔ)器32可由運(yùn)行于計(jì)算裝置20上的軟件或應(yīng)用程序使用以在程序執(zhí)行期間暫時(shí)地存儲(chǔ)信息。因而,存儲(chǔ)器32可由計(jì)算裝置20的其它組件(例如,主機(jī)處理器24及GPU48)存取。
[0043]計(jì)算裝置20可利用網(wǎng)絡(luò)模塊36經(jīng)由一個(gè)或一個(gè)以上網(wǎng)絡(luò)(例如,一個(gè)或一個(gè)以上無(wú)線網(wǎng)絡(luò))與外部裝置通信。網(wǎng)絡(luò)模塊36可為例如以太網(wǎng)卡等網(wǎng)絡(luò)接口卡、光學(xué)收發(fā)器、射頻收發(fā)器或可發(fā)送及接收信息的任何其它類型的裝置。在一些實(shí)例中,計(jì)算裝置20可利用網(wǎng)絡(luò)模塊36與外部裝置(例如,服務(wù)器、移動(dòng)電話或其它網(wǎng)絡(luò)計(jì)算裝置)無(wú)線地通信。
[0044]計(jì)算裝置20還包含用戶接口 40。用戶接口 40的實(shí)例包含,但不限于,跟蹤球、鼠標(biāo)、鍵盤及其它類型的輸入裝置。用戶接口 40還可包含作為顯示器44的一部分而并入的觸敏式屏幕。顯示器44可包括液晶顯示器(LCD)、有機(jī)發(fā)光二級(jí)管(OLED)顯示器、等離子體顯示器或另一類型的顯示裝置。
[0045]計(jì)算裝置20的GPU48可為具有用于執(zhí)行GPU應(yīng)用程序的固定功能且可編程組件的專用硬件單元。GPU48還可包含DSP、通用微處理器、ASIC、FPGA或其它等效集成或離散邏輯電路。GPU48還可包含例如專用存儲(chǔ)器等其它組件,如關(guān)于圖4更詳細(xì)所描述。此外,盡管在圖1中展示為分離組件,但在一些實(shí)例中,GPU48可形成為主機(jī)處理器24的部分。GPU48可經(jīng)配置以利用根據(jù)多種應(yīng)用程序編程接口(API)的處理技術(shù)。舉例來(lái)說,用戶可使用可運(yùn)行于多個(gè)平臺(tái)、操作系統(tǒng)及硬件上的標(biāo)準(zhǔn)軟件接口來(lái)對(duì)將由GPU48執(zhí)行的應(yīng)用程序進(jìn)行編程。在一些實(shí)例中,GPU48可經(jīng)配置以利用使用OpenCL、CUDA或DirectX API集合(如上文所描述)產(chǎn)生的應(yīng)用程序。
[0046]根據(jù)一些實(shí)例,GPU48可實(shí)施為通用圖形處理單元(GPGPU)。舉例來(lái)說,GPU48可進(jìn)行傳統(tǒng)上由主機(jī)處理器24進(jìn)行的多種通用計(jì)算功能。實(shí)例包含多種圖像處理功能,包含視頻解碼及后處理(例如,解塊、噪聲減少、色彩校正等)及其它專用圖像處理功能(例如,面部檢測(cè)/辨識(shí)、模式辨識(shí)、小波變換等)。在一些實(shí)例中,GPU48可與主機(jī)處理器24合作以執(zhí)行應(yīng)用程序。舉例來(lái)說,主機(jī)處理器24可通過將用于由GPU48執(zhí)行的指令提供給GPU48,將某些功能推卸給GPU48。
[0047]當(dāng)實(shí)施為GPGPU時(shí),GPU48執(zhí)行本文中被稱作內(nèi)核的著色器程序。內(nèi)核可由用戶使用API (例如,上文所描述的實(shí)例API)來(lái)定義。內(nèi)核可包括經(jīng)分組成工作組的個(gè)別工作項(xiàng)(例如,GPU中的基本工作單元)。
[0048]根據(jù)本發(fā)明的一些方面,GPU48接收且執(zhí)行在本文中被稱作指令流的內(nèi)核及工作組執(zhí)行次序。GPU48可使用內(nèi)核及工作組執(zhí)行次序來(lái)管理與GPU48的SP (例如,如(例如)關(guān)于圖4所展示及描述)相關(guān)聯(lián)的本地存儲(chǔ)器資源。舉例來(lái)說,GPU48可使用內(nèi)核及工作組執(zhí)行次序來(lái)與不同內(nèi)核的工作組共享存儲(chǔ)于SP本地存儲(chǔ)器中的數(shù)據(jù)。
[0049]下圖中提供的某些實(shí)例可指執(zhí)行工作項(xiàng)及工作組以執(zhí)行圖像處理應(yīng)用程序的GPU。舉例來(lái)說,工作項(xiàng)及工作組在下文中可描述為與圖像(例如,視頻數(shù)據(jù)幀)的像素相關(guān)聯(lián)。然而,應(yīng)理解,GPU可經(jīng)實(shí)施以進(jìn)行除了對(duì)多種輸入數(shù)據(jù)的圖像處理功能之外的多種功能(例如,從并行處理中受益的任何功能及數(shù)據(jù)集)。因此,例如,下文關(guān)于指令流及工作組之間的存儲(chǔ)器共享所描述的實(shí)例及方面可由對(duì)多種其它輸入數(shù)據(jù)集執(zhí)行多種其它功能的GPU進(jìn)行。
[0050]圖2為說明具有圖像數(shù)據(jù)的實(shí)例圖像49的框圖,所述圖像數(shù)據(jù)具有用于處理圖像49的相關(guān)聯(lián)的指令。指令表示為劃分成多個(gè)工作組50A到50P (統(tǒng)稱為工作組50),其中每一工作組包含多個(gè)工作項(xiàng)52。指令可由GPU(例如,圖1中所示的GPU48)執(zhí)行。在圖2中所示的實(shí)例中,將用于處理圖像49的指令劃分成16個(gè)工作組50,且將每一工作組50劃分成64個(gè)分離工作項(xiàng)52,但其它劃分是可能的。
[0051]在圖2中所示的實(shí)例中,圖像49為正方形、大致16兆字節(jié)(MB)的圖像,其包含1024個(gè)像素。工作項(xiàng)52中的每一者表示可由GPU48執(zhí)行的基本工作單元。在一些實(shí)例中,每一工作項(xiàng)52包含可與圖像49的特定像素相關(guān)的指令。因此,當(dāng)GPU48執(zhí)行工作項(xiàng)52時(shí),圖像49的對(duì)應(yīng)像素可得到處理(例如,根據(jù)指令來(lái)分析或改變)??蓪⒐ぷ黜?xiàng)52組織成包含與圖像49的特定像素群組相關(guān)的指令的工作組50。當(dāng)處理工作組50時(shí),可將與和工作組50相關(guān)聯(lián)的特定像素群組相關(guān)的圖像數(shù)據(jù)載入到SP的本地存儲(chǔ)器資源(如(例如)下文關(guān)于圖4所展示及描述)。
[0052]關(guān)于圖2所描述的像素?cái)?shù)據(jù)、工作項(xiàng)與工作組之間的關(guān)系僅為可能的指令結(jié)構(gòu)的一個(gè)實(shí)例。在其它實(shí)例中,工作項(xiàng)可與圖像49的一個(gè)以上或一個(gè)以下像素相關(guān)。
[0053]圖3為說明呈可由GPU(例如,圖1中所示的GPU48)執(zhí)行的三個(gè)內(nèi)核(例如,第一內(nèi)核56、第二內(nèi)核57及第三內(nèi)核58)的配置的工作組的框圖。再次,可執(zhí)行每一內(nèi)核以執(zhí)行與給定應(yīng)用程序相關(guān)的特定功能。在一些實(shí)例中,內(nèi)核56到58可定義色彩校正算法、人臉檢測(cè)算法、模式辨識(shí)算法、擴(kuò)增實(shí)境應(yīng)用程序、多種算法應(yīng)用程序(例如,小波變換、傅里葉變換等)或多種其它應(yīng)用程序的功能。僅出于說明的目的,關(guān)于圖1中所示的實(shí)例GPU48及圖2中所示的實(shí)例圖像49描述圖3。
[0054]GPU48可執(zhí)行內(nèi)核56到58以對(duì)圖像(例如,圖2中所示的圖像49)進(jìn)行特定任務(wù)。舉例來(lái)說,GPU48可實(shí)施為GPGPU以進(jìn)行多種功能,例如人臉檢測(cè)/辨識(shí)、模式辨識(shí)及適合用于并行處理(例如,同時(shí)處理一個(gè)以上指令)的許多其它功能。作為簡(jiǎn)化非限制性實(shí)例而提供,內(nèi)核56到58可實(shí)施于人臉檢測(cè)應(yīng)用程序中。在此實(shí)例中,GPU48可實(shí)施內(nèi)核56到58以檢測(cè)圖像49中的一個(gè)或一個(gè)以上人臉。內(nèi)核56到58中的每一者可經(jīng)配置以執(zhí)行特定人臉檢測(cè)相關(guān)功能。此些內(nèi)核56到58可被稱作“分類器”。即,內(nèi)核56到58將像素分類為具有(或不具有)特定預(yù)定義特征。內(nèi)核56到58可包含已使用數(shù)個(gè)訓(xùn)練圖像創(chuàng)建的數(shù)學(xué)公式。舉例來(lái)說,內(nèi)核56到58可包含已在測(cè)試環(huán)境中用數(shù)個(gè)預(yù)定義圖像開發(fā)的數(shù)學(xué)公式。
[0055]在圖3中所示的實(shí)例中,GPU48可連續(xù)地執(zhí)行內(nèi)核56到58以確定每一像素是否包含內(nèi)核56到58中所陳述的預(yù)定義性質(zhì)。S卩,當(dāng)由GPU48執(zhí)行時(shí),每一內(nèi)核56到58可傳回布爾值,所述布爾值可用以識(shí)別與人臉相關(guān)聯(lián)的預(yù)定義性質(zhì)。如果某一像素展現(xiàn)出內(nèi)核56到58中所陳述的所有預(yù)定義性質(zhì)(例如,與像素相關(guān)聯(lián)的布爾結(jié)果滿足某一預(yù)定義準(zhǔn)則),那么所述像素被視為候選人臉像素。如果某一像素未展現(xiàn)出內(nèi)核56到58中所陳述的預(yù)定義性質(zhì)(例如,與像素相關(guān)聯(lián)的布爾結(jié)果不滿足某一預(yù)定義準(zhǔn)則),那么所述像素被排除視為人臉像素。
[0056]在圖3的圖像處理實(shí)例中,與圖像49相關(guān)聯(lián)的數(shù)據(jù)被處理三次,對(duì)于每一內(nèi)核56到58處理一次。舉例來(lái)說,內(nèi)核56到58的工作組可對(duì)應(yīng)于圖像49的相同輸入圖像區(qū)域。內(nèi)核56到58中的每一者的類似編號(hào)的工作組可包含將對(duì)圖像49的相同輸入圖像區(qū)域進(jìn)行的一組指令。
[0057]本發(fā)明的方面涉及將內(nèi)核56到58的類似編號(hào)的工作組系結(jié)到指令流中以用于由GPU48處理的指令的產(chǎn)生。舉例來(lái)說,用戶(例如,計(jì)算機(jī)或應(yīng)用程序員)或程序可創(chuàng)建指令流,所述指令流指導(dǎo)GPU48使用相同SP執(zhí)行內(nèi)核56的工作組0,接著是內(nèi)核57的工作組0,且接著是內(nèi)核58的工作組O。以此方式,GPU48可將對(duì)應(yīng)于工作組O的圖像49的輸入?yún)^(qū)域載入到GPU48的著色器處理器(SP)的本地存儲(chǔ)器資源中(例如,如(例如)關(guān)于圖4所展示及描述),且使用內(nèi)核56到58來(lái)按順序處理所述輸入圖像區(qū)域。
[0058]在一些實(shí)例中,用戶(例如,計(jì)算機(jī)或應(yīng)用程序員)可在開發(fā)內(nèi)核56到58時(shí)使用預(yù)配置API命令來(lái)定義指令流,所述指令流包含內(nèi)核56到58的標(biāo)號(hào)。舉例來(lái)說,用戶可實(shí)施預(yù)配置指令流API命令來(lái)向?qū)⒂蒅PU48執(zhí)行的指令流指定內(nèi)核56到58的工作組。在執(zhí)行與內(nèi)核56到58相關(guān)聯(lián)的指令流標(biāo)號(hào)之后,GPU48將內(nèi)核56到58的工作組投送到GPU48的某一 SP。
[0059]在另一實(shí)例中,自動(dòng)化系統(tǒng)可經(jīng)實(shí)施以產(chǎn)生包含內(nèi)核56到58的工作組標(biāo)號(hào)的指令流。舉例來(lái)說,編譯器程序或其它程序(例如,從經(jīng)編譯的低級(jí)機(jī)器匯編代碼跟蹤存儲(chǔ)器存取模式的程序)可監(jiān)視或分析存儲(chǔ)器存取模式且識(shí)別與工作組(例如,工作組O)相關(guān)聯(lián)的所述數(shù)據(jù)由內(nèi)核56到58存取多次。程序接著可向指令流指定工作組,使得由GPU48的SP按順序處理所述工作組。在執(zhí)行與內(nèi)核56到58相關(guān)聯(lián)的指令流標(biāo)號(hào)之后,GPU48將內(nèi)核56到58的工作組投送到GPU48的某一 SP。
[0060]圖4為說明可經(jīng)配置以進(jìn)行本發(fā)明的方面的GPU60的框圖。在一些實(shí)例中,GPU60可與圖1中所示的GPU48類似地或相同地經(jīng)配置。在圖4中所示的實(shí)例中,GPU60包含存儲(chǔ)器72、分別具有著色器處理器存儲(chǔ)器78A到78C (統(tǒng)稱為SP存儲(chǔ)器78)的著色器處理器76A到76C(統(tǒng)稱為SP76),及定序器模塊82。
[0061]在其它實(shí)例中,GPU60可包含圖4中出于清楚起見而未展示的其它組件。舉例來(lái)說,GPU60還可包含與分析及呈現(xiàn)圖像相關(guān)的多種其它模塊,例如光柵處理器(rasterizer)、紋理單元、一個(gè)或一個(gè)以上緩沖器或其它GPU組件。另外,GPU60可包含比圖4中所示的組件多或少的組件。舉例來(lái)說,GPU60在圖4中展示為包含三個(gè)SP76。然而,在其它實(shí)例中,GPU60可包含比圖4中所示的SP多或少的SP。
[0062]在一些實(shí)例中,GPU存儲(chǔ)器72可類似于圖1中所示的存儲(chǔ)器32。舉例來(lái)說,GPU存儲(chǔ)器72可為暫時(shí)計(jì)算機(jī)可讀存儲(chǔ)媒體。GPU存儲(chǔ)器72的實(shí)例包含隨機(jī)存取存儲(chǔ)器(RAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)及現(xiàn)有技術(shù)中已知的其它形式的存儲(chǔ)器。在GPU60經(jīng)形成為另一處理器的部分(例如,圖1中所示的主機(jī)處理器24)的實(shí)例中,GPU存儲(chǔ)器72可由除GPU60之外的組件存取。
[0063]GPU存儲(chǔ)器72可經(jīng)配置為GPU60的全局存儲(chǔ)器。舉例來(lái)說,GPU存儲(chǔ)器72可配置以在操作期間將指令及信息存儲(chǔ)于GPU60內(nèi)(例如,用于由GPU60處理的圖像數(shù)據(jù)及指令)。GPU存儲(chǔ)器72還可經(jīng)配置以存儲(chǔ)已由GPU60處理的數(shù)據(jù)的結(jié)果。在一些實(shí)例中,GPU存儲(chǔ)器72與在GPU60外部的計(jì)算裝置組件介面連接。舉例來(lái)說,并入有GPU60的計(jì)算裝置的組件最初可將數(shù)據(jù)(例如,一個(gè)或一個(gè)以上視頻數(shù)據(jù)幀)傳遞到GPU存儲(chǔ)器78以用于由GPU60處理。GPU60接著處理數(shù)據(jù)且將結(jié)果存儲(chǔ)到GPU存儲(chǔ)器72。隨后可從GPU存儲(chǔ)器72將結(jié)果讀取到計(jì)算裝置的另一組件。
[0064]SP76可經(jīng)配置為處理組件的可編程管線。在一些實(shí)例中,SP76可被稱作“統(tǒng)一著色器”,因?yàn)镾P76可執(zhí)行幾何形狀、頂點(diǎn)或像素著色操作以呈現(xiàn)圖形。SP76還可用于GPGPU應(yīng)用中以用于執(zhí)行通用計(jì)算。舉例來(lái)說,SP76可經(jīng)實(shí)施以分析或以其它方式處理圖像,例如圖2中所示的圖像49。SP76可包含圖4中未特定展示的一個(gè)或一個(gè)以上組件,例如用于提取及解碼指令的組件及用于進(jìn)行算術(shù)計(jì)算的一個(gè)或一個(gè)以上算術(shù)邏輯單元(“ALU”)。SP76還包含一個(gè)或一個(gè)以上存儲(chǔ)器、高速緩沖存儲(chǔ)器或寄存器,例如SP存儲(chǔ)器78。
[0065]SP存儲(chǔ)器78可經(jīng)配置為用于存儲(chǔ)由SP76處理的數(shù)據(jù)的寄存器或數(shù)據(jù)高速緩沖存儲(chǔ)器。在一些實(shí)例中,SP存儲(chǔ)器78為SP76的本地存儲(chǔ)器。舉例來(lái)說,與全局GPU存儲(chǔ)器72相比,SP存儲(chǔ)器78可相對(duì)較小,且在執(zhí)行之前存儲(chǔ)與一個(gè)或一個(gè)以上工作組相關(guān)聯(lián)的數(shù)據(jù)。SP存儲(chǔ)器78可具有與GPU存儲(chǔ)器72相比相對(duì)較低的時(shí)延。舉例來(lái)說,SP存儲(chǔ)器78可由SP76相對(duì)較快地存取。然而,與從全局存儲(chǔ)器72到SP存儲(chǔ)器78的數(shù)據(jù)傳送相關(guān)聯(lián)的時(shí)延通常大得多。舉例來(lái)說,從全局存儲(chǔ)器72到SP存儲(chǔ)器78的數(shù)據(jù)傳送可消耗多個(gè)時(shí)鐘周期,從而創(chuàng)建瓶頸且使GPU60的總體性能變緩。
[0066]SP存儲(chǔ)器78可在GPU60正在操作時(shí)與GPU存儲(chǔ)器72交換數(shù)據(jù)。舉例來(lái)說,GPU60將與一個(gè)或一個(gè)以上工作組相關(guān)聯(lián)的數(shù)據(jù)從GPU存儲(chǔ)器72發(fā)送到SP存儲(chǔ)器78。一旦存儲(chǔ)于SP存儲(chǔ)器78中,SP76并行操作以存取且處理存儲(chǔ)于分離SP存儲(chǔ)器78中的數(shù)據(jù)。在執(zhí)行所述數(shù)據(jù)之后,SP76便將結(jié)果傳回到GPU存儲(chǔ)器72。一般來(lái)說,SP存儲(chǔ)器78與SP76之間的存儲(chǔ)器帶寬大于GPU存儲(chǔ)器72與SP76之間的存儲(chǔ)器帶寬。因此,SP76可通常比SP76可從GPU存儲(chǔ)器72讀取數(shù)據(jù)更快地從相關(guān)聯(lián)的SP存儲(chǔ)器78讀取數(shù)據(jù)。即,GPU存儲(chǔ)器72通常展現(xiàn)出比與SP存儲(chǔ)器78相關(guān)聯(lián)的時(shí)延高的時(shí)延。因此,數(shù)據(jù)在由SP76執(zhí)行之前被傳送到SP存儲(chǔ)器78可能是有益的。
[0067]定序器模塊82控制GPU60內(nèi)的指令及數(shù)據(jù)流。定序器模塊82可包括用于將工作項(xiàng)、工作組及相關(guān)聯(lián)的數(shù)據(jù)分配到SP存儲(chǔ)器78以用于由SP76執(zhí)行的固定功能及可編程組件的組合。因此,定序器模塊82管理GPU存儲(chǔ)器72與SP76之間的數(shù)據(jù)傳送。僅出于實(shí)例的目的,關(guān)于相對(duì)于圖3所展示及描述的應(yīng)用程序來(lái)描述定序器模塊82的工作組分配。
[0068]定序器模塊82可按固定分配模式分配工作組而不考慮哪些工作組是由SP76的特定SP執(zhí)行。舉例來(lái)說,為了處理具有多個(gè)內(nèi)核56到68的實(shí)例應(yīng)用程序54 (圖3中所示),定序器模塊82可將工作組均勻地分配到GPU60的所有SP76。另外,如下文關(guān)于圖5更詳細(xì)所描述,定序器模塊82可將內(nèi)核的所有工作組分配到SP76,之后繼續(xù)移到下一個(gè)內(nèi)核。舉例來(lái)說,定序器模塊82可將內(nèi)核56的工作組O分配到SP76A,將內(nèi)核56的工作組I分配到SP76B,將內(nèi)核56的工作組2分配到SP76C等等,直到內(nèi)核56已由SP76處理為止。
[0069]在其它實(shí)例中,根據(jù)本發(fā)明的方面,定序器模塊82可接收且執(zhí)行內(nèi)核及工作組執(zhí)行次序。舉例來(lái)說,定序器模塊82可接收定義指示定序器模塊82將內(nèi)核的工作組分配到SP76的特定SP的指令流的指令。指令流將不同內(nèi)核的工作組系結(jié)在一起,使得其由SP76的相同SP處理。指令流提供一種方式來(lái)管理SP存儲(chǔ)器78的資源。舉例來(lái)說,通過進(jìn)行定義指令流的指令,定序器模塊82允許與一個(gè)工作組相關(guān)聯(lián)的輸入數(shù)據(jù)由多個(gè)其它內(nèi)核的工作組共享及連續(xù)執(zhí)行。
[0070]定序器模塊82可經(jīng)實(shí)施以在GPU60正執(zhí)行具有處理相同或?qū)嵸|(zhì)上相同的輸入數(shù)據(jù)的多個(gè)內(nèi)核的應(yīng)用程序時(shí)進(jìn)行定義指令流的指令。舉例來(lái)說,如關(guān)于圖3所描述,應(yīng)用程序54包含三個(gè)內(nèi)核56到58,每一內(nèi)核具有多個(gè)相關(guān)聯(lián)的工作組。內(nèi)核56的工作組O對(duì)應(yīng)于與內(nèi)核57的工作組O及內(nèi)核58的工作組O相同的輸入數(shù)據(jù)。因此,定序器模塊82可按順序?qū)?nèi)核56到58的工作組O分配到SP76A。另外,定序器模塊82可將內(nèi)核56到58的工作組I分配到SP76B等等,直到所有內(nèi)核的所述工作組已由SP76執(zhí)行為止。
[0071]以此方式,定序器模塊82可管理SP存儲(chǔ)器78的本地存儲(chǔ)器資源。舉例來(lái)說,在執(zhí)行內(nèi)核56的工作組O之前,GPU60將與內(nèi)核56的工作組O相關(guān)聯(lián)的輸入數(shù)據(jù)從GPU存儲(chǔ)器72傳送到SP存儲(chǔ)器78A。在執(zhí)行內(nèi)核56的工作組O之后,且代替提取用于SP存儲(chǔ)器78A的新數(shù)據(jù),定序器模塊82指示SP76A執(zhí)行內(nèi)核57的工作組0,接著是內(nèi)核58的工作組
O。工作組O的輸入數(shù)據(jù)在內(nèi)核56到58當(dāng)中是相同的,因此與工作組O相關(guān)聯(lián)的數(shù)據(jù)可保留在SP存儲(chǔ)器78A中,且由所有三個(gè)內(nèi)核56到58的工作組O共享。
[0072]與按固定分配模式分配工作組的系統(tǒng)相比較,執(zhí)行指令流且在不同內(nèi)核的工作組之間共享數(shù)據(jù)可提供本地存儲(chǔ)器帶寬節(jié)省。舉例來(lái)說,在不同內(nèi)核的工作組之間共享數(shù)據(jù)允許在GPU存儲(chǔ)器72與SP存儲(chǔ)器78之間傳送較少的數(shù)據(jù)。在圖3中所示的三個(gè)內(nèi)核實(shí)例中,GPU存儲(chǔ)器72與SP存儲(chǔ)器78之間的存儲(chǔ)器帶寬消耗減少三分之二。GPU60可將與工作組(例如,工作組O)相關(guān)聯(lián)的數(shù)據(jù)傳送到本地SP存儲(chǔ)器一次且在所有三個(gè)內(nèi)核56到58之間共享數(shù)據(jù),而不是將與所述工作組相關(guān)聯(lián)的數(shù)據(jù)傳送到本地SP存儲(chǔ)器三次(例如,對(duì)于每一內(nèi)核傳送一次)。
[0073]根據(jù)本發(fā)明的一些實(shí)例,與執(zhí)行指令流相關(guān)聯(lián)的本地存儲(chǔ)器帶寬節(jié)省還可提供時(shí)間節(jié)省。舉例來(lái)說,在SP可執(zhí)行與工作組相關(guān)聯(lián)的相同數(shù)目的計(jì)算以執(zhí)行給定程序(例如,程序54)時(shí),可實(shí)現(xiàn)時(shí)間節(jié)省,這是因?yàn)樵贕PU存儲(chǔ)器72與SP存儲(chǔ)器78之間可傳送較少的數(shù)據(jù)。如上文所描述,GPU存儲(chǔ)器72與SP存儲(chǔ)器78之間的數(shù)據(jù)傳送可為相對(duì)時(shí)間密集型過程,所述時(shí)間密集型過程將瓶頸引入到執(zhí)行程序54的過程中。因此,減少在GPU存儲(chǔ)器72與SP存儲(chǔ)器78之間需要傳送的數(shù)據(jù)量還可減少與GPU存儲(chǔ)器72與SP存儲(chǔ)器78之間的數(shù)據(jù)傳送相關(guān)聯(lián)的瓶頸。
[0074]由定序器模塊82接收的定義指令流的指令可由用戶產(chǎn)生或可自動(dòng)地產(chǎn)生(例如,由編譯器程序)。舉例來(lái)說,用戶(例如,軟件開發(fā)者)可使用包含一個(gè)或一個(gè)以上指令流命令的API來(lái)定義且實(shí)施指令流。在接收到具有指令流命令的應(yīng)用程序之后,定序器模塊82執(zhí)行指令流命令以管理與SP76相關(guān)聯(lián)的本地存儲(chǔ)器資源。
[0075]可由計(jì)算裝置的主機(jī)處理器(例如,圖1中所示的主機(jī)處理器24)將定義指令流的指令發(fā)射到定序器模塊82。在其中GPU60為相異裝置(例如,不包含于具有主機(jī)處理器的計(jì)算裝置中)的實(shí)例中,另一處理組件可負(fù)責(zé)將含有指令流的指令發(fā)射到定序器模塊82。
[0076]圖5為說明定序器模塊140的實(shí)例的框圖,定序器模塊140將第一內(nèi)核142、第二內(nèi)核144及第三內(nèi)核146的工作組分配到具有第一 SP存儲(chǔ)器156A的第一 SP152A、具有第二 SP存儲(chǔ)器156B的第二 SP152B及具有第三SP存儲(chǔ)器156C的第三SP152C (統(tǒng)稱為SP152及SP存儲(chǔ)器156)。根據(jù)本發(fā)明的一些方面,定序器模塊140及SP152可并入于GPU中,例如圖1中所示的GPU48或圖4中所示的GPU60。
[0077]定序器模塊140及SP152可與關(guān)于圖4所展示及描述的定序器模塊82及SP76類似地或相同地配置。舉例來(lái)說,定序器模塊140可負(fù)責(zé)控制GPU內(nèi)的指令及數(shù)據(jù)流。定序器模塊140可包含用于將工作項(xiàng)及工作組分配到SP152及相關(guān)聯(lián)的SP存儲(chǔ)器156的固定功能及可編程組件的組合。
[0078]定序器模塊140按固定分配模式分配內(nèi)核142到146的工作組,而不控制不同內(nèi)核的工作組的特定標(biāo)號(hào)。舉例來(lái)說,定序器模塊140通過以下方式來(lái)分配第一內(nèi)核142的工作組,按順序?qū)⒌谝还ぷ鹘MWGO分配到SP152A(如由線160所表示),將第二工作組WGl分配到SP152B(如由線161所表示),將第三工作組WG2分配到SP152C(如由線162所表示)等等,直到已分配且執(zhí)行第一內(nèi)核142為止。定序器模塊140接著繼續(xù)移到第二內(nèi)核144及第三內(nèi)核146,且將所述工作組分配到SP152。舉例來(lái)說,定序器模塊140可按固定分配模式繼續(xù),且可將第二內(nèi)核144的所有工作組分配在SP152當(dāng)中。定序器模塊140接著可繼續(xù)進(jìn)行到第三內(nèi)核146,且將第三內(nèi)核146的所有工作組分配在SP152當(dāng)中。
[0079]在無(wú)能力控制哪一 SP152執(zhí)行特定工作組的情況下,可需要將與工作組相關(guān)聯(lián)的數(shù)據(jù)載入到SP存儲(chǔ)器156中的一者以上中。如圖5的實(shí)例中所示,遵循固定分配模式,在處理整個(gè)第一內(nèi)核142之后,定序器模塊140將第二內(nèi)核144的工作組WGO分配到SP152B (線161)。因此,必須將與WGO相關(guān)聯(lián)的輸入數(shù)據(jù)載入到SP存儲(chǔ)器156B中。另外,在處理整個(gè)第二內(nèi)核144之后,歸因于分配模式的固定性質(zhì),定序器模塊140將第三內(nèi)核146的工作組WGO分配到SP152C (線162)。因此,將與WGO相關(guān)聯(lián)的輸入數(shù)據(jù)載入到SP存儲(chǔ)器156C中。
[0080]如上文關(guān)于圖4所描述,通常必須在SP可執(zhí)行工作組之前將與特定工作組相關(guān)聯(lián)的數(shù)據(jù)載入到SP的本地存儲(chǔ)器中。在無(wú)能力控制哪一 SP152執(zhí)行特定工作組的情況下,無(wú)法在內(nèi)核之間共享與工作組相關(guān)聯(lián)的數(shù)據(jù)。在圖5中所示的實(shí)例中,必須在由SP152A到152C處理之前在不同時(shí)間將與工作組WGO相關(guān)聯(lián)的數(shù)據(jù)載入到SP存儲(chǔ)器156AU56B及156C中的每一者中。因此,SP152的存儲(chǔ)器帶寬等于用于每一內(nèi)核的輸入數(shù)據(jù)的三倍。
[0081]圖6為說明定序器模塊180的實(shí)例的框圖,定序器模塊180將第一內(nèi)核184、第二內(nèi)核186及第三內(nèi)核188的工作組分配到具有第一 SP存儲(chǔ)器204A的第一 SP200A、具有第二 SP存儲(chǔ)器204B的第二 SP200B及具有第三SP存儲(chǔ)器204C的第三SP200C (統(tǒng)稱為SP200及SP存儲(chǔ)器204)。根據(jù)本發(fā)明的一些方面,定序器模塊180及SP200可并入于GPU中,例如圖1中所示的GPU48或圖4中所示的GPU60。
[0082]定序器模塊180及SP200可與關(guān)于圖4所展示及描述的定序器模塊82及SP76類似地或相同地經(jīng)配置。舉例來(lái)說,定序器模塊180可負(fù)責(zé)控制GPU內(nèi)的指令及數(shù)據(jù)流。定序器模塊180可包含用于將工作項(xiàng)及工作組分配到SP存儲(chǔ)器204以用于由SP200執(zhí)行的固定功能及可編程組件的組合。
[0083]根據(jù)本發(fā)明的一些方面,定序器模塊82根據(jù)向指令流指定工作組的預(yù)定義指令來(lái)分配內(nèi)核184到188的工作組。舉例來(lái)說,定序器模塊82可經(jīng)配置以接收將不同內(nèi)核的工作組系結(jié)在一起以使得其由相同SP執(zhí)行的指令流。因此,定序器模塊180可經(jīng)配置以基于將內(nèi)核的工作組系結(jié)在一起的指令流分配工作組,而不是按固定模式(如(例如)圖5中所示)分配內(nèi)核184到188的工作組。
[0084]在圖6中所示的實(shí)例中,定序器模塊180執(zhí)行將內(nèi)核184的工作組WGO系結(jié)到內(nèi)核186的工作組WGO且系結(jié)到內(nèi)核188的工作組WGO的指令流。內(nèi)核184到186的工作組WGO皆與相同輸入數(shù)據(jù)相關(guān)聯(lián)。通過執(zhí)行指令流,使用SP200A按順序處理內(nèi)核184到188的工作組WG0。因此,與WGO相關(guān)聯(lián)的輸入數(shù)據(jù)(其可在內(nèi)核184到188當(dāng)中是相同的)可在內(nèi)核184到188的工作組WGO之間共享。舉例來(lái)說,與工作組WGO相關(guān)聯(lián)的數(shù)據(jù)可在處理內(nèi)核184的WGO時(shí)被載入到SP存儲(chǔ)器204A中,且由內(nèi)核186的WGO及內(nèi)核188的WGO共享。
[0085]將數(shù)據(jù)保留在SP存儲(chǔ)器204A中且在多個(gè)工作組之間共享所述數(shù)據(jù)提供對(duì)SP存儲(chǔ)器204A的有效管理。舉例來(lái)說,所述數(shù)據(jù)可保留于SP存儲(chǔ)器204A中且由多個(gè)內(nèi)核的多個(gè)工作組共享,而不是必須在工作組的每一次執(zhí)行之后提取新數(shù)據(jù)且將新數(shù)據(jù)傳送到SP存儲(chǔ)器204A中。因此,可減少本地存儲(chǔ)器帶寬消耗。在圖6中所示的三內(nèi)核實(shí)例中,與圖5中所示的三內(nèi)核實(shí)例相比較,本地存儲(chǔ)器帶寬消耗減少三分之二。
[0086]根據(jù)本發(fā)明的一些實(shí)例,與執(zhí)行指令流相關(guān)聯(lián)的本地存儲(chǔ)器帶寬節(jié)省還提供時(shí)間節(jié)省。舉例來(lái)說,在SP200可執(zhí)行與不利用指令流的系統(tǒng)相同數(shù)目的與工作組相關(guān)聯(lián)的計(jì)算以執(zhí)行給定程序時(shí),可實(shí)現(xiàn)時(shí)間節(jié)省,這是因?yàn)楸仨氃贕PU全局存儲(chǔ)器與SP存儲(chǔ)器204之間傳送較少的數(shù)據(jù)。GPU全局存儲(chǔ)器與SP存儲(chǔ)器204之間的數(shù)據(jù)傳送可為相對(duì)時(shí)間密集型過程,所述時(shí)間密集型過程將瓶頸引入到執(zhí)行內(nèi)核184到188的過程中。因此,減少在GPU全局存儲(chǔ)器與SP存儲(chǔ)器204之間傳送所需的數(shù)據(jù)量還減少與GPU全局存儲(chǔ)器與SP存儲(chǔ)器204之間的數(shù)據(jù)傳送相關(guān)聯(lián)的瓶頸。
[0087]圖7為說明將執(zhí)行次序流240、244及248指派給具有第一 SP存儲(chǔ)器256A的第一 SP252A、具有第二 SP存儲(chǔ)器256B的第二 SP252B及具有第三SP存儲(chǔ)器256C的第三SP252C(統(tǒng)稱為SP252及SP存儲(chǔ)器256)的實(shí)例的框圖。根據(jù)本發(fā)明的一些方面,SP252可并入于GPU中,例如圖1中所示的GPU48或圖4中所示的GPU60。
[0088]圖7中所示的實(shí)例包含執(zhí)行與三個(gè)內(nèi)核相關(guān)聯(lián)的工作組的三個(gè)SP252。然而,應(yīng)理解,執(zhí)行次序流可實(shí)施于具有比圖7中所示的SP多或少的SP(例如,2個(gè)SP、10個(gè)SP、100個(gè)SP)的系統(tǒng)中。另外,執(zhí)行次序流可將比圖7中所示的三個(gè)多或少的工作組及內(nèi)核連結(jié)
在一起。
[0089]可由定序器模塊(例如,圖4中所示的定序器模塊82)將執(zhí)行次序流或指令流240到248指派給SP252。指令流240到248實(shí)際上將不同內(nèi)核的工作組系結(jié)在一起,使得其由相同SP處理。舉例來(lái)說,如圖7中所示,指令流240將內(nèi)核I的工作組O連結(jié)到內(nèi)核2的工作組O及內(nèi)核3的工作組O。同樣,指令流244將內(nèi)核I的工作組I連結(jié)到內(nèi)核2的工作組I及內(nèi)核3的工作組1,且指令流248將內(nèi)核I的工作組2連結(jié)到內(nèi)核2的工作組2及內(nèi)核3的工作組2。
[0090]在圖7中所示的實(shí)例中,與相似編號(hào)的工作組相關(guān)聯(lián)的輸入數(shù)據(jù)中的至少一些是一致的。舉例來(lái)說,與內(nèi)核I的工作組O相關(guān)聯(lián)的輸入數(shù)據(jù)與和內(nèi)核2的工作組O及內(nèi)核3的工作組O相關(guān)聯(lián)的輸入數(shù)據(jù)相同,或與和內(nèi)核2的工作組O及內(nèi)核3的工作組O相關(guān)聯(lián)的輸入數(shù)據(jù)具有至少某一重疊。因此,SP252A可通過將與工作組O相關(guān)聯(lián)的輸入數(shù)據(jù)載入到SP存儲(chǔ)器256A中及在執(zhí)行內(nèi)核I的工作組O、內(nèi)核2的工作組O及內(nèi)核3的工作組O時(shí)共享所述輸入數(shù)據(jù)來(lái)執(zhí)行指令流240。以此方式,執(zhí)行指令流240減少在內(nèi)核1、2及3的執(zhí)行期間傳送到SP存儲(chǔ)器256A中及傳送到SP存儲(chǔ)器256A之外所需要的數(shù)據(jù)量??舍槍?duì)SP252B及SP存儲(chǔ)器256B且針對(duì)SP252C及SP存儲(chǔ)器256C進(jìn)行類似操作。
[0091]圖8為說明產(chǎn)生及執(zhí)行例如圖7中所示的流240到248等執(zhí)行次序(例如,“指令流”)的方法300的流程圖。根據(jù)本發(fā)明的一些方面,方法300可由GPU進(jìn)行,例如圖1中所示的GPU48或圖4中所示的GPU60。僅出于說明的目的,方法300的部分可描述為由圖4中所示的實(shí)例GPU60進(jìn)行。
[0092]如圖8中所示,最初識(shí)別用于執(zhí)行次序流的候選者(304)。根據(jù)一些方面,用戶識(shí)別將從利用指令流中受益的候選內(nèi)核。舉例來(lái)說,用戶可識(shí)別多次利用相同輸入數(shù)據(jù)的內(nèi)核。在另一實(shí)例中,例如編譯器程序等程序可識(shí)別將從實(shí)施指令流中受益的候選內(nèi)核。舉例來(lái)說,編譯器程序可監(jiān)視存儲(chǔ)器存取模式,且識(shí)別由一個(gè)以上內(nèi)核使用的輸入數(shù)據(jù)。當(dāng)由程序的一個(gè)以上內(nèi)核使用輸入數(shù)據(jù)時(shí),指令流可經(jīng)實(shí)施以系結(jié)利用相同數(shù)據(jù)的工作組,使得由相同SP執(zhí)行所述工作組。以此方式利用指令流可通過減少輸入數(shù)據(jù)需要載入到本地存儲(chǔ)器資源中的次數(shù),幫助管理SP的本地存儲(chǔ)器資源。舉例來(lái)說,輸入數(shù)據(jù)可被載入到SP的本地存儲(chǔ)器中一次且在多個(gè)內(nèi)核的多個(gè)工作組之間共享。
[0093]在已識(shí)別候選者之后,產(chǎn)生執(zhí)行次序流標(biāo)號(hào)(308)。用戶可使用適用于包含指令流命令的API定義指令流。舉例來(lái)說,例如OpenGL、CUDA、DirectX或用于創(chuàng)建GPU程序的任何其它API等API可適用于包含允許用戶向指令流指定工作組及其相關(guān)聯(lián)的內(nèi)核的一個(gè)或一個(gè)以上命令。在另一實(shí)例中,例如編譯器程序等程序可在識(shí)別重復(fù)的存儲(chǔ)器存取模式之后自動(dòng)地廣生指令流。
[0094]在產(chǎn)生指令流之后,將執(zhí)行次序標(biāo)號(hào)發(fā)射到GPU (例如,GPU60)且由所述GPU接收(312)。在一些實(shí)例中,定序器模塊82可接收定義包含一個(gè)或一個(gè)以上內(nèi)核標(biāo)號(hào)及一個(gè)或一個(gè)以上工作組標(biāo)號(hào)的執(zhí)行次序流的輸入??捎捎?jì)算裝置的主機(jī)處理器(例如,圖1中所示的主機(jī)處理器24)將指令流發(fā)射到定序器模塊82。在GPU60為相異裝置(例如,不包含于具有主機(jī)處理器的計(jì)算裝置中)的實(shí)例中,另一處理組件可負(fù)責(zé)接收指令流,且將其發(fā)射到定序器模塊82。
[0095]定序器模塊82可通過將流指派給SP (例如,SP76)實(shí)施執(zhí)行次序(316)。舉例來(lái)說,定序器模塊82可指派將由GPU60的相同SP執(zhí)行的指令流中所指定的工作組。SP通過執(zhí)打在執(zhí)彳丁次序中所指定的指令來(lái)執(zhí)打指令流(320)。舉例來(lái)說,SP按順序執(zhí)打在指令流中所指定的工作組。通過如此做,與在指令流中所指定的工作組相關(guān)聯(lián)的輸入數(shù)據(jù)可在指令流中所指定的工作組之間共享。執(zhí)行指令流可減少在GPU存儲(chǔ)器72與SP存儲(chǔ)器78之間傳送所需要的數(shù)據(jù)量,且減少執(zhí)行特定程序所需要的總時(shí)間。
[0096]在上文所提供的實(shí)例中,指令流描述為將不同內(nèi)核的工作組系結(jié)在一起以使得由相同SP連續(xù)地執(zhí)行不同內(nèi)核的工作組。以此方式將不同內(nèi)核的工作組系結(jié)在一起輔助管理與SP相關(guān)聯(lián)的存儲(chǔ)器資源,這是因?yàn)榕c工作組相關(guān)聯(lián)的數(shù)據(jù)可由多個(gè)內(nèi)核共享。然而,應(yīng)理解,術(shù)語(yǔ)“工作組” 一般是指代指令群組。舉例來(lái)說,“工作組”可在統(tǒng)一計(jì)算設(shè)備架構(gòu)(由NVIDIA公司開發(fā)的“CUDA”,版本3.2于2010年9月17號(hào)發(fā)布)中被稱作“線程塊”。
[0097]還應(yīng)理解,僅作為實(shí)例來(lái)提供工作組及內(nèi)核標(biāo)號(hào)。本發(fā)明的存儲(chǔ)器管理方面可適用于GPU應(yīng)用程序的其它配置。舉例來(lái)說,其它GPU應(yīng)用程序可包含單個(gè)相對(duì)較大“內(nèi)核”,所述單個(gè)相對(duì)較大“內(nèi)核”包含在執(zhí)行期間使用相同輸入數(shù)據(jù)超過一次的指令。在此實(shí)例中,本發(fā)明的方面仍可適用于管理存儲(chǔ)器資源。盡管使用相同輸入數(shù)據(jù)的指令屬于相同內(nèi)核,仍可創(chuàng)建將所述指令系結(jié)在一起的指令流。
[0098]在一個(gè)或一個(gè)以上實(shí)例中,所描述的功能可以硬件、硬件上執(zhí)行的軟件、硬件上執(zhí)行的固件或其任何組合來(lái)實(shí)施。在一些實(shí)例中,存儲(chǔ)于計(jì)算機(jī)可讀媒體上的指令可致使硬件組件執(zhí)行上文所描述的其相應(yīng)的功能。計(jì)算機(jī)可讀媒體可包含計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)媒體。數(shù)據(jù)存儲(chǔ)媒體可以是可由一個(gè)或一個(gè)以上計(jì)算機(jī)或一個(gè)或一個(gè)以上處理器存取以檢索用于實(shí)施本發(fā)明中所述的技術(shù)的指令、代碼和/或數(shù)據(jù)結(jié)構(gòu)的任何可用媒體。舉例說明且并非限制,此些計(jì)算機(jī)可讀媒體可包括RAM、ROM、EEPROM、CD-ROM或其它光盤存儲(chǔ)裝置、磁盤存儲(chǔ)裝置,或其它磁性存儲(chǔ)裝置、快閃存儲(chǔ)器,或可用于以指令或數(shù)據(jù)結(jié)構(gòu)的形式進(jìn)行或存儲(chǔ)所要的程序代碼且可被計(jì)算機(jī)存取的任何其它媒體。上述各者的組合也應(yīng)包含在計(jì)算機(jī)可讀媒體的范圍內(nèi)。
[0099]代碼可由一個(gè)或一個(gè)以上處理器(例如,一個(gè)或一個(gè)以上DSP)、通用微處理器、ASIC、FPGA或其它等效集成或離散邏輯電路來(lái)執(zhí)行。因此,如本文中所使用的術(shù)語(yǔ)“處理器”可指上述結(jié)構(gòu)或適合于實(shí)施本文中所描述的技術(shù)的任一其它結(jié)構(gòu)中的任一者。另外,在一些方面中,本文中所描述的功能性可提供在針對(duì)編碼和解碼而配置的專用硬件和/或軟件模塊中或并入在組合的編解碼器中。并且,可將所述技術(shù)完全實(shí)施于一個(gè)或一個(gè)以上電路或邏輯元件中。
[0100]本發(fā)明的技術(shù)可實(shí)施在各種各樣的裝置或設(shè)備中,包含無(wú)線手持機(jī)、集成電路(IC)或IC的集合(例如,芯片集)。在本發(fā)明中描述各種組件、模塊或單元是為了強(qiáng)調(diào)經(jīng)配置以執(zhí)行所揭示技術(shù)的裝置的功能方面,而未必要求通過不同硬件單元來(lái)體現(xiàn)。而是,如上所述,各種單元可由互操作硬件單元(包含如上所述的一個(gè)或一個(gè)以上處理器)的集合與合適的軟件和/或固件共同組合。
[0101]已描述了各種實(shí)例。這些及其它實(shí)例屬于所附權(quán)利要求書的范圍內(nèi)。
【權(quán)利要求】
1.一種用圖形處理單元GPU來(lái)處理數(shù)據(jù)的方法,所述方法包括: 接收定義著色器處理器的執(zhí)行次序的輸入,其中所述執(zhí)行次序包括多個(gè)內(nèi)核標(biāo)號(hào)及多個(gè)工作組標(biāo)號(hào); 將所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的工作組指派給所述著色器處理器;以及 通過所述著色器處理器執(zhí)行所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的所述工作組以處理輸入數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其中所述多個(gè)內(nèi)核標(biāo)號(hào)識(shí)別多個(gè)內(nèi)核,且其中所述多個(gè)內(nèi)核的每一內(nèi)核定義由所述GPU實(shí)行的功能。
3.根據(jù)權(quán)利要求1所述的方法,其中所述多個(gè)工作組標(biāo)號(hào)識(shí)別多個(gè)工作組,且其中所述多個(gè)工作組的每一工作組包括由所述GPU對(duì)輸入數(shù)據(jù)執(zhí)行的指令。
4.根據(jù)權(quán)利要求1所述的方法,其中接收定義所述執(zhí)行次序的輸入包括接收將第一內(nèi)核的第一工作組連結(jié)到第二內(nèi)核的第一工作組的標(biāo)號(hào),其中所述第一內(nèi)核的所述第一工作組及所述第二內(nèi)核的所述第一工作組與實(shí)質(zhì)上相同的輸入數(shù)據(jù)相關(guān)聯(lián)。
5.根據(jù)權(quán)利要求4所述的方法,其中執(zhí)行所述執(zhí)行次序包括在所述第一內(nèi)核的所述第一工作組之后由所述著色器處理器執(zhí)行所述第二內(nèi)核的所述第一工作組。
6.根據(jù)權(quán)利要求1所述的方法,其中將執(zhí)行次序流執(zhí)行包括在所述多個(gè)工作組標(biāo)號(hào)中所識(shí)別的兩個(gè)或兩個(gè)以上工作組之間共享輸入數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的方法,其中在所述兩個(gè)或兩個(gè)以上工作組之間共享輸入數(shù)據(jù)包括將所述輸入數(shù)據(jù)保留于所述著色器處理器的本地存儲(chǔ)器中以用于執(zhí)行所述兩個(gè)或兩個(gè)以上工作組的第一工作組及所述兩個(gè)或兩個(gè)以上工作組的第二工作組。
8.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括響應(yīng)于用戶輸入而使用應(yīng)用程序編程接口 API產(chǎn)生定義所述執(zhí)行次序的所述輸入。
9.一種圖形處理單元GPU,其包括: 定序器模塊,其經(jīng)配置以接收定義著色器處理器的執(zhí)行次序的輸入,其中所述執(zhí)行次序包括多個(gè)內(nèi)核標(biāo)號(hào)及多個(gè)工作組標(biāo)號(hào); 其中所述定序器模塊經(jīng)配置以將所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的工作組指派給所述著色器處理器;以及 其中所述著色器處理器經(jīng)配置以執(zhí)行所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的所述工作組以處理輸入數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的GPU,其中所述多個(gè)內(nèi)核標(biāo)號(hào)識(shí)別多個(gè)內(nèi)核,且其中所述多個(gè)內(nèi)核的每一內(nèi)核定義由所述GPU實(shí)行的功能。
11.根據(jù)權(quán)利要求9所述的GPU,其中所述多個(gè)工作組標(biāo)號(hào)識(shí)別多個(gè)工作組,且其中所述多個(gè)工作組的每一工作組包括由所述GPU對(duì)輸入數(shù)據(jù)執(zhí)行的指令。
12.根據(jù)權(quán)利要求9所述的GPU,其中所述定序器模塊經(jīng)進(jìn)一步配置以接收將第一內(nèi)核的第一工作組連結(jié)到第二內(nèi)核的第一工作組的標(biāo)號(hào),其中所述第一內(nèi)核的所述第一工作組及所述第二內(nèi)核的所述第一工作組與實(shí)質(zhì)上相同的輸入數(shù)據(jù)相關(guān)聯(lián)。
13.根據(jù)權(quán)利要求12所述的GPU,其中所述著色器處理器經(jīng)進(jìn)一步配置以在所述第一內(nèi)核的所述第一工作組之后執(zhí)行所述第二內(nèi)核的所述第一工作組。
14.根據(jù)權(quán)利要求9所述的GPU,其中所述著色器處理器進(jìn)一步包括著色器處理器存儲(chǔ)器,且所述著色器處理器經(jīng)配置以存儲(chǔ)與所述多個(gè)工作組標(biāo)號(hào)中所識(shí)別的兩個(gè)或兩個(gè)以上工作組相關(guān)聯(lián)的輸入數(shù)據(jù)。
15.根據(jù)權(quán)利要求14所述的GPU,其中所述著色器處理器存儲(chǔ)器經(jīng)進(jìn)一步配置以保留與所述兩個(gè)或兩個(gè)以上工作組相關(guān)聯(lián)的所述所存儲(chǔ)的輸入數(shù)據(jù),且在所述兩個(gè)或兩個(gè)以上工作組之間共享所述所存儲(chǔ)的數(shù)據(jù)。
16.一種圖形處理單元GPU,其包括: 用于接收定義著色器處理器的執(zhí)行次序的輸入的裝置,其中所述執(zhí)行次序包括多個(gè)內(nèi)核標(biāo)號(hào)及多個(gè)工作組標(biāo)號(hào); 用于將所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的工作組指派給所述著色器處理器的裝置;以及 用于執(zhí)行所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的所述工作組以處理輸入數(shù)據(jù)的裝置。
17.根據(jù)權(quán)利要求16所述的GPU,其中所述多個(gè)內(nèi)核標(biāo)號(hào)識(shí)別多個(gè)內(nèi)核,且其中所述多個(gè)內(nèi)核的每一內(nèi)核定義由所述GPU實(shí)行的功能。
18.根據(jù)權(quán)利要求16所述的GPU,其中所述多個(gè)工作組標(biāo)號(hào)識(shí)別多個(gè)工作組,且其中所述多個(gè)工作組的每一工作組包括由所述GPU對(duì)輸入數(shù)據(jù)執(zhí)行的指令。
19.根據(jù)權(quán)利要求16所述的GPU,其中所述用于接收輸入的裝置經(jīng)進(jìn)一步配置以接收將第一內(nèi)核的第一工作組連結(jié)到第二內(nèi)核的第一工作組的標(biāo)號(hào),其中所述第一內(nèi)核的所述第一工作組及所述第二內(nèi)核的所述第一工作組與實(shí)質(zhì)上相同的輸入數(shù)據(jù)相關(guān)聯(lián)。
20.根據(jù)權(quán)利要求19所述的GPU,其中所述用于執(zhí)行的裝置經(jīng)進(jìn)一步配置以在所述第一內(nèi)核的所述第一工作組之后執(zhí)行所述第二內(nèi)核的所述第一工作組。
21.根據(jù)權(quán)利要求16所述的GPU,其中所述用于執(zhí)行的裝置進(jìn)一步包括用于存儲(chǔ)與所述多個(gè)工作組標(biāo)號(hào)中所識(shí)別的兩個(gè)或兩個(gè)以上工作組相關(guān)聯(lián)的輸入數(shù)據(jù)的裝置。
22.根據(jù)權(quán)利要求21所述的GPU,其中所述用于存儲(chǔ)輸入數(shù)據(jù)的裝置經(jīng)進(jìn)一步配置以保留與所述兩個(gè)或兩個(gè)以上工作組相關(guān)聯(lián)的所述所存儲(chǔ)的輸入數(shù)據(jù),且在所述兩個(gè)或兩個(gè)以上工作組之間共享所述所存儲(chǔ)的數(shù)據(jù)。
23.一種用指令編碼的計(jì)算機(jī)可讀存儲(chǔ)媒體,所述指令用于致使具有圖形處理單元GPU的計(jì)算裝置的一個(gè)或一個(gè)以上可編程處理器: 接收定義著色器處理器的執(zhí)行次序的輸入,其中所述執(zhí)行次序包括多個(gè)內(nèi)核標(biāo)號(hào)及多個(gè)工作組標(biāo)號(hào); 將所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的工作組指派給所述著色器處理器;以及 通過所述著色器處理器執(zhí)行所述多個(gè)工作組標(biāo)號(hào)及所述多個(gè)內(nèi)核標(biāo)號(hào)中所識(shí)別的內(nèi)核的所述工作組以處理輸入數(shù)據(jù)。
24.根據(jù)權(quán)利要求23所述的計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述多個(gè)內(nèi)核標(biāo)號(hào)識(shí)別多個(gè)內(nèi)核,且其中所述多個(gè)內(nèi)核的每一內(nèi)核定義由所述GPU實(shí)行的功能。
25.根據(jù)權(quán)利要求23所述的計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述多個(gè)工作組標(biāo)號(hào)識(shí)別多個(gè)工作組,且其中所述多個(gè)工作組的每一工作組包括由所述GPU對(duì)輸入數(shù)據(jù)執(zhí)行的指令。
26.根據(jù)權(quán)利要求23所述的計(jì)算機(jī)可讀存儲(chǔ)媒體,其進(jìn)一步包括用于致使計(jì)算裝置的一個(gè)或一個(gè)以上可編程處理器接收將第一內(nèi)核的第一工作組連結(jié)到第二內(nèi)核的第一工作組的標(biāo)號(hào)的指令,其中所述第一內(nèi)核的所述第一工作組及所述第二內(nèi)核的所述第一工作組與實(shí)質(zhì)上相同的輸入數(shù)據(jù)相關(guān)聯(lián)。
27.根據(jù)權(quán)利要求26所述的計(jì)算機(jī)可讀存儲(chǔ)媒體,其中執(zhí)行所述執(zhí)行次序包括在所述第一內(nèi)核的所述第一工作組之后由所述著色器處理器執(zhí)行所述第二內(nèi)核的所述第一工作組。
28.根據(jù)權(quán)利要求23所述的計(jì)算機(jī)可讀存儲(chǔ)媒體,其中將執(zhí)行次序流執(zhí)行包括在所述多個(gè)工作組標(biāo)號(hào)中所識(shí)別的兩個(gè)或兩個(gè)以上工作組之間共享輸入數(shù)據(jù)。
29.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀存儲(chǔ)媒體,其中在所述兩個(gè)或兩個(gè)以上工作組之間共享輸入數(shù)據(jù)包括將所述輸入數(shù)據(jù)保留于所述著色器處理器的本地存儲(chǔ)器中以用于執(zhí)行所述兩個(gè)或兩個(gè)以上工作組的第一工作組及所述兩個(gè)或兩個(gè)以上工作組的第二工作組。
【文檔編號(hào)】G06F9/48GK103608777SQ201280029553
【公開日】2014年2月26日 申請(qǐng)日期:2012年5月18日 優(yōu)先權(quán)日:2011年6月20日
【發(fā)明者】尤卡·佩卡·阿爾沃 申請(qǐng)人:高通股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1