两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

用于圖形處理單元的工作負荷批量提交機制的制作方法

文檔序號:10579030閱讀:218來源:國知局
用于圖形處理單元的工作負荷批量提交機制的制作方法
【專利摘要】用于向圖形處理單元提交可編程工作負荷的技術(shù)包括計算裝置,用于準備可編程工作負荷向圖形處理單元的批量提交。批量提交在單個直接存儲器存取分組中包括用于可編程工作負荷的每個的獨立分發(fā)命令。批量提交可包括分發(fā)命令中間的同步命令。
【專利說明】用于圖形處理單元的工作負荷批量提交機制
【背景技術(shù)】
[0001] 在計算裝置中,圖形處理單元(GPU)常常通過提供電子電路(其能夠快速執(zhí)行數(shù)學 運算)來補充中央處理單元(CPU)。為了這樣做,GPU利用廣泛并行性和許多并發(fā)線程來克服 存儲器請求和計算的等待時間。GPU的能力使其對加速高性能圖形處理和并行計算任務(wù)是 有用的。例如,GPU能夠加速媒體或3D應(yīng)用的表面中的二維(2D)或三維(3D)圖像的處理。
[0002] 能夠?qū)iT為GPU編寫計算機程序。GPU應(yīng)用的示例包括視頻編碼/解碼、三維游戲和 其他通用計算應(yīng)用。到GPU的編程接口由下列兩部分組成:一個是高級編程語言,其允許開 發(fā)人員編寫在GPU上運行的程序,以及包括對應(yīng)的編譯器軟件,其編譯和生成用于GPU程序 的GHJ特定指令(例如二進制代碼KGPU特定指令的集合(其組成由GPU來執(zhí)行的程序)可稱 作可編程工作負荷或"內(nèi)核"。主編程接口的其它部分是主運行時間庫,其在CHJ側(cè)上運行, 并且提供API的集合以允許用戶對GPU啟動GPU程序供執(zhí)行。兩個組件作為GPU編程框架一起 工作。這類框架的示例包括例如開放計算語言(OpenCL)、Microsoft的DirectX以及NVIDIA 的CUDA。取決于應(yīng)用,可要求多個GPU工作負荷來完成單個GPU任務(wù),例如圖像處理。CPU運行 時間通過組成GPU命令緩沖區(qū)(command buffer)并且通過直接存儲器存取(DMA)機制將它 傳遞給GPU,向GPU逐個提交每一個工作負荷。GPU命令緩沖區(qū)可稱作"DMA分組"或"DMA緩沖 區(qū)"。每次GPU完成其對DMA分組的處理時,GPU向CPU發(fā)出中斷。CPU通過中斷服務(wù)例程(ISR) 來操控中斷,并且調(diào)度對應(yīng)的延遲過程調(diào)用(DPC)。包括OpenCL的現(xiàn)有運行時間將各工作負 荷作為獨立DMA分組提交給GPU。因此,利用現(xiàn)有技術(shù),ISR和DPC至少與每一個工作負荷關(guān) 聯(lián)。
【附圖說明】
[0003] 在附圖中通過舉例而不是通過限制來說明本文所述的概念。為了說明的簡潔和清 晰起見,圖中所示的元件不必須按比例繪制。在認為適當?shù)那闆r下,在附圖之間已經(jīng)重復(fù)附 圖標記,以指示對應(yīng)的或類似的元件。
[0004] 圖1是包括如本文所公開的工作負荷批量提交機制的計算裝置的至少一個實施例 的簡化框圖; 圖2是圖1的計算裝置的環(huán)境的至少一個實施例的簡化框圖; 圖3是可由圖1的計算裝置來執(zhí)行的,用于采用GPU來處理批量提交的方法的至少一個 實施例的簡化流程圖;以及 圖4是可由圖1的計算裝置來執(zhí)行的,用于創(chuàng)建多個工作負荷的批量提交的方法的至少 一個實施例的簡化流程圖。
【具體實施方式】
[0005] 雖然本公開的概念容許各種修改和備選形式,但是其具體實施例通過舉例在附圖 中示出,并且本文中將詳細描述。然而,應(yīng)當理解,不存在將本公開的概念限制到所公開的 具體形式的意圖,但是相反,意圖是涵蓋與本公開和所附權(quán)利要求書一致的所有修改、等效 物和備選方案。
[0006] 說明書中提到"一個實施例"、"實施例"、"說明性實施例"等指示所描述的實施例 可包括特定特征、結(jié)構(gòu)或特性,但是每一個實施例可以或者可以不必須都包括該特定特征、 結(jié)構(gòu)或特性。此外,這類詞語不必須指相同的實施例。此外,在結(jié)合實施例來描述的特定特 征、結(jié)構(gòu)或特性時,建議的是,無論是否明確描述,結(jié)合其他實施例來實現(xiàn)這種特征、結(jié)構(gòu)或 特性是在本領(lǐng)域的技術(shù)人員的知識范圍之內(nèi)的。另外,應(yīng)當意識到,采取"至少一個A、B和C" 的形式的列表中包含的項能夠表示(A)、(B)、(C)、(A和B)、(B和C)、(A和C)或者(A、B和C)。類 似地,采取"A、B或C中的至少一個"的形式所列示的項能夠表示以)、0)、(〇、(4和幻、(8和 〇、以和〇或者以3和〇。
[0007] 在一些情況下,所公開的實施例可在硬件、固件、軟件或者它們的任何組合中實 現(xiàn)。所公開的實施例還可實現(xiàn)為由暫時或者非暫時機器可讀(例如計算機可讀)存儲介質(zhì)所 攜帶或者其上所存儲的指令,其可由一個或多個處理器來讀取和執(zhí)行。機器可讀存儲介質(zhì) 可體現(xiàn)為用于存儲或傳送采取由機器可讀形式的信息的任何存儲裝置、機制或其他物理結(jié) 構(gòu)(例如易失性和非易失性存儲器、媒體盤或者其它媒體裝置)。
[0008] 在附圖中,一些結(jié)構(gòu)或方法特征可按照特定布置和/或排序來示出。然而,應(yīng)當意 識到,這類特定布置和/或排序可以不作要求。在一些實施例中,這類特征而是可按照與說 明性附圖所示不同的方式和/或順序來布置。另外,特定附圖中包含結(jié)構(gòu)或方法特征不是意 在暗示在所有實施例中要求這種特征,并且在一些實施例中可以不包含這種特征或者可與 其他特征相結(jié)合。
[0009] 現(xiàn)在參照圖1,在一個實施例中,計算裝置100包括中央處理單元(CPU)120和圖形 處理單元160XPU 120能夠使用批量提交機制150向GPU 160提交多個工作負荷。在一些實 施例中,批量提交機制150包括同步機制152。在操作中,如以下所述,計算裝置100將多個 GPU工作負荷組合為單個DMA分組,而沒有將工作負荷合并(例如由應(yīng)用開發(fā)人員手動組合) 為單個工作負荷。換言之,采用批量提交機制150,計算裝置100能夠創(chuàng)建單個DMA分組,其包 含多個獨立GPU工作負荷。其中,所公開的技術(shù)還能夠減少在例如視頻幀處理期間的GPU處 理時間量、CPU利用量和/或圖形中斷的數(shù)量。因此,由計算裝置100完成GPU任務(wù)所需的總時 間能夠減少。所公開的技術(shù)能夠改進幀處理時間,并且降低感知計算應(yīng)用中的功率消耗等 等。感知計算應(yīng)用涉及通過平板計算機、智能電話和/或其他計算裝置的手和手指姿勢的識 另IJ、語音識別、臉部識別和跟蹤、增強現(xiàn)實和/或其他人類手勢交互。
[0010]計算裝置100可體現(xiàn)為用于執(zhí)行本文所描述功能的任何類型的裝置。例如,計算裝 置100可體現(xiàn)為而不是限制,智能電話、平板計算機、可佩戴計算裝置、膝上型計算機、筆記 本計算機、移動計算裝置、蜂窩電話、手持裝置、消息傳遞裝置、車輛遠程信息處理裝置、月艮 務(wù)器計算機、工作站、分布式計算系統(tǒng)、多處理器系統(tǒng)、消費電子裝置和/或配置成執(zhí)行本文 所描述功能的任何其他計算裝置。如圖1中所示的,說明性計算裝置100包括CPU 120、輸入/ 輸出子系統(tǒng)122、直接存儲器存取(DMA)子系統(tǒng)124、CPU存儲器126、數(shù)據(jù)存儲裝置128、顯示 器130、通信電路134和用戶界面子系統(tǒng)136。計算裝置100還包括GPU 160和GPU存儲器164。 當然,在其他實施例中,計算裝置100可包括其他或附加組件,例如移動和/或固定計算機中 常見的那些組件(例如各種傳感器和輸入/輸出裝置)。另外,在一些實施例中,說明性組件 的一個或多個可結(jié)合在另一個組件中或者以其他方式形成另一個組件的一部分。例如,在 一些實施例中,CPU存儲器126或者其部分可結(jié)合在CPU 120中,和/或GPU存儲器164可結(jié)合 在 GPU 160 中。
[0011] CPU 120可體現(xiàn)為能夠執(zhí)行本文所述功能的任何類型的處理器。例如,CPU 120可 體現(xiàn)為(一個或多個)單或多核處理器、數(shù)字信號處理器、微控制器或者其他處理器或處理/ 控制電路。GPU 160體現(xiàn)為能夠執(zhí)行本文所描述功能的任何類型的圖形處理單元。例如,GPU 160可體現(xiàn)為(一個或多個)單或多核處理器、數(shù)字信號處理器、微控制器、浮點加速器、協(xié)處 理器或者設(shè)計成快速操縱和改變存儲器中的數(shù)據(jù)的其他處理器或處理/控制電路。GPU 160 包括多個執(zhí)行單元162。執(zhí)行單元162可體現(xiàn)為并行處理器或處理器核心的陣列,其能夠執(zhí) 行多個并行線程。在計算裝置100的各個實施例中,GHJ 160可體現(xiàn)為外圍裝置(例如在分立 圖形卡上),或者可位于CPU母板上或者CPU管芯上。
[0012] CPU存儲器126和GPU存儲器164各可體現(xiàn)為能夠執(zhí)行本文所描述功能的任何類型 的易失性或非易失性存儲器或數(shù)據(jù)存儲裝置。在操作中,存儲器126、164可存儲計算裝置 100的操作期間所使用的各種數(shù)據(jù)和軟件,例如操作系統(tǒng)、應(yīng)用、程序、庫和驅(qū)動程序。例如, CPU存儲器126的部分至少暫時存儲命令緩沖區(qū)和DMA分組(如本文所公開的,其由CPU 120 來創(chuàng)建),以及GHJ存儲器164的部分至少暫時存儲DMA分組(其由CPU 120通過直接存儲器存 取子系統(tǒng)124傳遞給GPU存儲器164)。
[0013] CHJ存儲器126例如經(jīng)由I/O子系統(tǒng)122在通信上耦合到CPU 120,以及GPU存儲器 164類似地在通信上耦合到GPU 160。1/0子系統(tǒng)122可體現(xiàn)為促進與CPU 120、CHJ存儲器 126、GPU 160(和/或執(zhí)行單元162)、GPU存儲器164以及計算裝置100的其他組件的輸入/輸 出操作的電路和/或組件。例如,I/O子系統(tǒng)122可體現(xiàn)為或者以其他方式包括存儲器控制器 集線器、輸入/輸出控制集線器、固件裝置、通信鏈路(即,點對點鏈路、總線鏈路、導(dǎo)線、電 纜、光導(dǎo)、印刷電路板跡線等)和/或促進輸入/輸出操作的其他組件和子系統(tǒng)。在一些實施 例中,I/O子系統(tǒng)122可形成片上系統(tǒng)(SoC)的一部分,并且連同CPU 120、CPU存儲器126、GPU 160、GPU存儲器164和/或計算裝置100的其他組件一起結(jié)合在單個集成電路芯片上。
[0014] 說明性I/O子系統(tǒng)122包括直接存儲器存取(DMA)子系統(tǒng)124,其促進CPU存儲器126 與GHJ存儲器164之間的數(shù)據(jù)傳遞。在一些實施例中,I/O子系統(tǒng)122(例如DMA子系統(tǒng)124)允 許GPU 160直接訪問CPU存儲器126,并且允許CPU 120直接訪問GPU存儲器164。DMA子系統(tǒng) 124可體現(xiàn)為DMA控制器或DMA"引擎",例如外設(shè)組件互連(PCI)裝置、外設(shè)組件互連-Express(PCI-Express)裝置、I/O加速技術(shù)(Ι/0ΑΤ)裝置和/或其它。
[0015] 數(shù)據(jù)存儲裝置128可體現(xiàn)為配置用于數(shù)據(jù)的短期或長期存儲的任何類型的一個或 多個裝置,例如存儲器裝置和電路、存儲器卡、硬盤驅(qū)動器、固態(tài)驅(qū)動器或者其他數(shù)據(jù)存儲 裝置。數(shù)據(jù)存儲裝置128可包括系統(tǒng)分區(qū),其存儲計算裝置100的數(shù)據(jù)和固件代碼。數(shù)據(jù)存儲 裝置128還可包括操作系統(tǒng)分區(qū),其存儲計算裝置100的操作系統(tǒng)140的數(shù)據(jù)文件以及可執(zhí) 行文件。
[0016] 顯示器130可體現(xiàn)為能夠顯示數(shù)字信息的任何類型的顯示器,例如液晶顯示器 (LCD)、發(fā)光二極管(LED)、等離子體顯示器、陰極射線管(CRT)或另其它類型的顯示器裝置。 在一些實施例中,顯示器130可耦合到觸摸屏或其它用戶輸入裝置,以便允許與計算裝置 100的用戶交互。顯示器130可以是用戶界面子系統(tǒng)136的一部分。用戶界面子系統(tǒng)136可包 括促進與計算裝置100的用戶交互的多個附加裝置,包括物理或虛擬控制按鈕或按鍵、麥克 風、揚聲器、單向或雙向攝影(still)和/或攝像機和/或其它。用戶界面子系統(tǒng)136還可包括 諸如運動傳感器、接近傳感器和眼球跟蹤裝置的裝置,其可配置成檢測、捕獲和處理涉及計 算裝置100的各種其他形式的人類交互。
[0017] 計算裝置100還包括通信電路134,其可體現(xiàn)為能夠?qū)崿F(xiàn)計算裝置100與其他電子 裝置之間的通信的任何通信電路、裝置或者其集合。通信電路134可配置成使用任一個或多 個通信技術(shù)(例如無線或有線通信)及關(guān)聯(lián)協(xié)議(例如以太網(wǎng)、Bluetooth ?、Wi-Fi ?、 Wimax、3G/LTE等)來實現(xiàn)這種通信。通信電路134可體現(xiàn)為網(wǎng)絡(luò)適配器,包括無線網(wǎng)絡(luò)適配 器。
[0018] 說明性計算裝置100還包括多個計算機程序組件,例如裝置驅(qū)動程序132、操作系 統(tǒng)140、用戶空間驅(qū)動程序142以及圖形子系統(tǒng)144。其中,操作系統(tǒng)140促進用戶空間應(yīng)用 (例如GPU應(yīng)用210(圖2))與計算裝置100的硬件組件之間的通信。操作系統(tǒng)140可體現(xiàn)為能 夠執(zhí)行本文所描述功能的任何操作系統(tǒng),例如Microsoft Corporation的WINDOWS的版本、 Google,Inc.的ANDROID和/或其它。如本文所使用的,其中"用戶空間"還可表示計算裝置 100的操作環(huán)境(其中最終用戶可與計算裝置100進行交互),而其中"系統(tǒng)空間"還可表示計 算裝置100的操作環(huán)境(其中編程代碼能夠與計算裝置100的硬件組件直接交互)。例如,用 戶空間應(yīng)用可與最終用戶并且與其自己的所分配存儲器直接交互,但是不與沒有分配給用 戶空間應(yīng)用的硬件組件或存儲器直接交互。另一方面,系統(tǒng)空間應(yīng)用可與硬件組件、其自己 的所分配存儲器和分配給當前運行用戶空間應(yīng)用的存儲器直接交互,但是可以不與最終用 戶直接交互。因此,計算裝置100的系統(tǒng)空間組件可具有比計算裝置100的用戶空間組件更 大的特權(quán)。
[0019] 在說明性實施例中,用戶空間驅(qū)動程序142和裝置驅(qū)動程序132作為"驅(qū)動程序?qū)? 進行協(xié)作,并且操控用戶空間應(yīng)用(例如GHJ應(yīng)用210(圖2))與硬件組件(例如顯示器130)之 間的通信。在一些實施例中,用戶空間驅(qū)動程序142可以是"通用"驅(qū)動程序,其例如能夠向 各種不同硬件組件(例如不同類型的顯示器)傳遞獨立于裝置的圖形渲染任務(wù),而裝置驅(qū)動 程序132將獨立于裝置任務(wù)轉(zhuǎn)化為特定硬件組件能夠執(zhí)行以實現(xiàn)所請求任務(wù)的命令。在其 他實施例中,用戶空間驅(qū)動程序142和裝置驅(qū)動程序132的部分可組合為單個驅(qū)動程序組 件。在一些實施例中,用戶空間驅(qū)動程序142和/或裝置驅(qū)動程序132的部分可包含在操作系 統(tǒng)140中。驅(qū)動程序132、142說明性地是顯示驅(qū)動程序;然而,所公開批量提交機制150的方 面可適用于其他應(yīng)用,例如可卸載(off load)到GPU 160(例如,在GPU 160配置為通用GPU或 GPGPU的情況下)的任何種類的任務(wù)。
[0020] 圖形子系統(tǒng)144促進用戶空間驅(qū)動程序142、裝置驅(qū)動程序132和一個或多個用戶 空間應(yīng)用(例如GPU應(yīng)用210)之間的通信。圖形子系統(tǒng)144可體現(xiàn)為能夠執(zhí)行本文所描述功 能的任何類型的計算機程序子系統(tǒng),例如應(yīng)用編程接口(API)或者API套件、API和運行時間 庫的組合和/或其他計算機程序組件。圖形子系統(tǒng)的示例包括Intel Corporation的媒體開 發(fā)框架(MDF)運行時間庫、OpenCL運行時間庫以及Microsoft Corporation的DirectX圖形 內(nèi)核子系統(tǒng)和Windows顯示驅(qū)動程序模型。
[0021] 說明性圖形子系統(tǒng)144包括多個計算機程序組件,例如GPU調(diào)度器146、中斷處理程 序148和批量提交子系統(tǒng)150 調(diào)度器146與裝置驅(qū)動程序132進行通信,以控制向GPU 160提交工作隊列212(圖2)中的DMA分組。工作隊列212可體現(xiàn)為例如任何類型的先進先出 數(shù)據(jù)結(jié)構(gòu)或者能夠至少暫時存儲與GPU任務(wù)相關(guān)的數(shù)據(jù)的其它類型的數(shù)據(jù)結(jié)構(gòu)。在說明性 實施例中,GPU 160在每次GPU 160完成處理DMA分組時生成中斷,并且這類中斷由中斷處理 程序148來接收。由于中斷能夠由GPU 160因其他原因(像差錯和例外)而發(fā)出,所以在一些 實施例中,GPU調(diào)度器146在調(diào)度工作隊列212中的下一個任務(wù)之前等待直到圖形子系統(tǒng)144 已經(jīng)從裝置驅(qū)動程序132接收到任務(wù)完成的確認。下面更詳細描述批量提交機制150和可選 同步機制152。
[0022]現(xiàn)在參照圖2,在一些實施例中,計算裝置100在操作期間建立環(huán)境200。說明性環(huán) 境200包括如上所述的用戶空間和系統(tǒng)空間。環(huán)境200的各種模塊可體現(xiàn)為硬件、固件、軟件 或者其組合。另外,在一些實施例中,環(huán)境200的模塊的部分或全部可與其他模塊或軟件/固 件結(jié)構(gòu)集成或者形成其部分。在用戶空間中,圖形子系統(tǒng)144從一個或多個用戶空間GPU應(yīng) 用210接收GPU任務(wù)。GPU應(yīng)用210可包括例如視頻播放器、游戲、消息傳遞應(yīng)用、web瀏覽器和 社交媒體應(yīng)用。GPU任務(wù)可包括幀處理,其中例如計算裝置100的幀緩沖區(qū)中存儲的視頻圖 像的單獨幀由GPU 160來處理,以用于由計算裝置100(例如由顯示器130)顯示。如本文所使 用的,其中術(shù)語"幀"可表示單個靜止二維或三維數(shù)字圖像,并且可以是數(shù)字視頻(其包括多 個幀)的一個幀。對于每個GPU任務(wù),圖形子系統(tǒng)144創(chuàng)建將要由GPU 160所執(zhí)行的一個或多 個工作負荷。為了向GPU 160提交工作負荷,用戶空間驅(qū)動程序142使用批量提交機制150來 創(chuàng)建命令緩沖區(qū)。由用戶空間驅(qū)動程序142采用批量提交機制150所創(chuàng)建的命令緩沖區(qū)包含 高級程序代碼,其表示建立工作模式(其中分發(fā)多個單獨工作負荷以供GPU 160在單個DMA 分組中處理)所需的GHJ命令。在系統(tǒng)空間中,與圖形子系統(tǒng)144進行通信的裝置驅(qū)動程序 132將命令緩沖區(qū)轉(zhuǎn)換為DMA分組,其包含能夠由GPU 160來執(zhí)行以執(zhí)行批量提交的GPU特定 命令。
[0023]批量提交機制150包括程序代碼,其實現(xiàn)如本文所公開的命令緩沖區(qū)的創(chuàng)建??赏?過批量提交機制150的程序代碼來實現(xiàn)以創(chuàng)建命令緩沖區(qū)的方法400的示例在圖4中示出, 下面進行描述。同步機制152使由批量提交機制150所建立的工作模式能夠包括同步。也就 是說,利用同步機制152,批量提交機制150允許工作模式從多個可選工作模式(例如具有或 沒有同步)中選取。說明性批量提交機制150實現(xiàn)兩個工作模式選項:一個具有同步而一個 沒有同步。在一個工作負荷產(chǎn)生由另一個工作負荷所消耗的輸出的狀況中可需要同步。在 工作負荷之間不存在相關(guān)性的情況下,可使用沒有同步的工作模式。在非同步工作模式中, 批量提交機制150創(chuàng)建命令緩沖區(qū),以便并行地(在同一命令緩沖區(qū)中)向GPU獨立分發(fā)工作 負荷的每個,使得工作負荷的全部可在執(zhí)行單元162上同時執(zhí)行。為了這樣做,批量提交機 制150將一個分發(fā)命令插入各工作負荷的命令緩沖區(qū)中??捎膳刻峤粰C制150為沒有同步 的多個工作負荷創(chuàng)建的命令緩沖區(qū)的偽代碼的示例在以下代碼示例1中示出。
[0024] 代碼不例i,漢令冋步的多個丄忭貝何的偭々、紱押兇。
[0025] 在代碼示例1中,建立命令可包括準備GPU 160所需的以便在執(zhí)行單元162上執(zhí)行 工作負荷的信息的GPU命令。這類命令可包括例如高速緩存配置命令、表面狀態(tài)建立命令、 媒體狀態(tài)建立命令、管道控制命令和/或其它。媒體對象行人(walker)命令使GPU 160對識 別為命令中的參數(shù)的工作負荷分發(fā)在執(zhí)行單元162上運行的多個線程。管道控制命令確保 全部先前命令在GPU完成命令緩沖區(qū)的執(zhí)行之前完成執(zhí)行。因此,GPU 160在命令緩沖區(qū)中 包含的全部單獨分發(fā)的工作負荷的處理完成時僅生成一個中斷(ISR)?;剡^來,CPU 120僅 生成一個延遲過程調(diào)用(DPC)。這樣,一個命令緩沖區(qū)中包含的多個工作負荷僅生成一個 I SR和一個DPC。
[0026] 為了比較的目的,可通過現(xiàn)有技術(shù)(例如OpenCL的當前版本)為沒有同步的多個工 作負荷創(chuàng)建的命 今中反的偽代碼1的示徹丨亦W?下代碼1示例2中示I+L
[0027] 代碼示例2,用于多個工作負荷的命令緩沖區(qū),手動合并技術(shù)。
[0028](現(xiàn)有技術(shù)) 在代碼示例2中,建立命令可與以上所述的那些相似。然而,以及多個工作負荷由開發(fā) 人員(例如GHJ程序員)手動組合為單個工作負荷,其然后通過單個媒體對象行人命令來分 發(fā)給GPU 160。雖然單個DMA分組從代碼示例2來創(chuàng)建,產(chǎn)生一個IPC和DPC,但是合并的工作 負荷比單獨進行的獨立工作負荷要大許多。這種大工作負荷能夠使GPU 160的硬件資源(例 如GPU指令高速緩存和/或寄存器)緊張。如上所提到的,對工作負荷的手動合并的已知備選 方案是為各工作負荷創(chuàng)建獨立DMA分組;然而,獨立DMA分組引起比如本文所公開的包含多 個工作負荷的單個DM分組多得多的IPC和DPC。
[0029]在工作負荷同步工作模式中,批量提交機制150創(chuàng)建命令緩沖區(qū),以便在同一命令 緩沖區(qū)中向GPU 160獨立分發(fā)每個工作負荷,并且同步機制152在工作負荷分發(fā)命令之間插 入同步命令,以確保滿足工作負荷相關(guān)性條件。為了這樣做,批量提交機制150將一個分發(fā) 命令插入各工作負荷的命令緩沖區(qū)中,以及同步機制152根據(jù)需要在各分發(fā)命令之后插入 適當?shù)墓艿揽刂泼???捎膳刻峤粰C制150(包括同步機制152)為具有同步的多個工作負 荷創(chuàng)建的命令緩沖區(qū)的偽代碼的示例在以下代碼示例3中示出。
[0030] 代碼示例3,具有同步的多個工作負荷的命令緩沖區(qū)。
[0031] 在代碼示例3中,建立命令和媒體對象行人命令與以上參照代碼示例1所述的那些 相似。管道控制(sync)命令包括對管道控制命令識別具有相關(guān)性條件的工作負荷的參數(shù)。 例如,管道控制(sync 2,1)命令確保媒體對象行人(工作負荷1)命令在GPU 160開始媒體對 象行人(工作負荷2)命令的執(zhí)行之前完成執(zhí)行。類似地,管道控制(sync 3.2)命令確保媒體 對象行人(工作負荷2)命令在GPU 160開始媒體對象行人(工作負荷3)命令的執(zhí)行之前完成 執(zhí)行。
[0032] 現(xiàn)在參照圖3,示出用于處理GPU任務(wù)的方法300的示例。方法300的部分可由計算 裝置100,例如由CPU 120和GPU 160來執(zhí)行。說明性地,框310、312、314在用戶空間中(例如 由批量提交機制150和/或用戶空間驅(qū)動程序142)執(zhí)行;框316、318、324、326在系統(tǒng)空間中 (例如由圖形調(diào)度器146、中斷處理程序148和/或裝置驅(qū)動程序132)執(zhí)行;以及框320、322由 GPU 160(例如由執(zhí)行單元162)執(zhí)行。在框310,計算裝置100(例如CPU 120)創(chuàng)建多個GPU工 作負荷。工作負荷可由例如圖形子系統(tǒng)144響應(yīng)于由用戶空間GPU應(yīng)用210所請求的GPU任務(wù) 而創(chuàng)建。如上所提到的,單個GPU任務(wù)(例如幀處理)可要求多個工作負荷。在框312,計算裝 置100(例如CPU 120)通過例如上述批量提交機制150來創(chuàng)建GPU任務(wù)的命令緩沖區(qū)。為了這 樣做,計算裝置100為各工作負荷創(chuàng)建獨立分發(fā)命令,以便包含在命令緩沖區(qū)中。在一些實 施例中,命令緩沖區(qū)中的分發(fā)命令和其他命令體現(xiàn)為人類可讀程序代碼。在框314,計算裝 置1〇〇(例如CPU 120,通過用戶空間驅(qū)動程序142)向圖形子系統(tǒng)144提交命令緩沖區(qū),以用 于由GPU 160執(zhí)行。
[0033]在框316,計算裝置100(例如CPU 120)從命令緩沖區(qū)準備包括批量的工作負荷的 DMA分組。為了這樣做,說明性裝置驅(qū)動程序132驗證命令緩沖區(qū),并且按照裝置特定格式來 寫入DMA分組。在其中命令緩沖區(qū)體現(xiàn)為人類可讀程序代碼的實施例中,計算裝置100將命 令緩沖區(qū)中的人類可讀命令轉(zhuǎn)換成機器可讀指令,其能夠由GPU 160來執(zhí)行。因此,DMA分組 包含機器可讀指令,其可對應(yīng)于命令緩沖區(qū)中包含的人類可讀命令。在框318,計算裝置100 (例如CPU 120)向GPU 160提交DMA分組用于執(zhí)行。為了這樣做,計算裝置(例如CPU 120,通 過與裝置驅(qū)動程序132協(xié)調(diào)的GPU調(diào)度器146)向DMA分組中的資源指配存儲器地址,向DMA分 組指配唯一標識符(例如緩沖區(qū)柵欄(fence ) ID ),并且將DMA分組對GPU 160 (例如對執(zhí)行單 元162)排隊。
[0034] 在框320,計算裝置100(例如GPU 160)處理具有批量的工作負荷的DMA分組。例如, GPU 160可使用多個線程在不同執(zhí)行單元162上處理各工作負荷。當GPU 160完成處理DMA分 組(服從可包含在DMA分組中的任何同步命令)時,GHJ 160在框322生成中斷。中斷由CPU 120(通過例如中斷處理程序148)來接收。在框324,計算裝置100(例如CPU 120)確定由GPU 160對DMA分組的處理是否完成。為了這樣做,裝置驅(qū)動程序132評估中斷信息,包括剛完成 的DMA分組的標識符(例如緩沖區(qū)柵欄ID)。如果裝置驅(qū)動程序132推斷由GPU 160對DMA分組 的處理已經(jīng)完成,則裝置驅(qū)動程序132通知圖形子系統(tǒng)144(例如GPU調(diào)度器146)DMA分組處 理完成,并且將延遲過程調(diào)用(DPC)排隊。在框326,計算裝置100(例如CPU 120)通知GPU調(diào) 度器146 DPC已經(jīng)完成。為了這樣做,DPC可調(diào)用由GPU調(diào)度器146所提供的回調(diào)功能。響應(yīng)于 DPC完成的通知,計算裝置(例如CPU 120,通過GPU調(diào)度器146)調(diào)度工作隊列212中的下一個 GPU任務(wù),用于由GPU 160處理。
[0035] 現(xiàn)在參照圖4,示出用于創(chuàng)建具有批量的工作負荷的命令緩沖區(qū)的方法400的示 例。方法400的部分可由計算裝置100,例如由CPU 120來執(zhí)行。在框410,計算裝置100通過創(chuàng) 建命令緩沖區(qū)開始GPU任務(wù)的處理(例如響應(yīng)于來自用戶空間軟件應(yīng)用的請求)。所公開方 法和裝置的方面可使用例如LoadProgram、CreateKerneI、CreateTask、AddKernel和 AddSync媒體開發(fā)框架(MDF)運行時間API和/或其它實現(xiàn)。例如,利用媒體開發(fā)框架(MDF)運 行時間API,pCmDev->LoadProgram(pCISA,uCISASize,pCmProgram)命令可用來將程序從永 久存儲文件加載到存儲器,以及enqueueO API可用來創(chuàng)建命令緩沖區(qū),并且向工作隊列 212提交命令緩沖區(qū)。在框312,計算裝置100確定執(zhí)行所請求GPU任務(wù)所需的工作負荷的數(shù) 量。為了這樣做,計算裝置100可定義(例如經(jīng)由編程代碼)給定任務(wù)的工作負荷的最大數(shù) 量。工作負荷的最大數(shù)量能夠例如基于CPU 120和/或GPU 160中的所分配資源(例如圖形存 儲器中分配的全局狀態(tài)堆或者命令緩沖區(qū)大?。﹣泶_定。所需的工作負荷的數(shù)量可取決于 例如所請求GHJ任務(wù)的性質(zhì)和/或發(fā)布應(yīng)用的類型而改變。例如,在感知計算應(yīng)用中,單獨幀 可要求多個工作負荷(例如在一些情況下,33個工作負荷)來處理幀。在框414,計算裝置100 建立各工作負荷的自變量(argument)和線程空間。為了這樣做,計算裝置100對各工作負荷 執(zhí)行"創(chuàng)建工作負荷"命令。例如,利用媒體開發(fā)框架運行時間API,可使用pCmDev-〉 CreateKernel (pCmProgram,pCmKernelN)。在框416,計算裝置100創(chuàng)建命令緩沖區(qū),并且將 第一工作負荷添加到命令緩沖區(qū)。例如,利用媒體開發(fā)框架運行時間API ,CreateTask (pCmTask)命令可用來創(chuàng)建命令緩沖區(qū),以及AddKernel (KernelN)命令可用來將工作負荷 添加到命令緩沖區(qū)。
[0036]在框420,計算裝置100確定是否要求工作負荷同步。為了這樣做,計算裝置100確 定第一工作負荷的輸出是否用作任何其他工作負荷的輸入(例如通過檢查創(chuàng)建工作負荷命 令的自變量或參數(shù))。如果需要同步,則計算裝置在創(chuàng)建工作負荷命令之后將同步命令插入 命令緩沖區(qū)。例如,利用媒體開發(fā)框架運行時間API,可使用pCmTask->AddSync() API。在框 424,計算裝置100確定是否存在要添加到命令緩沖區(qū)的另一個工作負荷。如果存在要添加 到命令緩沖區(qū)的另一個工作負荷,則計算裝置100返回到框418,并且將工作負荷添加到命 令緩沖區(qū)。如果不再存在要添加到命令緩沖區(qū)的工作負荷,則計算裝置100創(chuàng)建DMA分組,并 且向工作隊列212提交DMA分組。如果GPU 160當前可用來處理DMA分組,則GPU調(diào)度器146在 框426將向GPU 160提交DMA分組。在框428,計算裝置100(例如CPU 120)等待來自GPU 160的 GPU 160已經(jīng)完成執(zhí)行DMA分組的通知,并且方法400結(jié)束。接著框428,計算裝置100可如上 所述發(fā)起另一個命令緩沖區(qū)的創(chuàng)建。
[0037] 下表1示出在將所公開批量提交機制應(yīng)用于具有同步的感知計算應(yīng)用之后得到的 實驗結(jié)果。
[0038] 如表1中所示的,在感知計算應(yīng)用中,在應(yīng)用本文所公開的批量提交機制以處理一 個DMA分組中的多個同步GPU工作負荷之后實現(xiàn)了性能增益。這些結(jié)果表明,當使用所公開 的批量提交機制時,GPU 160由CPU 120更好地利用,這應(yīng)當導(dǎo)致系統(tǒng)功率消耗的降低。其 中,這些結(jié)果還可歸因于減少數(shù)量的IPC和DPC調(diào)用以及需要被調(diào)度的較少數(shù)量的DM分組。 [00 39] 示例 下面提供本文所公開技術(shù)的說明性示例。技術(shù)的實施例可包括以下所描述示例的任一 個或多個或者它們的任何組合。
[0040] 示例1包括:計算裝置,用于執(zhí)行可編程工作負荷,該計算裝置包括創(chuàng)建直接存儲 器存取分組的中央處理單元,直接存儲器存取分組包括用于可編程工作負荷的每個的獨立 分發(fā)指令;圖形處理單元,執(zhí)行可編程工作負荷,可編程工作負荷的每個包括圖形處理單元 指令的集合;其中直接存儲器存取分組中的獨立分發(fā)指令的每個要發(fā)起由圖形處理單元對 可編程工作負荷其中之一的處理;以及直接存儲器存取子系統(tǒng),將直接存儲器存取分組從 又中央處理單元可訪問的存儲器傳遞給由圖形處理單元可訪問的存儲器。
[0041] 示例2包括示例1的主題,其中中央處理單元要創(chuàng)建包括人類可讀計算機代碼中體 現(xiàn)的分發(fā)命令的命令緩沖區(qū),以及直接存儲器存取分組中的分發(fā)指令對應(yīng)于命令緩沖區(qū)中 的分發(fā)命令。
[0042 ] 示例3包括示例2的主題,其中中央處理單元執(zhí)行用戶空間驅(qū)動程序以創(chuàng)建命令緩 沖區(qū),以及中央處理單元執(zhí)行裝置驅(qū)動程序以創(chuàng)建直接存儲器存取分組。
[0043]示例4包括示例1-3的任一個的主題,其中中央處理單元要創(chuàng)建具有相關(guān)性關(guān)系的 可編程工作負荷的第一類型的直接存儲器存取分組以及不具有相關(guān)性關(guān)系的可編程工作 負荷的第二類型的直接存儲器存取分組,其中第一類型的直接存儲器存取分組與第二類型 的直接存儲器存取分組是不同的。
[0044] 示例5包括示例4的主題,其中第一類型的直接存儲器存取分組包括分發(fā)指令的兩 個之間的同步指令,以及第二類型的直接存儲器存取分組沒有包括分發(fā)指令之間的任何同 步指令。
[0045] 示例6包括示例1-3的任一個的主題,其中直接存儲器存取分組中的分發(fā)指令的每 個要發(fā)起通過圖形處理單元的執(zhí)行單元對可編程工作負荷其中之一的處理。
[0046] 示例7包括示例1-3的任一個的主題,其中直接存儲器存取分組包括同步指令,以 確保通過圖形處理單元對可編程工作負荷其中之一的執(zhí)行在圖形處理單元開始可編程工 作負荷的另一個的執(zhí)行之前完成。
[0047] 示例8包括示例1-3的任一個的主題,其中可編程工作負荷的每個包括執(zhí)行通過用 戶空間應(yīng)用所請求的圖形處理單元任務(wù)的指令。
[0048] 示例9包括示例8的主題,其中用戶空間應(yīng)用包括感知計算應(yīng)用。
[0049] 示例10包括示例8的主題,其中圖形處理單元任務(wù)包括數(shù)字視頻的幀的處理。
[0050] 示例11包括用于向圖形處理單元提交可編程工作負荷的計算裝置,可編程工作負 荷的每個包括圖形處理單元指令的集合,計算裝置包括:圖形子系統(tǒng),促進用戶空間應(yīng)用與 圖形處理單元之間的通信;以及批量提交機制,創(chuàng)建包括用于可編程工作負荷的每個的獨 立分發(fā)命令的單個命令緩沖區(qū),其中直接存儲器存取分組中的獨立命令的每個要獨立發(fā)起 通過圖形處理單元對可編程工作負荷其中之一的處理。
[0051] 示例12包括示例11的主題,并且包括創(chuàng)建直接存儲器存取分組的裝置驅(qū)動程序, 直接存儲器存取分組包括與命令緩沖區(qū)中的分發(fā)命令對應(yīng)的圖形處理單元指令。
[0052] 示例13包括示例11或示例12的主題,其中分發(fā)命令要使圖形處理單元并行地執(zhí)行 全部可編程工作負荷。
[0053] 示例14包括示例11或示例12的主題,并且包括將同步命令插入命令緩沖區(qū)中以使 圖形處理單元在開始另一個可編程工作負荷的執(zhí)行之前完成可編程工作負荷的執(zhí)行的同 步機制。
[0054] 示例15包括示例14的主題,其中同步機制體現(xiàn)為批量提交機制的組件。
[0055] 示例16包括示例11-13的任一個的主題,其中批量提交機制體現(xiàn)為圖形子系統(tǒng)的 組件。
[0056] 示例17包括示例16的主題,其中圖形子系統(tǒng)體現(xiàn)為下列中的一個或多個:應(yīng)用編 程接口、多個應(yīng)用編程接口和運行時間庫。
[0057] 示例18包括用于向圖形處理單元提交可編程工作負荷的方法,該方法包括采用計 算裝置來執(zhí)行下列操作:創(chuàng)建命令緩沖區(qū);將多個分發(fā)命令添加到命令緩沖區(qū),分發(fā)命令的 每個發(fā)起通過計算裝置的圖形處理單元對可編程工作負荷其中之一的執(zhí)行;以及創(chuàng)建包括 與命令緩沖區(qū)中的分發(fā)命令對應(yīng)的圖形處理單元指令的直接存儲器存取分組。
[0058] 示例19包括示例18的主題,并且包括將直接存儲器存取分組傳遞給由圖形處理單 元可訪問的存儲器。
[0059] 示例20包括示例18的主題,并且包括在命令緩沖區(qū)中的分發(fā)命令的兩個之間插入 同步命令,其中同步命令要確保圖形處理單元在圖形處理單元開始處理可編程工作負荷的 另一個之前完成可編程工作負荷其中之一的處理。
[0060] 示例21包括示例18的主題,并且包括公式化分發(fā)命令的每個,以創(chuàng)建可編程工作 負荷其中之一的自變量的集合。
[0061] 示例22包括示例18的主題,并且包括公式化分發(fā)命令的每個,以創(chuàng)建可編程工作 負荷其中之一的線程空間。
[0062]示例23包括示例18-23的任一個的主題,并且包括由計算裝置的直接存儲器存取 子系統(tǒng)將直接存儲器存取分組從由中央處理單元可訪問的存儲器傳遞給由圖形處理單元 可訪問的存儲器。
[0063] 示例24包括計算裝置,其包括中央處理單元、圖形處理單元以及存儲器(具有多個 指令存儲在其中),指令在由中央處理單元執(zhí)行時使計算裝置執(zhí)行示例18-23的任一個的方 法。
[0064]示例25包括一個或多個機器可讀存儲媒體(包括多個指令存儲在其上),指令響應(yīng) 被執(zhí)行而使計算裝置執(zhí)行示例18-23的任一個的方法。
[0065]示例26包括計算裝置,其包括用于執(zhí)行示例18-23的任一個的方法的部件。
[0066]示例27包括用于執(zhí)行可編程工作負荷的方法,該方法包括采用計算裝置來執(zhí)行下 列操作:由計算裝置的中央處理單元來創(chuàng)建直接存儲器存取分組,直接存儲器存取分組包 括用于可編程工作負荷的每個的獨立分發(fā)指令;由計算裝置的圖形處理單元來執(zhí)行可編程 工作負荷,可編程工作負荷的每個包括圖形處理單元指令的集合;其中直接存儲器存取分 組中的獨立分發(fā)指令的每個要發(fā)起由圖形處理單元對可編程工作負荷其中之一的處理;以 及由計算裝置的直接存儲器存取子系統(tǒng)將直接存儲器存取分組從由中央處理單元可訪問 的存儲器傳遞給由圖形處理單元可訪問的存儲器。
[0067] 示例28包括示例27的主題,并且包括由中央處理單元來創(chuàng)建包括人類可讀計算機 代碼中體現(xiàn)的分發(fā)命令的命令緩沖區(qū),其中直接存儲器存取分組中的分發(fā)指令對應(yīng)于命令 緩沖區(qū)中的分發(fā)命令。
[0068] 示例29包括示例28的主題,并且包括由中央處理單元來執(zhí)行用戶空間驅(qū)動程序以 創(chuàng)建命令緩沖區(qū),其中中央處理單元執(zhí)行裝置驅(qū)動程序以創(chuàng)建直接存儲器存取分組。
[0069] 示例30包括示例27-29的任一個的主題,并且包括由中央處理單元來創(chuàng)建具有相 關(guān)性關(guān)系的可編程工作負荷的第一類型的直接存儲器存取分組以及創(chuàng)建不具有相關(guān)性關(guān) 系的可編程工作負荷的第二類型的直接存儲器存取分組,其中第一類型的直接存儲器存取 分組與第二類型的直接存儲器存取分組是不同的。
[0070] 示例31包括示例30的主題,其中第一類型的直接存儲器存取分組包括分發(fā)指令的 兩個之間的同步指令,以及第二類型的直接存儲器存取分組沒有包括分發(fā)指令之間的任何 同步指令。
[0071] 示例32包括示例27-29的任一個的主題,并且包括由直接存儲器存取分組中的分 發(fā)指令的每個來發(fā)起圖形處理單元的執(zhí)行單元對可編程工作負荷其中之一的處理。
[0072] 示例33包括示例27-29的任一個的主題,并且包括由直接存儲器存取分組中的同 步指令來確保由圖形處理單元對可編程工作負荷其中之一的執(zhí)行在圖形處理單元開始可 編程工作負荷的另一個的執(zhí)行之前完成。
[0073] 示例34包括示例27-29的任一個的主題,并且包括由可編程工作負荷的每個來執(zhí) 行由用戶空間應(yīng)用所請求的圖形處理單元任務(wù)。
[0074] 示例35包括示例34的主題,其中用戶空間應(yīng)用包括感知計算應(yīng)用。
[0075] 示例36包括示例34的主題,其中圖形處理單元任務(wù)包括數(shù)字視頻的幀的處理。 [0076]示例37包括計算裝置,其包括中央處理單元、圖形處理單元、直接存儲器存取子系 統(tǒng)以及存儲器(具有多個指令存儲在其上),指令在由中央處理單元執(zhí)行時使計算裝置執(zhí)行 示例27-36的任一個的方法。
[0077]示例38包括一個或多個機器可讀存儲介質(zhì)(包括多個指令存儲在其上),指令響應(yīng) 于被執(zhí)行而使計算裝置執(zhí)行示例27-36的任一個的方法。
[0078]示例39包括計算裝置,其包括用于執(zhí)行示例27-36的任一個的方法的部件。
[0079]示例40包括用于向計算裝置的圖形處理單元提交可編程工作負荷的方法,可編程 工作負荷的每個包括圖形處理單元指令的集合,該方法包括:由計算裝置的圖形子系統(tǒng)來 促進用戶空間應(yīng)用與圖形處理單元之間的通信;以及由計算裝置的批量提交機制來創(chuàng)建包 括用于可編程工作負荷的每個的獨立分發(fā)命令的單個命令緩沖區(qū),其中直接存儲器存取分 組中的獨立命令的每個要獨立發(fā)起由圖形處理單元對可編程工作負荷其中之一的處理。 [0080] 示例41包括示例40的主題,并且包括由計算裝置的裝置驅(qū)動程序來創(chuàng)建直接存儲 器存取分組,其中直接存儲器存取分組包括與命令緩沖區(qū)中的分發(fā)命令對應(yīng)的圖形處理單 元指令。
[0081] 示例42包括示例40或示例41的主題,并且包括由分發(fā)命令來使圖形處理單元并行 地執(zhí)行全部可編程工作負荷。
[0082I 示例43包括示例40或示例41的主題,并且包括由計算裝置的同步機制將同步命令 插入命令緩沖區(qū)中以使圖形處理單元在圖形處理單元開始另一個可編程工作負荷的執(zhí)行 之前完成可編程工作負荷的執(zhí)行。
[0083]示例44包括示例43的主題,其中同步機制體現(xiàn)為批量提交機制的組件。
[0084]示例45包括示例40-44的任一個的主題,其中批量提交機制體現(xiàn)為圖形子系統(tǒng)的 組件。
[0085]示例46包括示例40-44的任一個的主題,其中圖形子系統(tǒng)體現(xiàn)為下列中的一個或 多個:應(yīng)用編程接口、多個應(yīng)用編程接口和運行時間庫。
[0086] 示例47包括計算裝置,其包括中央處理單元、圖形處理單元、直接存儲器存取子系 統(tǒng)以及存儲器(具有多個指令存儲于其上),指令在由中央處理單元執(zhí)行時使計算裝置執(zhí)行 示例40-46的任一個的方法。
[0087]示例48包括一個或多個機器可讀存儲介質(zhì)(其上存儲有多個指令),指令響應(yīng)于被 執(zhí)行而使計算裝置執(zhí)行示例40-46的任一個的方法。
[0088]示例49包括計算裝置,其包括用于執(zhí)行示例40-46的任一個的方法的部件。
【主權(quán)項】
1. 一種用于執(zhí)行可編程工作負荷的計算裝置,所述計算裝置包括: 中央處理單元,創(chuàng)建直接存儲器存取分組,所述直接存儲器存取分組包括用于所述可 編程工作負荷的每個的獨立分發(fā)指令; 圖形處理單元,執(zhí)行所述可編程工作負荷,所述可編程工作負荷的每個包括圖形處理 單元指令的集合;其中所述直接存儲器存取分組中的所述獨立分發(fā)指令的每個要發(fā)起由所 述圖形處理單元對所述可編程工作負荷其中之一的處理;以及 直接存儲器存取子系統(tǒng),將所述直接存儲器存取分組從由所述中央處理單元可訪問的 存儲器傳遞給由所述圖形處理單元可訪問的存儲器。2. 如權(quán)利要求1所述的計算裝置,其中,所述中央處理單元要創(chuàng)建包括人類可讀計算機 代碼中體現(xiàn)的分發(fā)命令的命令緩沖區(qū),以及所述直接存儲器存取分組中的所述分發(fā)指令對 應(yīng)于所述命令緩沖區(qū)中的所述分發(fā)命令。3. 如權(quán)利要求2所述的計算裝置,其中,所述中央處理單元執(zhí)行用戶空間驅(qū)動程序以創(chuàng) 建所述命令緩沖區(qū),以及所述中央處理單元執(zhí)行裝置驅(qū)動程序以創(chuàng)建所述直接存儲器存取 分組。4. 如權(quán)利要求1-3中的任一項所述的計算裝置,其中,所述中央處理單元要創(chuàng)建具有相 關(guān)性關(guān)系的可編程工作負荷的第一類型的直接存儲器存取分組以及不具有相關(guān)性關(guān)系的 可編程工作負荷的第二類型的直接存儲器存取分組,其中所述第一類型的直接存儲器存取 分組與所述第二類型的直接存儲器存取分組是不同的。5. 如權(quán)利要求4所述的計算裝置,其中,所述第一類型的直接存儲器存取分組包括所述 分發(fā)指令的兩個之間的同步指令,以及所述第二類型的直接存儲器存取分組沒有包括所述 分發(fā)指令之間的任何同步指令。6. 如權(quán)利要求1-3中的任一項所述的計算裝置,其中,所述直接存儲器存取分組中的所 述分發(fā)指令的每個要發(fā)起通過所述圖形處理單元的執(zhí)行單元對所述可編程工作負荷其中 之一的處理。7. 如權(quán)利要求1-3中的任一項所述的計算裝置,其中,所述直接存儲器存取分組包括同 步指令,以確保通過所述圖形處理單元對所述可編程工作負荷其中之一的執(zhí)行在所述圖形 處理單元開始所述可編程工作負荷的另一個的執(zhí)行之前完成。8. 如權(quán)利要求1-3中的任一項所述的計算裝置,其中,所述可編程工作負荷的每個包括 執(zhí)行由用戶空間應(yīng)用所請求的圖形處理單元任務(wù)的指令。9. 如權(quán)利要求8所述的計算裝置,其中,所述用戶空間應(yīng)用包括感知計算應(yīng)用。10. 如權(quán)利要求8所述的計算裝置,其中,所述圖形處理單元任務(wù)包括數(shù)字視頻的幀的 處理。11. 一種用于向圖形處理單元提交可編程工作負荷的計算裝置,所述可編程工作負荷 的每個包括圖形處理單元指令的集合,所述計算裝置包括: 圖形子系統(tǒng),促進用戶空間應(yīng)用與所述圖形處理單元之間的通信;以及 批量提交機制,創(chuàng)建包括用于所述可編程工作負荷的每個的獨立分發(fā)命令的單個命令 緩沖區(qū),其中所述直接存儲器存取分組中的所述獨立命令的每個要獨立發(fā)起由所述圖形處 理單元對所述可編程工作負荷其中之一的處理。12. 如權(quán)利要求11所述的計算裝置,包括創(chuàng)建直接存儲器存取分組的裝置驅(qū)動程序,所 述直接存儲器存取分組包括與所述命令緩沖區(qū)中的所述分發(fā)命令對應(yīng)的圖形處理單元指 令。13. 如權(quán)利要求11或權(quán)利要求12所述的計算裝置,其中,所述分發(fā)命令要使所述圖形處 理單元并行地執(zhí)行全部所述可編程工作負荷。14. 如權(quán)利要求11或權(quán)利要求12所述的計算裝置,包括將同步命令插入所述命令緩沖 區(qū)中以使所述圖形處理單元在開始另一個可編程工作負荷的所述執(zhí)行之前完成可編程工 作負荷的執(zhí)行的同步機制。15. 如權(quán)利要求14所述的計算裝置,其中,所述同步機制體現(xiàn)為所述批量提交機制的組 件。16. 如權(quán)利要求11-13中的任一項所述的計算裝置,其中,所述批量提交機制體現(xiàn)為所 述圖形子系統(tǒng)的組件。17. 如權(quán)利要求16所述的計算裝置,其中,所述圖形子系統(tǒng)體現(xiàn)為下列中的一個或多 個:應(yīng)用編程接口、多個應(yīng)用編程接口和運行時間庫。18. -種用于向圖形處理單元提交可編程工作負荷的方法,所述方法包括采用計算裝 置來執(zhí)行下列操作: 創(chuàng)建命令緩沖區(qū); 將多個分發(fā)命令添加到所述命令緩沖區(qū),所述分發(fā)命令的每個發(fā)起通過所述計算裝置 的圖形處理單元對所述可編程工作負荷其中之一的執(zhí)行;以及 創(chuàng)建包括與所述命令緩沖區(qū)中的所述分發(fā)命令對應(yīng)的圖形處理單元指令的直接存儲 器存取分組。19. 如權(quán)利要求18所述的方法,包括將所述直接存儲器存取分組傳遞給由所述圖形處 理單元可訪問的存儲器。20. 如權(quán)利要求18所述的方法,包括在所述命令緩沖區(qū)中的所述分發(fā)命令的兩個之間 插入同步命令,其中所述同步命令要確保所述圖形處理單元在所述圖形處理單元開始處理 所述可編程工作負荷的另一個之前完成所述可編程工作負荷其中之一的處理。21. 如權(quán)利要求18所述的方法,包括公式化所述分發(fā)命令的每個,以創(chuàng)建所述可編程工 作負荷其中之一的自變量的集合。22. 如權(quán)利要求18所述的方法,包括公式化所述分發(fā)命令的每個,以創(chuàng)建所述可編程工 作負荷其中之一的線程空間。23. 如權(quán)利要求18所述的方法,包括由所述計算裝置的直接存儲器存取子系統(tǒng)將所述 直接存儲器存取分組從由所述中央處理單元可訪問的存儲器傳遞給由所述圖形處理單元 可訪問的存儲器。24. -種包括所述中央處理單元、所述圖形處理單元以及具有多個指令存儲在其中的 存儲器的計算裝置,所述指令在由所述中央處理單元執(zhí)行時使所述計算裝置執(zhí)行如權(quán)利要 求18-23中的任一項所述的方法。25. -個或多個機器可讀存儲媒體,包括多個指令存儲在其上,所述指令響應(yīng)于被執(zhí)行 而使計算裝置執(zhí)行如權(quán)利要求18-23中的任一項所述的方法。
【文檔編號】G06F15/80GK105940388SQ201480073687
【公開日】2016年9月14日
【申請日】2014年2月20日
【發(fā)明人】L.沈, Y.楊, G-Y.呂
【申請人】英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
临颍县| 黎川县| 会泽县| 邵阳市| 托克托县| 谢通门县| 邳州市| 闻喜县| 九江县| 理塘县| 横山县| 新竹市| 伊川县| 汉阴县| 高密市| 会泽县| 会昌县| 林芝县| 威信县| 丹棱县| 从化市| 长寿区| 章丘市| 高密市| 疏勒县| 犍为县| 竹山县| 青州市| 嘉峪关市| 江北区| 盘山县| 洛川县| 玉山县| 昭觉县| 濮阳县| 天峻县| 婺源县| 资源县| 姚安县| 徐州市| 旌德县|