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

運算控制裝置、運算控制方法、存儲有程序的非瞬時計算機可讀介質(zhì)以及OpenCL設備的制造方法

文檔序號:8502160閱讀:344來源:國知局
運算控制裝置、運算控制方法、存儲有程序的非瞬時計算機可讀介質(zhì)以及OpenCL設備的制造方法
【專利說明】運算控制裝置、運算控制方法、存儲有程序的非瞬時計算機可讀介質(zhì)以及OpenCL設備
[0001]相關申請的交叉引用
[0002]本申請基于并且要求于2014年2月10日提交的日本專利申請N0.2014-23044的優(yōu)先權(quán)利益,其公開內(nèi)容通過引用整體被包含在此。
技術(shù)領域
[0003]本發(fā)明涉及一種并行處理器,更具體涉及一種OpenCL設備的運算控制技術(shù)。
【背景技術(shù)】
[0004]近來,由于防止處理器過熱的需求,通過增加執(zhí)行并行處理的處理器核(下文簡稱為“核”)的數(shù)量而不是增加處理器的工作頻率來改進性能的趨勢已經(jīng)變得很顯著。具有多個核的處理器被稱為多核處理器,具有大量核的多核處理器尤其被稱為眾核處理器(many-core processor) ο在此說明書中,多核處理器和眾核處理器并不特別彼此區(qū)分,包括執(zhí)行并行處理的多個核的處理器通常被稱為“并行處理器”。
[0005]并行處理器用在各種領域作為加速器。但是,因為各種類型的加速器是各種制造商制造的且處于各種領域并且開發(fā)了用于加速器的進一步的各種語言和框架,在加速器之間共享程序代碼較為困難。
[0006]為了解決這一問題,OpenCL(開放計算語言)被定義為用于并行處理器的標準框架(非專利文獻 1:The OpenCL Specicat1n, Ver: 1.0, Document Revis1n:43, KhronosOpenCL Working Group (2009))。在下面描述了 OpenCL 的概述。
[0007]圖17是在上述非專利文獻I的圖3.1中添加附圖標記的圖,其示出了典型OpenCL系統(tǒng)的平臺模型。
[0008]如圖17中所示,OpenCL系統(tǒng)10包括主機12和一個或多個計算設備(下文中被稱為“OpenCL設備” )14。OpenCL設備14對應于上述的加速器。
[0009]每個OpenCL設備14包括一個或多個計算單元(下文中被縮寫為“⑶”)16,并且每個⑶16包括一個或多個處理元件(下文中被縮寫為“PE”)18。注意:處理元件PE 18對應于上述的核。
[0010]OpenCL應用由在主機12上運行的程序代碼和在作為加速器的OpenCL設備14上運行的程序代碼組成。在主機12上運行的程序代碼被稱為“主機代碼”,并且在OpenCL設備14上運行的程序代碼被稱為“內(nèi)核”。
[0011]主機12調(diào)用API (應用程序接口)并且指示運算處理。OpenCL設備14執(zhí)行所指示的運算處理。主機12生成用于管理資源的環(huán)境并進一步生成命令隊列用于通過OpenCL調(diào)停設備操作。“設備操作”包括執(zhí)行運算處理、操作存儲器、獲取同步等。
[0012]在OpenCL中,內(nèi)核在N(1彡N彡3)維索引空間中執(zhí)行作為工作項目(其被簡稱為“項目”)。例如,如果(4, 6)被規(guī)定為二維索引空間,總共24(4X6)項目被執(zhí)行。
[0013]為了執(zhí)行一個項目,使用一個PE。相應地,在并行執(zhí)行的項目的數(shù)目和現(xiàn)有PE的數(shù)目相同的情況下,內(nèi)核在四行乘六列的總共24個PE上執(zhí)行。
[0014]注意:在現(xiàn)有PE的數(shù)目小于并行執(zhí)行的項目的數(shù)目的情況下,項目的并行執(zhí)行在現(xiàn)有PE上重復。例如,在規(guī)定上述(4,6)索引空間的情況下,當只有兩行乘三列的總共六個PE時,六個項目的并行執(zhí)行需要由六個PE重復四次。
[0015]進一步,在OpenCL中,引入工作組的概念。工作組是在相同⑶16上執(zhí)行并且彼此相關的項目的組。相同工作組中的各個項目執(zhí)行相同的內(nèi)核并且共享下文將描述的CU16的局部存儲器。
[0016]唯一組ID被賦予每個工作組,工作組中唯一的局部ID被賦予每個工作組中的項目。進一步,唯一全局ID也被賦予項目。項目可以被全局ID或組ID與局部ID的組合來標識。
[0017]OpenCL設備14執(zhí)行運算處理的方法是以下面的順序步驟通過調(diào)用API來實現(xiàn)的。
[0018]<步驟1>:從主機12向OpenCL設備14傳送用于運算處理的參考數(shù)據(jù)。
[0019]<步驟2>:由“內(nèi)核開始命令”開始在OpenCL設備14上執(zhí)行內(nèi)核。
[0020]<步驟3>:在完成在OpenCL設備14上執(zhí)行內(nèi)核之后,從OpenCL設備14的存儲器空間向主機12傳送運算處理的結(jié)果數(shù)據(jù)。
[0021]結(jié)合圖18來描述包括存儲器空間的OpenCL設備14的配置。圖18是在非專利文獻I的圖3.3中加入?yún)⒖挤系膱D。如較早前所述,OpenCL設備14包括一個或多個⑶16且每個⑶16包括一個或多個PE 18。
[0022]在上述步驟2中執(zhí)行內(nèi)核時,可以在OpenCL設備14中進行對四個不同存儲器的訪問。這四個存儲器是:專用存儲器20、局部存儲器22、全局存儲器32和常數(shù)存儲器34。首先,結(jié)合圖19,基于項目和工作組來描述這四個存儲器。注意:圖19是非專利文獻I中的表3.10
[0023]專用存儲器20對應于一個項目且僅用于該項目的執(zhí)行。為專用存儲器20定義的對應于一個項目的變量不能用于另一個項目。
[0024]局部存儲器22對應于一個組且可以由組中的項目共享。這樣,使用局部存儲器22的例子是分配由組中項目共享的變量給局部存儲器22。
[0025]全局存儲器32和常數(shù)存儲器34可以由全部的組中的全部的項目存取。注意:盡管全局存儲器32可以被項目存取用于讀和寫,常數(shù)存儲器34僅可以被項目存取用于讀。下文中,全局存儲器32和常數(shù)存儲器34被統(tǒng)稱為設備存儲器30。
[0026]根據(jù)項目和PE 18之間的——對應,上述四個存儲器和⑶16和PE 18之間的對應關系如下。
[0027]專用存儲器20與PE 18 一一對應并且僅能夠由對應PE 18存取。
[0028]局部存儲器22與⑶16——對應并且能夠由對應⑶16中的全部的PE 18存取。
[0029]設備存儲器30能夠由全部的⑶16中的全部的PE 18,即OpenCL設備14中的全部的PE,來存取。
[0030]進一步,取決于OpenCL設備14,存在這樣一種情況:進一步提供功能為設備存儲器30的高速緩存存儲器的高速緩存24。
[0031]如上所述,不同層級中的多個存儲器包括在OpenCL設備14中。這些存儲器能夠由PE以更高速度存取,因為它們處于更高級別。層級級別以設備存儲器30 (最低)、局部存儲器22 (中等)和專用存儲器20 (最高)的次序提高,來自PE的存取速度在此次序中變得更尚。
[0032]為了完全帶來OpenCL設備14的性能,有必要設計一種機制來在設備存儲器30和專用存儲器20/局部存儲器22之間移動數(shù)據(jù),諸如參考在例如移動到高速存儲器空間之后頻繁使用的數(shù)據(jù)。
[0033]在控制方法與OpenCL設備不同的串行處理器的情況下,也執(zhí)行全局存儲器空間與專用存儲器空間之間的數(shù)據(jù)的移動。這結(jié)合圖20中所示的串行處理器的示例來描述。
[0034]圖20中所示的串行處理器50包括作為處理元件的PE 52、專用存儲器54、全局存儲器56和高速緩存控制機制58。
[0035]如其中所示,串行處理器50的存儲設備被分為專用存儲器54和全局存儲器56。專用存儲器54是低容量存儲器,其物理上為片上,而全局存儲器56是高容量存儲器,其物理上為片外。
[0036]盡管在串行處理器50中,存儲設備被分為專用存儲器54和全局存儲器56,由位于專用存儲器54和全局存儲器56之間的高速緩存控制機制58來自動地進行專用存儲器54和全局存儲器56之間的數(shù)據(jù)移動,串行處理器50的用戶將其視為一個大存儲器空間。換句話說,串行處理器50的用戶容易開發(fā)用戶程序用于PE 52來執(zhí)行運算處理而不考慮數(shù)據(jù)怎樣在全局存儲器56和專用存儲器54之間移動。
[0037]在并行處理器中,特別是如圖18中所示包括大量核(PE)作為OpenCL設備14的并行處理器中,存在與核的數(shù)目具有相同數(shù)目的專用存儲器20,進一步存在與CU 16的數(shù)目具有相同數(shù)目的局部存儲器22。由于高硬件成本,由一個高速緩存控制機制一起管理全部的這些存儲器通常是不可行的。
[0038]另一方面,沒有高速緩存控制機制,多個存儲器空間被OpenCL系統(tǒng)10的用戶(下文簡稱為“用戶”)所看見。如較早前所述,為了通過諸如參考在移動到高速存儲器空間(是更高層級存儲器空間)之后頻繁使用的數(shù)據(jù)的方案帶來更好的性能,有必要由用戶程序明確指示運算處理所涉及的不同層級中的存儲器之間的數(shù)據(jù)的移動。為了正確獲取它,用戶需要知道上述存儲器之間在速度、容量、功能等上的差別。結(jié)合圖21來描述具體示例。
[0039]圖21是圖示說明執(zhí)行運算處理以從多個數(shù)據(jù)塊(數(shù)據(jù)塊A到D)獲得數(shù)據(jù)塊A’和B’的例子的圖。注意:在圖21中,省略了從主機到設備的內(nèi)核傳送的圖示。進一步,數(shù)據(jù)塊A到D是上述步驟I中從主機12傳送到OpenCL設備14的參考數(shù)據(jù)并且存儲在全局存儲器32中。數(shù)據(jù)塊A’和B’是上述步驟2中針對數(shù)據(jù)塊A到D執(zhí)行運算處理的結(jié)果并且寫入到全局存儲器32并且隨后在步驟3中傳送到主機12。
[0040]下面描述步驟2的處理,即執(zhí)行內(nèi)核的運算處理。注意:在本說明書中,在可以存在多個專用存儲器的情況下,它們被稱為“專用存儲器組”。
[0041]如果不追求運算處理的性能,可以利用在運算處理中僅使用全局存儲器32而不使用專用存儲器組/局部存儲器22的技術(shù)。在此情況下,在全局存儲器32和專用存儲器組/局部存儲器22之間沒有數(shù)據(jù)傳送。
[0042]該技術(shù)控制簡單但性能不好。為了獲得更好的運算處理性能,如上所述,利用在將要處理的數(shù)據(jù)從全局存儲器32傳送到專用存儲器組/局部存儲器22之后執(zhí)行運算處理、然后將運算處理的結(jié)果存儲到專用存儲器組/局部存儲器22之后再傳送到全局存儲器32的技術(shù)。
[0043]對于使用該技術(shù)的情況,首先描述當全部的項目可以同時并行執(zhí)行時的流程(步驟A到C)。注意:“全部的項目可以同時并行執(zhí)行”意指PE的數(shù)目等于或多于項目的總數(shù)目,且專用存儲器組和局部存儲器的容量能夠存儲全部的要處理的數(shù)據(jù),而且,在這種情況下,要處理的數(shù)據(jù)從全局存儲器32到專用存儲器組/局部存儲器22的傳送、每個PE 18的運算處理的并行執(zhí)行、處理結(jié)果從專用存儲器組/局部存儲器22到全局存儲器32的傳送僅執(zhí)行一次。
[0044]〈步驟A>:將存儲在全局存儲器32中的數(shù)據(jù)塊A到D傳送到專用存儲器組/局部存儲器22。
[0045]例如,該傳送是將要處理的數(shù)據(jù)中僅由PE 18使用的數(shù)據(jù)傳送到PE 18的專用存儲器并且將多個PE 18共享的數(shù)據(jù)傳送到局部存儲器22。
[0046]注意:從全局存儲器32到專用存儲器組/局部存儲器22的數(shù)據(jù)傳送下面被稱為“讀傳送”。進一步,讀傳送的數(shù)據(jù)塊,諸如數(shù)據(jù)塊A到D,被稱為“讀取塊RB”。
[0047]〈步驟B〉:對每個PE18執(zhí)行運算處理并且將運算處理的結(jié)果存儲到可由PE 18存取的專用存儲器/局部存儲器22中。
[0048]<步驟C〉:將步驟B中由運算處理獲得且存儲在專用存儲器組/局部存儲器22中的數(shù)據(jù)塊A’和B’傳送到全局存儲器32。
[0049]注意:從專用存儲器組/局部存儲器22到全局存儲器32的數(shù)據(jù)傳送下面被稱為“寫傳送”。進一步,存儲在專用存儲器組/局部存儲器22中的且被寫傳送的數(shù)據(jù)塊,諸如數(shù)據(jù)塊A’和B’被稱為“寫入塊WB”。
[0050]全部的這三個步驟需要在由用戶創(chuàng)建的內(nèi)核中明確規(guī)定。這個規(guī)定包括運算處理的內(nèi)容和取決于OpenCL設備14的配置的內(nèi)容(PE數(shù)目(=專用存儲器數(shù)目)、每個專用存儲器的容量、局部存儲器的容量等等)。
[0051]例如,在存在多個要被處理的讀取塊RB且由于全部的項目不能存儲在一個工作組中的專用存儲器組/局部存儲器22中,每個讀取塊RB需要被分段為子塊的情況下,有必要在步驟A中為多個讀取塊RB規(guī)定子塊之間的關聯(lián)方法。讀取塊RB的子塊之間的“關聯(lián)方法”意指多個讀取塊RB的子塊中的讀取塊RB的哪些子塊要被傳送到相同工作組中的專用存儲器組或者相同工作組中的局部存儲器22。這取決于運算處理的內(nèi)容,將它們進行分段的方式取決于OpenCL設備14的配置。
[0052]類似地,在存在多個寫入塊WB作為運算處理結(jié)果的情況下,也有必要規(guī)定關聯(lián)方法,意指在讀取塊RB的子塊的什么組合之下獲得多個寫入塊WB的各個子塊作為處理結(jié)果。注意:寫入塊WB中每個子塊的內(nèi)容是作為處理結(jié)果存儲在每個工作組的專用存儲器組或局部存儲器22中的數(shù)據(jù)。寫入塊WB到全局存儲器32的傳送意指將數(shù)據(jù)寫入全局存儲器32中的寫入塊WB的每個子塊位置。就像讀取塊RB的關聯(lián)方法,寫入塊WB的關聯(lián)方法也取決于運算處理的內(nèi)容和OpenCL設備14的配置。
[0053]除了如上所述的全部的所需數(shù)據(jù)塊不能存儲在工作組中的存儲器中的情況,在PE總數(shù)目小于索引空間大小的情況下,例如,全部的項目不能同時并行執(zhí)行且因此PE對項目的并行執(zhí)行需要重復多次。結(jié)果,因為并行執(zhí)行被重復,讀傳送和寫傳送也需要被重復。在此情況下,有必要根據(jù)運算處理的內(nèi)容和OpenCL設備14的配置來規(guī)定數(shù)據(jù)塊的分段方法以及通過劃分數(shù)據(jù)而獲得的子塊的關聯(lián)方法。
[0054]數(shù)據(jù)塊的“分段方法”意指怎樣將數(shù)據(jù)塊分段為子塊?!白訅KSB”是讀傳送和寫傳送的單位。此后,當有必要區(qū)分讀和寫時,通過分段讀取塊RB而獲得的子塊被稱為“子讀取塊SRB”,而通過分段寫入塊WB而獲得的子塊被稱為“子寫入塊SWB”。
[0055]子塊SB之間的“關聯(lián)方法”意指包括在不同讀取塊或?qū)懭雺K中的哪些子塊SB是同時駐
當前第1頁1 2 3 4 5 6 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
汾阳市| 个旧市| 密山市| 辰溪县| 富平县| 安丘市| 潼南县| 乌兰察布市| 三亚市| 鸡泽县| 获嘉县| 温州市| 宕昌县| 玛沁县| 山东省| 泸西县| 东平县| 宣武区| 广州市| 佛教| 尚义县| 临邑县| 竹溪县| 景泰县| 崇明县| 江油市| 新龙县| 六枝特区| 涿州市| 上高县| 新津县| 开化县| 安康市| 金沙县| 洞口县| 法库县| 阳原县| 蒙阴县| 娄底市| 高平市| 乳源|