以字為單位規(guī)定的。
[0203]注意:對于寫入塊,不能規(guī)定裕度屬性,或者即使可以規(guī)定也得忽略。
[0204]圖4示出在規(guī)定X方向“I”和Y方向“2”作為裕度屬性的情況下,當(dāng)傳送數(shù)據(jù)塊(讀取塊)的每個子讀取塊SRB時的傳送范圍。在此情況下,當(dāng)傳送每個子讀取塊SRB時的傳送范圍除了子讀取塊SRB中的數(shù)據(jù)外,還包括一列的數(shù)據(jù)和兩行的數(shù)據(jù),其中一列的數(shù)據(jù)每個都鄰近子讀取塊SRB的左邊界和右邊界,兩行的數(shù)據(jù)每個都鄰近子讀取塊SRB的上端邊界和下端邊界。注意:圖4中,位于數(shù)據(jù)塊頂部的子讀取塊SRB被示出為示例并且沒有鄰近子讀取塊SRB的上邊界的數(shù)據(jù),因此當(dāng)傳送每個子讀取塊SRB時的傳送范圍不包括鄰近上邊界的數(shù)據(jù)。
[0205]如稍后詳細(xì)描述的,在根據(jù)該實(shí)施例的OpenCL系統(tǒng)100中,對于每個讀取塊,通過一次讀傳送為一個⑶160傳送一個子讀取塊SRB,且⑶160執(zhí)行對通過一次讀傳送而傳送到CU 160的專用存儲器/局部存儲器的每個子塊的子讀取塊SRB的運(yùn)算處理。然后,運(yùn)算處理的結(jié)果被作為每個寫入塊的一個子塊從CU 160傳送到全局存儲器。
[0206]例如,在針對兩維圖像執(zhí)行3X3卷積處理的情況下,在目標(biāo)像素的四個方向上(上、下、左、右),需要鄰近目標(biāo)像素的一個像素。如果只傳送子讀取塊SRB中的數(shù)據(jù),則不可能對位于子讀取塊SRB的最外部分的每個像素執(zhí)行運(yùn)算處理。因此,在此情況下,有必要規(guī)定“I”為X方向和Y方向上的裕度屬性。
[0207]描述圖2中所示的數(shù)據(jù)塊的裕度屬性。注意:因?yàn)閷υ6葘傩缘囊?guī)定與其它屬性的規(guī)定有關(guān),所以難以只描述裕度屬性。因此,只描述了為圖2中所示的每個數(shù)據(jù)塊規(guī)定的裕度屬性的值,并且稍后描述這些值的含義的細(xì)節(jié)。
[0208]盡管讀取塊P和讀取塊Q是要被規(guī)定裕度屬性的數(shù)據(jù),對于讀取塊P,在X方向和Y方向上,裕度被設(shè)置為“O”。進(jìn)一步,對于讀取塊Q,X方向上裕度被設(shè)置為“O”,并且Y方向上被設(shè)置為“9”。
[0209]因此,在讀取塊P的傳送中,只傳送子讀取塊SRB中的數(shù)據(jù)。另一方面,在讀取塊Q的傳送中,除了子讀取塊SRB中的數(shù)據(jù)外,還傳送鄰近子讀取塊SRB的下端的九行數(shù)據(jù)。
[0210]因?yàn)閷懭雺KR是要被寫傳送的數(shù)據(jù),所以沒有規(guī)定裕度屬性。因此,在寫入塊R的傳送中,只傳送子寫入塊SWB中的數(shù)據(jù)。
[0211]〈廣播屬性〉
[0212]該屬性是規(guī)定每個讀取塊的子讀取塊SRB的傳送目的地或者每個寫入塊的子寫入塊SWB的傳送源是專用存儲器組和局部存儲器中的哪個的參數(shù),其可以是“打開”或“關(guān)閉”。例如,如圖5中所示,廣播屬性“打開”規(guī)定局部存儲器作為傳送目的地或傳送源,并且廣播屬性“關(guān)閉”規(guī)定專用存儲器作為傳送目的地或傳送源。
[0213]描述圖2中所示的數(shù)據(jù)塊的廣播屬性。注意:因?yàn)閺V播屬性的規(guī)定還與其它屬性有關(guān),所以難以只描述廣播屬性。因此,只描述了為圖2中所示的每個數(shù)據(jù)塊所規(guī)定的廣播屬性的值,并且稍后描述這些值的含義的細(xì)節(jié)。
[0214]對于讀取塊P,廣播屬性被設(shè)置為“打開”。因此,在讀取塊P的傳送中,每個子讀取塊SRB被傳送到局部存儲器170。
[0215]對于讀取塊Q和寫入塊R,廣播屬性被設(shè)置為“關(guān)閉”。因此,在讀取塊Q的傳送中,每個子讀取塊SRB被傳送到專用存儲器164。進(jìn)一步,寫入塊R的子寫入塊SWB被從專用存儲器組傳送到全局存儲器152。
[0216]〈分配屬性〉
[0217]該屬性是指示怎樣分配子讀取塊SRB和子寫入塊SWB到⑶160的專用存儲器組/局部存儲器的參數(shù)。
[0218]在根據(jù)該實(shí)施例的OpenCL系統(tǒng)100中,支持兩種分配方法,“長度優(yōu)先”和“寬度優(yōu)先”。
[0219]在詳細(xì)描述分配屬性之前,描述工作組大小WG和分配給一個項(xiàng)目的數(shù)據(jù)量。
[0220]對應(yīng)于具有廣播屬性“關(guān)閉”的數(shù)據(jù)塊的“工作組大小WG”是一個工作組中項(xiàng)目的數(shù)目所表示的數(shù)據(jù)量,而且,例如,當(dāng)項(xiàng)目數(shù)目為N時,工作組大小WG是N個字。換句話說,對應(yīng)于具有廣播屬性“打開”的數(shù)據(jù)塊的工作組大小WG總是被視為I。下面,對應(yīng)于具有廣播屬性“關(guān)閉”的數(shù)據(jù)塊的“工作組大小WG”被簡稱為工作組大小WG。盡管工作組大小WG稍后由設(shè)備120中的運(yùn)算控制單元200的場景確定單元230來確定,用戶可以規(guī)定在創(chuàng)建內(nèi)核時采用其最大值和最小值中的哪個。
[0221]進(jìn)一步,分配給一個項(xiàng)目的數(shù)據(jù)量也由場景確定單元230來確定。工作組大小WG采用最小值的情況是當(dāng)一個項(xiàng)目對應(yīng)于一個PE時。另一方面,在OpenCL設(shè)備能通過將PE的專用存儲器分段成M (M是2或更大的整數(shù))塊使得M個項(xiàng)目對應(yīng)于一個PE來規(guī)定最大M倍的工作組大小WG時,最大值是最小值的M倍。另一方面,在使用工作組大小WG的最大值的情況下,每一個PE的專用存儲器是當(dāng)使用工作組大小WG最大值時的M分之一。下面,為了簡化描述,假設(shè)場景確定單元230總是使用工作組大小WG的最小值,并且因?yàn)橐粋€項(xiàng)目對應(yīng)于一個PE,所以在下面描述中,用術(shù)語“PE”用來替換術(shù)語“項(xiàng)目”。
[0222]“長度優(yōu)先”是以下方法:分配數(shù)據(jù)塊使得子塊的X方向上的大小(SBsx)為工作組大小WG,并且Y方向上的大小(SBsy)為分配給一個項(xiàng)目的數(shù)據(jù)量,該數(shù)據(jù)量是分配給一個PE的數(shù)據(jù)量。
[0223]規(guī)定“長度優(yōu)先”作為分配屬性的數(shù)據(jù)塊中的每個子塊在全局存儲器152和專用存儲器164之間傳送,使得一個子塊對應(yīng)于一個工作組,而子塊中的一列數(shù)據(jù)對應(yīng)于工作組中一個PE 162的專用存儲器164。
[0224]圖6示出了規(guī)定“長度優(yōu)先”作為分配屬性的讀取塊情況的示例。在此情況下,每個子讀取塊SRB從全局存儲器152傳送到專用存儲器164,使得子讀取塊SRB中的全部的數(shù)據(jù)被存儲到相同工作組的PE 162的專用存儲器164中,而子塊中相同列的數(shù)據(jù)被存儲到相同PE 162的專用存儲器164中。
[0225]“寬度優(yōu)先”是以下方法:分配數(shù)據(jù)塊使得子塊的X方向上的大小SBsx為工作組大小WG的整數(shù)倍。注意:子塊的Y方向上的大小SBsy稍后由場景確定單元230確定。
[0226]在規(guī)定“寬度優(yōu)先”作為分配屬性的數(shù)據(jù)塊中的每個子塊中,一個子塊對應(yīng)于一個工作組,而子塊中的全部的數(shù)據(jù)被傳送到包括在相同工作組中的PE 162的專用存儲器164。進(jìn)一步在子塊的每行中,通過以工作組大小WG的量分段每行所獲得的整數(shù)個分段塊的數(shù)據(jù)被均等地分布到對于每個分段塊的相同工作組中WG個PE162的專用存儲器164。
[0227]圖7示出了規(guī)定“寬度優(yōu)先”作為分配屬性的讀取塊的情況的示例。注意:在這個示例中,子寫入塊SWB的Y方向上的大小SBsy是一個字。這樣,該讀取塊被分段使得子讀取塊SRB的X方向上的大小SBsx為工作組大小WG的整數(shù)倍且行數(shù)為I。
[0228]如本圖中所示,在此情況下,讀取塊的每個子讀取塊SRB被傳送,使得子讀取塊SRB中的全部的數(shù)據(jù)被存儲在相同工作組中的PE 162的專用存儲器164中。進(jìn)一步,其被傳送,使得通過在行方向上以工作組大小WG的量來分段子讀取塊SRB所獲得的整數(shù)個分段塊的數(shù)據(jù)被均等地分布到對于每個分段塊的相同工作組中的WG個PE 162的專用存儲器164。例如,從數(shù)據(jù)I到數(shù)據(jù)a之前一個的數(shù)據(jù)的多個數(shù)據(jù)構(gòu)成一個分段塊且被傳送,使得它們被存儲在相同工作組中的多個PE 162的專用存儲器164中。進(jìn)一步,從數(shù)據(jù)a到數(shù)據(jù)j之前一個的數(shù)據(jù)的多個數(shù)據(jù)也構(gòu)成一個分段塊且被傳送,使得它們被存儲到相同工作組中的多個PE 162的專用存儲器164中。
[0229]描述圖2中所示的數(shù)據(jù)塊的分配屬性。注意:由于分配屬性的規(guī)定也與其它屬性的規(guī)定有關(guān),難以只描述分配屬性。因此,只描述了為圖2中所示的每個數(shù)據(jù)塊所規(guī)定的分配屬性的值,稍后描述這些值的含義的細(xì)節(jié)。
[0230]假設(shè)規(guī)定“長度優(yōu)先”作為讀取塊P的分配屬性,并且規(guī)定“長度優(yōu)先”也作為讀取塊Q和寫入塊R的分配屬性。
[0231]〈層級屬性〉
[0232]該屬性是一個或多個自然數(shù)所規(guī)定的層級數(shù)目。在規(guī)定相同層級數(shù)目的多個讀取塊中,通過一次讀或?qū)憘魉蛠韨魉兔總€子塊SB。
[0233]描述圖2中所示的數(shù)據(jù)塊的層級屬性。注意:因?yàn)閷蛹墝傩缘囊?guī)定還與其它屬性的規(guī)定有關(guān),所以難以只描述層級屬性。因此,只描述為圖2中所示的每個數(shù)據(jù)塊規(guī)定的層級屬性的值,并且稍后描述這些值的含義的細(xì)節(jié)。
[0234]對于讀取塊P和讀取塊Q分別規(guī)定層級屬性為“2”和“I”。進(jìn)一步,對于寫入塊R規(guī)定層級屬性為“I”。
[0235]<依賴性屬性>
[0236]該屬性是指示數(shù)據(jù)塊的子塊和鄰近該子塊的八個其它子塊之間的依賴性的參數(shù),并且可以規(guī)定“依賴”或“無依賴”。對于“依賴”,可以進(jìn)一步規(guī)定三個類型的依賴性。
[0237]有三個類型的“依賴性”:R1、R2和R3。結(jié)合圖8來描述它們。注意,在圖8中,虛線所環(huán)繞的區(qū)域指示子塊SB,并且數(shù)字指示傳送的次序。
[0238]圖8示出了在規(guī)定分配屬性和讀屬性分別為“長度優(yōu)先”和“左上”的情況下Rl到R3依賴性。
[0239]如圖中所示,在此情況下,在從目標(biāo)子塊SB觀看存在與上方子塊SB的依賴性的情況下規(guī)定“R1依賴性”。在從目標(biāo)子塊SB觀看存在與上方、左上和左方子塊SB的依賴性的情況下規(guī)定“R2依賴性”。在從目標(biāo)子塊SB觀看存在與八個相鄰子塊中的排除下方和下方寫入塊的六個子塊SB的依賴性的情況下規(guī)定“R3依賴性”。
[0240]描述圖2所示的數(shù)據(jù)塊的依賴性屬性。注意:因?yàn)橐蕾囆詫傩缘囊?guī)定也與其它屬性有關(guān),所以難以只描述依賴性屬性。因此,只描述為圖2中所示的每個數(shù)據(jù)塊規(guī)定的依賴性屬性的值,而在稍后描述這些值的含義的細(xì)節(jié)。
[0241]在這個示例中,對全部的讀取塊P、讀取塊Q和寫入塊R規(guī)定依賴性屬性為“無”。
[0242]上面描述了在根據(jù)該實(shí)施例的OpenCL系統(tǒng)100中支持的八個屬性。全部的這八個屬性不取決于設(shè)備120中的運(yùn)算單元140的配置。為圖2中所示的三個數(shù)據(jù)塊的每個設(shè)置的屬性組在圖9中總結(jié)示出,以便更簡單地理解稍后提供的描述。
[0243]在根據(jù)該實(shí)施例的OpenCL系統(tǒng)100中,從主機(jī)110傳送到設(shè)備120的內(nèi)核的參數(shù)包括規(guī)定用于要被處理的數(shù)據(jù)塊和作為處理結(jié)果的數(shù)據(jù)塊中的每個的上述的屬性組。設(shè)備120的運(yùn)算控制單元200中的屬性組存儲單元210存儲這樣屬性組并且將它們提供給場景確定單元230。
[0244]場景確定單元230基于存儲在屬性組存儲單元210中的屬性組中的每個來確定稍后描述的傳送場景(下面也被簡單稱為“場景”),并且進(jìn)一步基于所確定的場景來控制運(yùn)算單元140的運(yùn)算處理和在運(yùn)算處理中涉及的數(shù)據(jù)的傳送。注意:在上述控制期間,場景確定單元230重復(fù)地發(fā)射指令集到運(yùn)算單元140。指令集包括讀傳送指令R、運(yùn)算執(zhí)行指令S和寫傳送指令W。進(jìn)一步,指令集的一次發(fā)射意指以該次序發(fā)射讀傳送指令R、運(yùn)算執(zhí)行指令S和寫傳送指令W。
[0245]在運(yùn)算單元140中,響應(yīng)于來自運(yùn)算控制單元200的讀傳送指令R來執(zhí)行讀傳送。
[0246]接下來,響應(yīng)于來自運(yùn)算控制單元200的運(yùn)算執(zhí)行指令S,由運(yùn)算單元140的PE162針對已經(jīng)通過響應(yīng)于讀傳送指令R執(zhí)行的讀傳送而已經(jīng)存儲在專用存儲器164/局部存儲器170中的數(shù)據(jù)執(zhí)行運(yùn)算處理。作為處理結(jié)果的每個數(shù)據(jù)被存儲到每個PE 162的對應(yīng)專用存儲器164/局部存儲器170中。
[0247]然后,響應(yīng)于來自運(yùn)算控制單元200的寫傳送指令W,存儲在專用存儲器164/局部存儲器170中的數(shù)據(jù)(處理結(jié)果)被通過寫傳送而傳送到全局存儲器152。
[0248]下面描述場景確定單元230的場景確定處理。
[0249]場景確定單元230基于存儲在屬性組存儲單元210中的屬性組和指示運(yùn)算單元140的配置的參數(shù)來確定場景。場景對應(yīng)于傳送方法。
[0250]下面描述場景確定單元230的操作。在下面的描述中,圖2中所示的示例被用于運(yùn)算處理和數(shù)據(jù)塊。注意:假設(shè)對于圖2中所示的每個數(shù)據(jù)塊,屬性組被設(shè)置如圖9中所示,并且存儲在屬性組存儲單元210中。進(jìn)一步,指示運(yùn)算單元140的配置的參數(shù)的示例在圖10中示出。
[0251]在屬性的上面的描述中,假設(shè)一個項(xiàng)目對應(yīng)于一個PE以便于理解。在下面的描述中,假設(shè)一個PE可以對應(yīng)于一個或多個項(xiàng)目。
[0252]場景確定單元230根據(jù)下面所述的規(guī)則執(zhí)行對傳送方法的確定以及根據(jù)所確定傳送方法來執(zhí)行對運(yùn)算處理的控制。
[0253]< 規(guī)則 1>
[0254]場景確定單元230首先針對全部的數(shù)據(jù)塊設(shè)置公共工作組大小WG并且進(jìn)一步確定數(shù)據(jù)塊的分段大小和重復(fù)數(shù)目,使得具有相同層級屬性的多個數(shù)據(jù)塊被分段為具有公共分段數(shù)目的子塊。
[0255]“分段大小”指示子塊的大小,并且“分段數(shù)目”指示通過分段一個數(shù)據(jù)塊所獲得的子塊的數(shù)目。當(dāng)分段數(shù)目為I時,這意指數(shù)據(jù)塊沒有被分段。進(jìn)一步,“重復(fù)數(shù)目”指示傳送數(shù)據(jù)塊的全部的子塊所需的傳送的數(shù)目。
[0256]數(shù)據(jù)塊大小、分段大小、分段數(shù)目、工作組大小WG、重復(fù)數(shù)目等具有由下面的公式
(2)到(5)所表示的關(guān)系。
[0257](2)數(shù)據(jù)塊大小=X方向大小LxXY方向大小Ly
[0258](3)分段大小=子塊的X方向大小SBsxXY方向大小SBsy
[0259](4)分段數(shù)目=數(shù)據(jù)塊大小+ (分段大小X工作組大小WG)
[0260](5)重復(fù)數(shù)目=分段數(shù)目X (X方向大小Lx+工作組大小WG)/WG的數(shù)目
[0261]場景確定單元230確定工作組大小WG和分段大小(確切地說,子塊的Y方向大小SBsy),使得對于廣播屬性為“關(guān)閉”的數(shù)據(jù)塊中的讀屬性不為“無”的數(shù)據(jù)塊(讀取塊)或?qū)憣傩?