TW201426301A - 局部運用具單一圖形處理單元之系統除錯圖形程式之系統、方法及電腦程式產品 - Google Patents
局部運用具單一圖形處理單元之系統除錯圖形程式之系統、方法及電腦程式產品 Download PDFInfo
- Publication number
- TW201426301A TW201426301A TW102142093A TW102142093A TW201426301A TW 201426301 A TW201426301 A TW 201426301A TW 102142093 A TW102142093 A TW 102142093A TW 102142093 A TW102142093 A TW 102142093A TW 201426301 A TW201426301 A TW 201426301A
- Authority
- TW
- Taiwan
- Prior art keywords
- api
- gpu
- memory
- graphics
- execution
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
Abstract
本發明提供透過具單一圖形處理單元之系統除錯圖形程式之系統、方法及電腦程式產品。該方法包括下列步驟:將應用程式介面執行環境之初始狀態儲存於記憶體中;截取與圖框有關聯的API命令流;將API命令流傳輸至一實施API以著色圖框的軟體層;及為回應斷點,將一圖形處理單元環境儲存於記憶體中。該API環境之初始狀態對應於一圖框之起始,且API命令流由圖形應用程式產生。
Description
本發明有關軟體設計,尤其有關圖形程式之除錯。
現在的程式設計師已變得習慣於能透過在現今諸如Microsoft® Visual Studio的整合發展環境(IDE,Integrated Development Environment)中所實施的大量工具來建立及除錯程式。程式設計師可為即將由目標處理器執行的程式建立原始碼、編譯原始碼以產生可執行檔,並在目標處理器上運行可執行檔。IDE可允許程式設計師使用斷點執行程式、一次步進程式的一指令、步進程式的不同斷點,並在程式執行期間檢視不同點處的記憶體或暫存器之內容。
通常,目標處理器可為中央處理單元(CPU,Central Processing Unit),諸如Intel® x86系列處理器或包括精簡指令集計算(RISC,Reduced Instruction Set Computing)型CPU核心的ARM® Cortex系列處理器。此類處理器可實施具備中斷或搶先(pre-empt)由處理器所執行某些代碼執行的能力。此能力允許程式設計師能透過亦用於實質同時執行作業系統(OS,Operating system)、IDE或其他軟體的單一處理器除錯程式。然而,現今慣用圖形處理單元(GPUs,Graphics Processing Unit)可能無法以此方式操作。例如,慣用GPU可能不會為執行於GPU上的指定程序實現搶先。換言之,程式設計師無法在暫停GPU上的程式之執行的同時允許其他操作持續執行,諸如產生在附接螢幕上顯示用的圖形資訊。若沒有此類性能,則GPU的除錯平台通常限於遠端系統,其具有經由網路或具多個GPU(其中一GPU專屬於顯示操作而另一GPU專屬於除錯操作)的局部系統連接到用
戶端系統的GPU。建立及操作此類系統更加複雜,需要額外硬體和特殊配置。在大部分桌上型和膝上型電腦上,能在單一GPU系統上完成上述工作應有助於程式設計師。因此,本領域亟需設法解決此問題及/或有關先前技術的其他問題。
本發明提供透過具單一圖形處理單元之系統除錯圖形程式之系統、方法及電腦程式產品。該方法包括下列步驟:將應用程式介面(Application Programming Interface)執行環境(context)的初始狀態儲存於記憶體中;截取(intercepting)有關圖框的應用程式介面(API)命令流;傳輸API命令流至實施API以著色(render)圖框的軟體層;及儲存圖形處理單元執行環境於記憶體中,以回應斷點。API執行環境的初始狀態係對應於圖框的起始,且API命令流是由圖形應用程式產生。
100‧‧‧方法
200‧‧‧用戶端平台
201‧‧‧中央處理單元
203‧‧‧網路介面控制器
204‧‧‧記憶體
206‧‧‧圖形處理單元
208‧‧‧顯示裝置
230‧‧‧網路
250‧‧‧目標平台
251‧‧‧第二中央處理單元;中央處理單元
253‧‧‧第二網路介面控制器;網路介面控制器
254‧‧‧第二記憶體;記憶體
256‧‧‧第二圖形處理單元;圖形處理單元
300‧‧‧用戶端平台
301‧‧‧中央處理單元
303‧‧‧網路介面控制器
304‧‧‧記憶體
306‧‧‧圖形處理單元
308‧‧‧顯示裝置
331‧‧‧作業系統
332‧‧‧驅動程式
333‧‧‧整合發展環境
334‧‧‧圖形應用程式
335‧‧‧著色器程式
336‧‧‧映射狀態記憶體
400‧‧‧平行處理單元
402‧‧‧系統匯流排
404‧‧‧記憶體;記憶體裝置
405‧‧‧輸入/輸出單元
410‧‧‧主機介面單元
415‧‧‧任務管理單元
420‧‧‧工作分散單元
450‧‧‧串流多處理器
460‧‧‧交叉開關
465‧‧‧2階快取
480‧‧‧記憶體介面
505‧‧‧指令快取
510‧‧‧排程器單元
515‧‧‧指令分派單元;分派單元
520‧‧‧暫存器檔案
550‧‧‧處理核心;核心
551‧‧‧雙倍精確度單元
552‧‧‧特殊功能單元
553‧‧‧加載/儲存單元
570‧‧‧共用記憶體/1階快取
580‧‧‧互連網路
590‧‧‧紋理單元
600‧‧‧圖形處理指令管線
601‧‧‧輸入資料
602‧‧‧輸出資料
610‧‧‧資料組合階段
620‧‧‧頂點著色階段
630‧‧‧基元組合階段
640‧‧‧幾何著色階段
650‧‧‧視埠縮放、剔除及剪輯階段;視埠SCC階段
660‧‧‧格柵化階段
670‧‧‧片段著色階段
680‧‧‧格柵操作階段
700‧‧‧著色器程式
750‧‧‧系統
755‧‧‧應用程式介面截取模組
800‧‧‧方法
830‧‧‧狀態
900‧‧‧系統
901‧‧‧中央處理器
902‧‧‧通信匯流排
904‧‧‧主記憶體;記憶體
906‧‧‧圖形處理器
908‧‧‧顯示器
910‧‧‧輔助儲存器;儲存器
912‧‧‧輸入裝置
第一圖例示根據一具體實施例之運用具單一圖形處理單元之系統除錯圖形程式之方法的流程圖;第二圖例示根據先前技術之構成除錯圖形程式之系統;第三圖例示根據一具體實施例之構成除錯圖形程式之系統;第四圖例示根據一具體實施例之平行處理單元;第五圖例示根據一具體實施例之第四圖所示之串流多處理器;第六圖為根據一具體實施例之第四圖所示平行處理單元所實施圖形處理指令管線的概念圖;第七A圖例示根據一具體實施例之著色器程式之一部分編碼;第七B圖例示根據另一具體實施例之使用單一圖形處理單元除錯著色器程式之系統;第八A圖、第八B圖和第八C圖例示根據另一具體實施例之使用單一圖形處理單元除錯圖形程式之方法的流程圖;及第九圖例示可實施各種先前具體實施例之各種架構及/或功
能之示範性系統。
本發明所揭示內容說明在具單一GPU之系統上除錯圖形程式的機制。應用程式填充碼(Shim)構成截取由主機處理器執行的圖形應用程式所產生的API命令。圖形應用程式在編譯時構成產生API命令,該API命令為傳輸至實施API(諸如驅動程式或執行階段程式庫(Runtime Library))的軟體層。構成產生軟體層的API命令的指令可使用構成產生應用程式填充碼的API命令的指令來取代。該等指令可由軟體工具以二進制編碼自動取代,或者藉由將應用程式填充碼鏈結到圖形應用程式之原始碼而手動取代。執行圖形應用程式時,該等API命令為繞送到應用程式填充碼而非軟體層。
應用程式填充碼構成追蹤與圖形應用程式有關聯的API執行環境。API執行環境可藉由建立及修改代表現有API執行環境的狀態模型而追蹤。應用程式填充碼構成依據從圖形應用程式接收到的API命令更新狀態模型。更新狀態模型之後,應用程式填充碼可如圖形應用程式最初所設定將API命令轉送到軟體層,。
應用程式填充碼可構成實施重播機制,允許除錯工具實施普遍僅與慣用CPU有關聯的各種除錯技術。重播機制包括下列步驟:在著色顯示的影像資料之圖框之起始處儲存API環境的初始狀態;針對重播緩衝區中的影像資料之圖框儲存由圖形應用程式所產生的API命令流;及啟動重播迴圈以多次重複著色影像資料之圖框。每次重播迴圈皆包括回復API執行環境以符合API執行環境的初始狀態,並將重播緩衝區中的API命令流傳輸至軟體層。在重播迴圈期間遇到斷點時,GPU執行環境的目前狀態可在圖框之著色期間擷取到。使用前述的重播機制,除錯工具在具單一GPU的系統上允許程式設計師在程式中的斷點處停止、一次步進程式的一指令、一次步進程式的一斷點及依此類推,而無需凍結顯示。
第一圖例示根據一具體實施例之運用具單一GPU之系統除錯圖形程式之方法100的流程圖。在步驟102,API環境的初始狀態儲存於記憶體中。API環境的初始狀態可對應於包括於代表圖框之起始的API執
行環境的狀態模型中的資訊。API執行環境的初始狀態為了能在稍後時間點重置API執行環境之狀態而複製到記憶體中的分開資料結構中。在步驟104,截取由圖形應用程式所產生的API命令流。API命令流可儲存於重播緩衝區中。多個API執行環境可存在任何特定時間點,且每個API執行環境皆可與圖形應用程式所產生的一或多個API命令流有關聯。在一具體實施例中,有關API執行環境的兩或多個API命令流儲存於重播緩衝區中。在本發明所說明的內容中,重播緩衝區係配置於記憶體且構成儲存API命令之順序列表的任何資料結構。在一具體實施例中,重播緩衝區為一鏈結列表。在另一具體實施例中,重播緩衝區為一先進先出記憶體(FIFO)。
在步驟106,將API命令流傳輸至軟體層。在一具體實施例中,軟體層可為實施API的驅動程式,諸如實施開放式圖形庫(OpenGL)API的驅動程式。在另一具體實施例中,軟體層可為實施API的執行階段程式庫,諸如實施Direct3D API的執行階段程式庫。在此類具體實施例中,軟體層可鏈結到另一驅動程式或其他中間層。在步驟108,應用程式填充碼判定是否已到達斷點。在本發明所揭示的內容中,一斷點係為處理器所執行的特殊指令,其使執行暫停且可執行一錯誤處理程式或其他常式。一斷點可為一特殊指令或有關另一指令(諸如指令字首),其用來指示指令與程式中的斷點關聯性。在一具體實施例中,斷點(直接或間接經由錯誤處理程式)可使GPU將訊息傳輸至驅動程式,其指示已到達斷點且GPU已暫停進一步指令之執行。若尚未到達斷點,則方法800返回步驟106,將額外API命令傳輸至軟體層。然而,返回步驟108,為回應到達斷點,方法800進行到步驟110,將GPU執行環境的目前狀態儲存於記憶體中。在步驟112,啟動重播迴圈,導致回復API執行環境的初始狀態、傳輸API命令流重新至軟體層,且儲存GPU執行環境的另一狀態於記憶體中。
現將闡述關於依使用者所需可以或不可實施前述框架的各種任選架構和特徵的更多例示性資訊。應特別注意,以下資訊係為了例示性目的而闡述,故不應以任何方式來做為本發明的限制。以下特徵之任一者皆可選擇性併入,不論是否排除所說明的其他特徵。
第二圖例示根據先前技術之構成除錯圖形程式之系統。如第
二圖所示,系統包括一用戶端平台200,其透過網路230耦合於目標平台250。用戶端平台200可為例如桌上型電腦、膝上型電腦、平板電腦,或者構成運行IDE或其他除錯軟體的任何其他系統。用戶端平台200包括一中央處理單元(CPU,Central Processing Unit)201、一記憶體204、一圖形處理單元(GPU)206、一顯示裝置208及一網路介面控制器(NIC,Network interface controller)203。CPU 201可為x86型處理器、RISC處理器、PowerPC處理器。記憶體204可為揮發性記憶體,諸如動態隨機存取記憶體(DRAM,Dynamic Random Access Memory)。雖然未明確顯示,但用戶端平台200可包括一非揮發性儲存裝置,諸如硬碟機(HDD,Hard-Disk Drive)或其他類型之磁性或光學儲存系統。NIC 203可實施TCP/IP協定,經由可為例如區域網路(LAN,Local Area Network)、廣域網路(WAN,Wide Area Network)、網際網路或此類的網路230連接到一或多個其他裝置。顯示裝置208可為液晶顯示器(LCD,Liquid Crystal Display)裝置、有機發光二極體(OLED,Organic Light Emitting Diode)顯示裝置、陰極射線管(CRT,Cathode Ray Tube)顯示裝置。
GPU 206為一處理器,其實施包括影像處理指令管線之至少一部分的可程式設計的平行處理架構。影像處理指令管線構成產生在顯示裝置208上顯示的影像資料,其可透過任何類型之通信鏈結連接到GPU 206,諸如視訊圖形陣列(VGA,Video Graphics Array)連接、高畫質多媒體介面(HDMI,High-Definition Multimedia Interface)連接、顯示埠(DP,DisplayPort)連接。雖然未明確顯示,但GPU 206可連接到區域圖形記憶體,諸如同步動態隨機存取記憶體(SDRAM,Synchronous Dynamic Random Access Memory)。GPU 206可構成依據從CPU 201所執行的驅動程式傳輸至GPU 206的命令產生影像資料的圖框。影像資料的圖框可儲存於區域圖形記憶體的圖框緩衝區中,並轉換成視訊信號,透過通信鏈結傳輸至顯示裝置208。
目標平台250可為例如另一桌上型電腦,其連接網路230且包括一第二CPU 251、一第二GPU 256、一第二記憶體254及一第二NIC 253。CPU 251、記憶體254和NIC 253可類似於前述的CPU 201、記憶體
204及NIC 203。第二GPU 256可視為為一目標裝置。諸如IDE或其他類型之除錯工具的發展應用程式可由用戶端平台200執行。發展應用程式可使圖形程式(亦即著色器(shader))由GPU 256執行,經由在用戶端平台200上所執行的發展應用程式將此類除錯機制實施為斷點或是指令步進。目標平台250可不包括連接GPU 256的顯示裝置,因為在除錯期間,GPU 256可能暫停,藉此避免GPU 256產生顯示裝置的顯示信號。然而,程式設計師可能可檢視用戶端平台200之顯示裝置208上的GPU 256之狀態,因為GPU 256在除錯期間並未暫停,故因此能產生顯示裝置208的顯示信號。
用於除錯圖形程式之遠端系統對於某些情況可能足夠,諸如程式設計師正運用設置於總局(central office)並透過區域網路連接到一或多個目標平台250的用戶端平台200。然而,此系統需要額外硬體添加不必要的費用且複雜設置,需要程式設計師或網路管理器配置目標平台250之各種IP位址,並相應配置發展應用程式。程式設計師多次將只能存取僅包括一單一GPU的慣用系統(諸如桌上型電腦或膝上型電腦),且程式設計師可能無法存取連接網路的目標平台。
應明白,可構成結合多個GPU在單一平台的替代系統,其中至少一GPU可專屬於產生顯示用的影像資料,且至少一其他GPU則專屬於除錯操作。此類型之系統已用於為圖形處理單元上的通用計算(GPGPU,General Purpose Computing on Graphics Processing Unit)除錯計算應用程式。然而,此類系統對於專屬於除錯操作的GPU需要個別的驅動程式,避免專屬於除錯操作的GPU處理圖形程式。換言之,諸如Microsoft® Windows的慣用作業系統構成將圖形操作分配給構成處理圖形程式的可用GPU之任一者。因此,發展應用程式無法在可能拖延作業系統顯示作業系統或其他應用程式所產生的影像資料之能力的情況下,針對除錯用途暫停圖形程式之操作。以下所說明的系統將可解決此類問題。
第三圖例示根據一具體實施例之構成除錯圖形程式的系統。如第三圖中所示,用戶端平台300為類似用戶端平台200,在於用戶端平台300包括一CPU 301、一記憶體304、一GPU 306、一顯示裝置308及一NIC 303。在一具體實施例中,這些組件類似於用戶端平台200之組件。
記憶體304可包括一作業系統(OS)331、一驅動程式332、一IDE 333、一圖形應用程式334、一或多個著色器程式335及一映射狀態記憶體336。OS 331可為Microsoft® Windows、Linux®、Mac® OSX。IDE 333可為Microsoft® Visual Studio、NVIDIA® Nsight(Visual Studio的延伸)、開放原始碼Eclipse Platform、或能除錯圖形程式的任何其他類型之發展環境或除錯軟體。
驅動程式332構成將指令傳輸至GPU 306以在GPU 306上執行任務。在一具體實施例中,驅動程式332實施OpenGL®規範所定義的API。API讓圖形應用程式334產生發送到驅動程式332的硬體獨立API命令,進而使GPU 306執行API命令所指定的操作。在另一具體實施例中,驅動程式332實施有關執行階段程式庫的API以實施Direct3D®API。API允許圖形應用程式334產生發送到執行階段程式庫的硬體獨立API命令,其進而將額外API命令傳輸至驅動程式332,使GPU 306執行API命令所指定的指令。圖形應用程式334所產生的API命令可經由一或多個中間軟體層(諸如應用程式填充碼、程式庫等)直接或間接傳輸至驅動程式332。
圖形應用程式334可為構成由CPU 301執行的一軟體應用程式,以產生傳輸至軟體層的API命令。圖形應用程式334可與一或多個著色器程式335有關聯,諸如構成由GPU 306之可程式設計程式單元執行的頂點著色器、幾何著色器或片段著色器(亦即像素著色器)。著色器為構成由GPU執行以轉換幾何基元或著色像素(亦即為一或多個像素產生色彩分量值)的一組指令的一般性用語。每個著色器皆可構成接收一或多個輸入緩衝區(例如頂點緩衝區等),並產生一或多個輸出緩衝區(例如三角形修補、色彩向量等)。
如前述,慣用GPU不具有在執行期間暫停同時持續產生在顯示裝置上顯示影像資料之性能。為了解決此問題,應用程式填充碼構成重播圖形應用程式所指定的操作,使得IDE 333將顯示GPU 306之狀態如同GPU 306在除錯期間暫停而實際允許GPU持續執行,藉此允許GPU執行環境從與圖形應用程式有關聯的API執行環境切換到例如與產生在顯示裝置308上顯示的影像資料的作業系統331有關聯的API執行環境。
在一具體實施例中,應用程式填充碼構成追蹤與圖形應用程
式334有關聯的API執行環境。應用程式填充碼在特定一或多個圖框之起始將API環境之初始狀態儲存於記憶體304中。程式設計師可運用除錯工具指示哪些要使用的圖框。應用程式填充碼為記憶體304中的圖形應用程式334所產生的一或多個圖框儲存API命令流。應用程式填充碼隨後可啟動重播迴圈以重複執行API命令流,以多次著色影像資料之一或多個圖框。換言之,重播迴圈之單次遞迴執行API命令流,以著色影像資料之一或多個圖框。在API命令流之末端,可回復API執行環境之初始狀態,且API命令流可重播以實質相同的順序重複該等操作,並重新著色影像資料之一或多個圖框。API命令可包括加載特定著色器程式的呼叫、指定包括複數個幾何基元(例如三角形)、繪製呼叫和此類的推式緩衝區的呼叫。API命令流可儲存於記憶體304中的重播緩衝區中,且隨後視使用者所需多次反覆重播以執行除錯操作。
此重播功能可為了實施各種除錯技術而由IDE 333或其他除錯工具利用。例如,圖形應用程式334及/或著色器程式335可藉由在特定圖框期間執行圖形應用程式334並啟動重播迴圈而進行除錯。一斷點(亦即一特殊指令)可在著色器程式335的某列中,使GPU 306暫停執行有關圖形應用程式334的任何進一步指令。在一具體實施例中,斷點指令使錯誤處理程式由GPU 306執行。錯誤處理程式可使訊息傳輸至應用程式填充碼(例如透過驅動程式332)。在一具體實施例中,應用程式填充碼構成將GPU環境之目前狀態複製到映射狀態記憶體336中。一旦GPU執行環境的目前狀態已儲存於映射狀態記憶體336中,則允許GPU 306持續著色器程式335和API命令流所指定的任何其他指令之執行。通常,允許GPU 306持續執行會妨礙程式設計師檢驗GPU執行環境之狀態(亦即暫存器、相關記憶體建構等),因為GPU執行環境會隨著額外指令執行而更新。然而,在此情況下,GPU執行環境之狀態儲存於映射狀態記憶體336中,且不受到允許程式持續或允許不同執行環境載入於GPU 306的影響。因此,雖然GPU 306已進行到對於其他任務的執行,但程式設計師可檢驗在映射狀態記憶體336中所儲存的資訊。
在一具體實施例中,GPU 306包括以下搭配第四圖和第五圖
所說明的平行處理單元(parallel processing unit)400。其他具體實施例可包括具有不同架構的GPU,且以下所顯示的此類架構僅為了例示性目的。
第四圖例示根據一具體實施例之平行處理單元(PPU)400。雖然本說明書中PPU 400係以一平行處理器來實施,但應特別注意,此類處理器僅為了例示性目的而闡述,且任何處理器皆可採用來進行相同的補充及/或代換。在一具體實施例中,PPU 400構成在兩或多個串流多處理器(SMs,Streaming multi-processors)450中同時執行複數個執行緒。一執行緒(亦即執行之執行緒)係執行於特定SM 450內的一組指令之例示。以下搭配第五圖更詳細所說明的每個SM 450可包括,但不限於,一或多個處理核心、一或多個載入/儲存單元(LSUs,Load/store units)、一1階(L1,Level-one)快取、共用記憶體和此類。
在一具體實施例中,PPU 400包括一輸入/輸出(I/O,Input/output)單元405,其構成從系統匯流排402上的中央處理單元(CPU)(未顯示)傳輸及接收通信(例如命令、資料等)。I/O單元405可利用一快速周邊組件互連(PCIe,Peripheral component interconnect express)介面來實施以於PCIe匯流排進行通信。在替代具體實施例中,I/O單元405可用習知其他類型的匯流排介面來加以實施。
PPU 400亦包括一主機介面單元410,其解碼命令及將命令傳輸至任務管理單元(task management unit)415或命令可指定的PPU 400之其他單元(例如記憶體介面480)。主機介面單元410構成在PPU 400之各種邏輯單元之間和之中選徑通信。
在一具體實施例中,編碼為命令流的程式由CPU寫入緩衝區。緩衝區係記憶體中的區域,例如記憶體404或系統記憶體,其可由CPU和PPU 400兩者存取(亦即讀取/寫入)。CPU將命令流寫入緩衝區,且隨後將指示器(pointer)傳輸至PPU 400的命令流之起始。主機介面單元410將具有指示器的任務管理單元(TMU)415提供給一或多個串流。TMU 415選擇一或多個串流,並構成將經選擇的串流組織為待決(pending)網格池。待決網格池可包括尚未經選擇用於執行的新網格與已部分執行並已中止的網格。
耦合於TMU 415與SM 450之間的工作分散單元420管理
有效網格池、選擇及分派由SM 450執行用的有效網格。當待決網格有執行資格時(亦即沒有未解決的資料相依性),待決網格由TMU 415傳送到有效網格池。當有效網格之執行受到相依性阻滯時,將有效網格傳送到待決池。當完成網格之執行時,網格由工作分散單元420從有效網格池移除。除了從主機介面單元410和工作分散單元420接收網格之外,TMU 415亦在網格之執行期間接收由SM 450動態產生的網格。這些動態產生的網格加入待決網格池中的其他待決網格。
在一具體實施例中,CPU執行驅動程式核心,其實施讓執行於CPU上的一或多個應用程式能排程在PPU 400上執行用的操作的應用程式介面(API)。應用程式可包括使得驅動程式核心產生執行用的一或多個網格的指令(亦即API命令)。在一具體實施例中,PPU 400實施單一指令多個資料(SIMD,Single-Instruction,Multiple-Data)架構,其中網格中的每個執行緒區塊(亦即程緒束(warp))皆由執行緒區塊中的不同執行緒同時執行於不同的資料集上。驅動程式核心定義由k個相關執行緒組成的執行緒區塊,使得相同執行緒區塊中的執行緒可經由共用記憶體交換資料。在一具體實施例中,執行緒區塊包括32個相關執行緒,且一網格係執行相同串流的一或多個執行緒區塊的陣列,且不同的執行緒區塊可經由全域記憶體交換資料。
在一具體實施例中,PPU 400包括X個SM 450(X)。例如,PPU 400可包括15個相異的SM 450。每個SM 450皆係多執行緒,且同時執行來自特定執行緒區塊的複數個執行緒(例如32個執行緒)。每個SM 450皆透過交叉開關(crossbar)460(或其他類型之互連網路)連接到2階(L2)快取465。L2快取465連接到一或多個記憶體介面480。記憶體介面480針對高速資料的傳送可使用16、32、64、128位元資料匯流排來實施。在一具體實施例中,PPU 400包括U個記憶體介面480(U),其中每個記憶體介面480(U)皆連接到對應的記憶體裝置404(U)。例如,PPU 400可連接到多達6個記憶體裝置404,諸如第5版圖形雙倍資料速率同步動態隨機存取記憶體(GDDR5 SDRAM,Graphics Double-Data-Rate,Version 5,Synchronous Dynamic Random Access Memory)。
在一具體實施例中,PPU 400具有多階記憶體階層。記憶體404設置於耦合PPU 400的SDRAM中的晶片外。來自記憶體404的資料可被提取及儲存於L2快取465中,該L2快取465係設置於晶片上且由各種SM 450共用。在一具體實施例中,每個SM 450皆亦實施L1快取。L1快取係專屬於特定SM 450的專屬記憶體。每個L1快取皆耦合於共用L2快取465。來自L2快取465的資料可被提取及儲存於在SM 450之功能單元中的每個L1快取以供處理。
在一具體實施例中,PPU 400包括一圖形處理單元(GPU)。PPU 400可接收指定處理圖形資料用的著色器程式的命令。圖形資料可定義為一組基元,諸如點、線、三角形、四邊形、三角形條。通常,一基元包括指定基元(例如在模型空間座標系統中)的許多頂點的資料,及有關基元之每個頂點皆的屬性。屬性可包括位置、色彩、表面法線向量、紋理(texture)座標等之一或多者。PPU 400可處理圖形基元以產生圖框緩衝區(亦即顯示器之每個像素的像素資料)。驅動程式核心實施圖形處理指令管線,諸如OpenGL API所定義的圖形處理指令管線。
應用程式將場景的模型資料(亦即頂點和屬性之收集)寫入記憶體。模型資料定義出在顯示器上可見的每個物件。應用程式隨後對需要著色及顯示模型資料的驅動程式核心進行API呼叫。驅動程式核心讀取模型資料並將命令寫入緩衝區,以執行一或多個操作處理模型資料。命令可編碼不同的著色器程式,包括頂點著色器、外殼著色器、幾何著色器、像素著色器等之一或多者。例如,TMU 415可構成一或多個SM 450以執行處理由模型資料所定義出許多頂點的頂點著色器程式。在一具體實施例中,TMU 415可構成不同的SM 450以同時執行不同的著色器程式。例如,SM 450之第一子集合可構成執行一頂點著色器程式,而SM 450之第二子集合可構成執行一像素著色器程式。SM 450之第一子集合處理頂點資料以產生經處理的頂點資料,並將經處理的頂點資料寫入L2快取465及/或記憶體404。經處理的頂點資料可被格柵化(亦即在螢幕空間中從三維資料變換成二維資料)以產生片段資料之後,SM 450之第二子集合執行像素著色器以產生經過格柵化處理的片段資料,其隨後與其他經處理的片段資料混合並
寫入記憶體404中的圖框緩衝區。頂點著色器程式和像素著色器程式可同時執行,以指令管線的方式處理來自相同場景的不同資料,直到場景的全部模型資料皆已著色到圖框緩衝區。隨後,將圖框緩衝區之內容傳輸至在顯示裝置上顯示用的顯示控制器。
PPU 400可包括於桌上型電腦、膝上型電腦、平板電腦、智慧型手機(例如無線手持式裝置)、個人數位助理(PDA,Personal Digital Assistant)、數位相機、手持式電子裝置和此類中。在一具體實施例中,PPU 400可體現於單一半導體基板上。在另一具體實施例中,PPU 400包括於具一或多個其他邏輯單元的系統單晶片(SoC,System-on-a-chip)中,諸如精簡指令集電腦(RISC,Reduced instruction set computer)CPU、記憶體管理單元(MMU,Memory management unit)、數位對類比轉換器(DAC,Digital-to-analog converter)。
在一具體實施例中,PPU 400可包括於圖形卡上,其包括一或多個記憶體裝置404,諸如GDDR5 SDRAM。圖形卡可介接桌上型電腦之主機板上的一PCIe插槽,該電腦之主機板則包括例如北橋晶片組和南橋晶片組。在另一具體實施例中,PPU 400可為包括於主機板之晶片組(例如北橋)中的整合式圖形處理單元(iGPU,Integrated Graphics Processing Unit)。
第五圖例示根據一具體實施例之第四圖所示的串流多處理器450。如第五圖所示,SM 450包括一指令快取505、一或多個排程器單元5l0、一暫存器檔案520、一或多個處理核心550、一或多個雙倍精確度單元(DPU,Double Precision Unit)551、一或多個特殊功能單元(SFU,Special Function Unit)552、一或多個載入/儲存單元(LSU)553、一互連網路580、一共用記憶體/L1快取570及一或多個紋理單元590。
如前述,工作分散單元420分派在PPU 400之一或多個SM 450上執行用的有效網格。排程器單元510從工作分散單元420接收網格,並針對每個有效網格之一或多個執行緒區塊管理指令排程。排程器單元510在平行執行緒之群組中排程執行緒,其中每個群組皆稱為程緒束。在一具體實施例中,每個程緒束包括32個執行緒。排程器單元510可管理複數個不同的執行緒區塊,將執行緒區塊分配給執行用的程緒束,且隨後在每個
時脈週期期間於各種功能單元(亦即核心550、DPU 551、SFU 552和LSU 553)上排程來自複數個不同程緒束的指令。
在一具體實施例中,每個排程器單元510皆包括一或多個指令分派單元515。每個分派單元515皆構成將指令傳輸至功能單元之一或多個。在第五圖所示的具體實施例中,排程器單元510包括兩分派單元515,其允許在每個時脈週期期間皆分派來自相同執行程緒束的兩不同指令。在替代具體實施例中,每個排程器單元510可包括單一分派單元515或額外分派單元515。
每個SM 450皆包括一暫存器檔案520,其針對SM 450的功能單元提供一組暫存器。在一具體實施例中,暫存器檔案520在功能單元之每一者之間劃分,使得每個功能單元皆分配到暫存器檔案520之專屬部分。在另一具體實施例中,暫存器檔案520在SM 450所執行的不同執行程緒束之間劃分。暫存器檔案520針對連接功能單元之資料路徑的運算元(operands)提供暫時儲存。
每個SM 450皆包括L個處理核心550。在一具體實施例中,SM 450包括大量(例如192個)相異的處理核心550。每個核心550皆係完全指令管線的單一精確度處理單元,其包括一浮點算術邏輯單元和一整數算術邏輯單元。在一具體實施例中,浮點算術邏輯單元實施浮點算術的IEEE 754-2008標準。每個SM 450皆亦包括M個DPU 551,其實施雙倍精確度浮點算術;N個SFU 552,其執行特殊功能(例如像素混合操作和此類);及P個LSU 553,其在共用記憶體/L1快取570與暫存器檔案520之間實施載入及儲存操作。在一具體實施例中,SM 450包括64個DPU 551、32個SFU 552和32個LSU 553。
每個SM 450皆包括一互連網路580,其將每個功能單元皆連接到暫存器檔案520和共用記憶體/L1快取570。在一具體實施例中,互連網路580係可構成將功能單元之任一者連接到暫存器檔案520中的暫存器之任一者或共用記憶體/L1快取570中的記憶體位置的交叉開關。
在一具體實施例中,SM 450實施於GPU內。在此具體實施例中,SM 450包括J個紋理單元590。紋理單元590可從記憶體404載入
紋理圖(例如紋理元素(texels)之二維(2D)陣列),並採樣紋理圖以產生在著色器程式中使用的經採樣的紋理值。紋理單元590使用mip圖(亦即不同細節程度之紋理圖)實施紋理操作,諸如反鋸齒操作。在一具體實施例中,SM 450包括16個紋理單元590。
以上所說明的PPU 400可構成執行較慣用CPU更快的高度平行計算。平行計算在處理圖形處理、資料壓縮、生物量測、串流處理演算法相對具有優勢。
第六圖為根據一具體實施例之第四圖之PPU 400所實施的圖形處理指令管線600之概念圖。圖形處理指令管線600係實施從三維(3D)幾何資料產生2D電腦產出影像的處理步驟之摘要流程圖。如習知,指令管線架構可藉由將操作分成複數個階段而更有效執行長等待時間操作,其中每個階段之輸出皆耦合於下一連續階段之輸入。因此,圖形處理指令管線600接收輸入資料601,該輸入資料從圖形處理指令管線600之一階段傳輸至下一階段以產生輸出資料602。在一具體實施例中,圖形處理指令管線600可代表OpenGL® API所定義的圖形處理指令管線。
如第六圖所示,圖形處理指令管線600包括一指令管線架構,其包括許多階段。這些階段包括,但不限於,一資料組合階段610、一頂點著色階段620、一基元組合階段630、一幾何著色階段640、一視埠縮放、剔除及剪輯(VSCC,Viewport Scale,Cull,and Clip)階段650、一格柵化階段660、一片段著色階段670和一格柵操作階段680。在一具體實施例中,輸入資料601包括命令,其將使處理單元實施圖形處理指令管線600之階段及將由該等階段處理的幾何基元(例如點、線、三角形、四邊形、三角形條或扇形等)。輸出資料602可包括像素資料(亦即色彩資料),其被複製到記憶體的圖框緩衝區或其他類型之表面資料結構中。
資料組合階段610接收輸入資料601,其指定高階表面、基元或此類的頂點資料。資料組合階段610諸如藉由從主機處理器接收命令(包括一指向記憶體緩衝區的指標)及從緩衝區讀取頂點資料,將頂點資料收集於暫時儲存或佇列中。頂點資料隨後傳輸至頂點著色階段620進行處理。
頂點著色階段620藉由執行該等頂點之每一者的一組操作
(亦即頂點著色器或程式)一次而處理頂點資料。頂點可例如指定為與一或多個頂點屬性有關聯的四座標向量。頂點著色階段620可操縱諸如位置、色彩、紋理座標的屬性。換言之,頂點著色階段620可執行與頂點有關聯的頂點座標或其他頂點屬性操作。此類操作普遍包括照明操作(亦即為頂點修改色彩屬性)和轉換操作(亦即為頂點修改座標空間)。例如,頂點可使用物件座標空間座標指定,其藉由將該等座標乘以將座標從物件座標空間轉化為世界空間或正規化裝置座標(NCD,Normalized-device-coordinate)空間的矩陣而轉換。頂點著色階段620產生轉換後的頂點資料,以傳輸轉換後的頂點資料至基元組合階段630。
基元組合階段630收集由頂點著色階段620輸出的頂點,並將頂點群組成幾何基元供幾何著色階段640處理。例如,基元組合階段630可構成將每三個順序頂點組群為幾何基元(例如三角形),供傳輸至幾何著色階段640。在一些具體實施例中,指定頂點可重複用於順序幾何基元(例如三角形條中的兩個順序三角形可共用兩個頂點)。基元組合階段630將幾何基元(亦即相關頂點之收集)傳輸至幾何著色階段640。
幾何著色階段640藉由對幾何基元執行一組操作(亦即幾何著色器或程式)而處理幾何基元。格柵操作可從每個幾何基元皆產生一或多個幾何基元。換言之,幾何著色階段640可將每個幾何基元皆細分成由圖形處理指令管線600之其餘部分處理用的兩或多個幾何基元之較精細網孔。幾何著色階段640將幾何基元傳輸至視埠SCC階段650。
視埠SCC階段650執行幾何基元之視埠縮放、剔除及剪輯。每個著色面皆與抽象相機位置有關聯。相機位置代表觀看者正注視場景的位置,並定義出封閉場景之物件的視體(viewing frustum)。視體可包括一視平面、一後平面和四個剪輯平面。完全在視體外部的任何幾何基元皆可剔除(亦即丟棄),因為幾何基元將無助於最後著色出的場景。部分在視體內部且部分在視體外部的任何幾何基元皆可剪輯(亦即變換成封閉於視體內的新幾何基元)。再者,幾何基元可每個皆依據視體之深度進行縮放。全部可能可見的幾何基元隨後將可被傳輸至格柵化階段660。
格柵化階段660將3D幾何基元轉換成2D片段。格柵化階
段660可構成運用幾何基元之頂點設置一組平面方程式,從其可內插各種屬性。格柵化階段660亦可計算複數個像素的涵蓋率遮罩,以指示像素之一或多個採樣位置是否截取幾何基元。在一具體實施例中,z軸測試亦可執行以判定幾何基元是否由已格柵化的其他幾何基元閉合。格柵化階段660產生片段資料(亦即與每個所涵蓋的像素之特定採樣位置皆有關聯的內插頂點屬性),以傳輸至片段著色階段670。
片段著色階段670藉由對該等片段之每一者執行一組操作(亦即片段著色器或程式)而處理片段資料。片段著色階段670可諸如藉由使用片段之內插紋理座標執行照明操作或採樣紋理圖,產生片段的像素資料(亦即色彩值)。片段著色階段670產生像素資料以傳輸至格柵操作階段680。
格柵操作階段680可對像素資料執行各種操作,諸如執行阿法(alpha)測試、模板測試,並將像素資料與對應於與像素有關聯的其他片段的其他像素資料混合。當格柵操作階段680已完成處理像素資料(亦即輸出資料602)時,像素資料可寫入著色目標,諸如圖框緩衝區、色彩緩衝區。
除了或替代前述階段之一或多者,一或多個額外階段可包括於圖形處理指令管線600中。觀念上的圖形處理指令管線之各種實作可實施上述之不同階段。再者,前述階段之一或多者在一些具體實施例(諸如幾何著色階段640)中可從圖形處理指令管線排除。其他類型之圖形處理指令管線皆可視為在本發明所揭示內容的範疇內。再者,圖形處理指令管線600之該等階段之任一者皆可由諸如PPU 400的圖形處理器內的一或多個專屬硬體單元實施。圖形處理指令管線600之其他階段可由諸如PPU 400之SM 450的可程式設計硬體單元實施。
不同於在GPU 306上啟動單一核心的GPGPU程式來啟動數百或數千個執行緒,圖形程式係藉由啟動在GPU 306上的初始內核實施,其進而啟動一或多個後續的核心,而無需CPU 301介入。例如,圖形程式可在GPU 306上啟動核心,以在一SM 450(或多個SM 450)上執行頂點著色階段620。核心隨後啟動個別的核心以執行幾何著色階段640,其進而啟動另一核心以執行片段著色階段670,依此類推。此外,圖形處理指令管線600之一些其他階段可實施於固定單元硬體上,諸如格柵化器或資料組合
器。來自一核心的結果可在SM 450的後續核心處理之前,由一或多個介入的固定功能硬體單元處理。所以,不同於可能藉由將已儲存狀態載在SM 450之一者並重新啟動已暫停核心而回復的GPGPU程式,圖形程式更加難以重新載入,因為許多固定功能單元不允許重新載入已儲存的狀態。前面提到的重播機制將可有效減輕此問題。
第七A圖例示根據一具體實施例之著色器程式700的編碼之一部分。如第七A圖所示,著色器程式700係採用諸如NVIDIA®Cg(Cg代表繪圖C語言)的高階著色器程式語言設計的頂點著色器。著色器程式700係針對著色格狀幾何而開發的編碼之一部分。著色器程式700之編碼僅為了例示性目的,且任何著色器程式編碼皆可使用說明書中所說明的技術進行除錯。
如前述,資料組合階段610從圖形應用程式334接收幾何基元之列表。API執行環境構成設定PPU 400之狀態以實施圖形處理指令管線600之至少一部分。一旦設置API執行環境,則另一API命令可在PPU 200上啟動任務。任務可包括複數個執行緒,其構成實施例如著色器程式。複數個執行緒中的每個執行緒皆代表著色器程式700之單一實例。頂點從資料組合階段610傳輸至頂點著色階段620時,排程器單元520將頂點分配給可用執行緒。
第七B圖例示根據另一具體實施例之使用單一GPU 306除錯著色器程式335之系統750。如第七B圖所示,系統750包括一圖形應用程式334、一API截取模組755、一驅動程式332、一GPU 306和一顯示裝置308。圖形應用程式334、API截取模組755和驅動程式332由CPU 301執行。為了除錯著色器程式335的原始碼,原始碼可由編譯器編譯及儲存於GPU 306可存取的記憶體中。圖形應用程式334產生API命令流,其包括將著色器程式335載入於PPU 400之SM 450上並在SM 450上啟動許多執行緒的至少一命令,每個執行緒皆可為著色器程式335之實例。API截取模組755構成截取由圖形應用程式334所產生的API命令流。API截取模組755藉由管理構成模擬API執行環境之改變中狀態以回應API命令流的狀態模型,追蹤API執行環境之狀態。API截取模組755將API命令流轉
送到驅動程式332。在一些具體實施例中,API命令流可轉送到一或多層中間軟體層,諸如實施Direct3D® API的執行階段程式庫。驅動程式332隨後將API命令轉換成指令或命令,發送到GPU 306以執行產生在顯示裝置308上顯示用的影像資料的各種操作。
為了開始除錯圖形程式的原始碼335,IDE 333可將命令傳輸至API截取模組755。在下一圖框之起始點,API截取模組755可儲存API執行環境之初始狀態。隨後,API截取模組755儲存由圖形應用程式334所產生針對重播緩衝區中的一或多個圖框的API命令流。一旦API命令流已儲存於重播緩衝區中,則API截取模組755隨後啟動重播迴圈直到GPU 306遇到斷點為止。再者,斷點係由IDE 333插入已編譯著色器程式335編碼中的特殊指令。當GPU 306執行斷點時,執行錯誤處理程式使API截取模組755將GPU執行環境之目前狀態儲存於映射狀態記憶體336。儲存GPU環境之目前狀態包括將有關狀態模型的資訊(包括參數、暫存器值和共用記憶體)複製到映射狀態記憶體336。在一具體實施例中,GPU環境包括關於儲存於總體記憶體中的目前有效的執行緒、暫存器值、局部記憶體值、緩衝區和依此類推的資訊。一旦GPU執行環境之目前狀態儲存於映射狀態記憶體336,則可允許GPU 306上的執行緒結束執行。GPU 306隨後可釋出以處理不同的執行環境。所以,允許顯示裝置308產生顯示用的新影像資料,使得顯示裝置308不會因為顯示裝置308停止接收視訊信號而凍結於先前圖框上或關閉。
請即參考第七A圖,API截取模組755讓各種除錯功能皆能使用具單一GPU 306之系統實施。例如,程式設計師可使用IDE 333將斷點插入著色器程式335之原始碼中。程式設計師可使用IDE 333所實施的命令選擇原始碼之指定行並插入斷點。一旦程式設計師已指定斷點,則程式設計師可選擇IDE 333內的命令為著色器程式335編譯及執行原始碼之目前版本。在一具體實施例中,斷點可使用二進制程式修補技術(亦即更換著色器程式中的指令以跳到一組包括斷點的指令)插入著色器程式335之已編譯版本中。可執行圖形應用程式334,產生即將傳輸至諸如驅動程式332的軟體層的API命令流。API命令為了著色視訊資料之圖框而建立API
執行環境。API命令流使經修改的著色器程式335由GPU 306執行。
一旦到達第一斷點,則在GPU 306中執行錯誤處理程式,且錯誤處理程式之指令使API截取模組755將GPU執行環境之狀態儲存於映射狀態記憶體336。隨後允許GPU 306持續執行緒之執行直到圖框已著色。程式設計師隨後可使用IDE 333所實施的圖形使用者介面(GUI,Graphical User Interface)檢查儲存於映射狀態記憶體336中的GPU執行環境之狀態。一旦程式設計師已檢查在第一斷點的GPU 306之狀態,則程式設計師可重複此程序,在著色器程式335之原始碼中設定不同的斷點。
可使用重播機制實施的另一除錯機制係指令步進。應明白的是,步進到下一指令或下一斷點不像僅執行緒或執行緒群組的下一待決指令般容易,因為GPU 306無法暫停一段時間同時等待程式設計師指示程式應持續執行而不凍結在顯示裝置308上所顯示的影像。因此,API截取模組755所實現的重播功能可運用於重複執行API命令流、在程式中的不同點暫停執行、在重播迴圈之每次遞迴期間皆在不同點儲存GPU執行環境之目前狀態,並顯示允許GPU 306持續執行的GPU執行環境的已儲存狀態。
在一具體實施例中,API截取模組755構成在重播迴圈之每次經過期間皆回復API執行環境之初始狀態。一旦已回復API執行環境之初始狀態,則API截取模組755可將儲存於重播緩衝區中的API命令流傳輸至軟體層,使得GPU 306重新著色一或多個圖框。對於斷點之間的指令步進,API截取模組755可追蹤已遇到的斷點之列表。每個斷點皆可與著色器程式335中的特定API命令(例如第三繪製呼叫)及特定行編號有關聯。斷點亦可與其他狀態有關聯,諸如特定基元(例如頂點、三角形、片段等)、特定圖框等。GPU 306執行斷點時,錯誤處理程式使得API截取模組755評估造成錯誤的特定斷點,並判定是否應允許程式持續或在序列順序上的現有斷點是否係應顯示給程式設計師的下一斷點。下一斷點可代表來自先前指令的單一步驟。
如此,程式要以逐一指令或逐一斷點步進執行。然而,實際上,每次處理重播迴圈時,一或多個全圖框皆會重新著色,且API截取模組755僅正嘗試在著色程序中的不同點上擷取GPU執行環境之狀態。實際
情況係由GPU 306執行之確切順序在重播迴圈之每次經過期間可能不同。換言之,雖然API命令流具有固定順序,但GPU 306之架構可依據各種排程演算法以不同順序排程特定執行緒之執行,使得執行緒之執行順序在重播迴圈之不同遞迴期間可不完全相同,但相較於重播迴圈之先前遞迴,想要的特定執行緒之狀態可完全回復。然而,類似於慣用除錯工具藉由在每個步驟期間持續逐步經過指令並檢驗GPU執行環境之狀態,程式出現序列執行,程式設計師可識別出原始碼中的可能錯誤。
在某些架構中,一特定著色器程式335可於數百或數千個執行緒實質平行執行。因此,對於特定執行緒群組(亦即一程緒束),可在一時脈週期期間到達一著色器程式335中的單一斷點,而對於係相同著色器程式335之實例的不同執行緒群組,可在一或多個額外時脈週期期間到達該相同斷點。例如,一片段著色器可對影像中的每個像素執行一或多次,其中1080p高畫質(HD)影像具有超過2百萬個像素。GPU 306可在任何特定時脈週期期間僅處理這些執行緒之一部分。因此,對於一群組的相關執行緒,可多次到達著色器程式335中的單一斷點。在一具體實施例中,API截取模組755追蹤目前經過的重播迴圈已遇到特定斷點的次數。換言之,API截取模組755可保留一計數器,指示在特定除錯活動期間已命中斷點有多少次。隨後在特定經過的重播迴圈期間,API截取模組755將追蹤該特定斷點已觸發錯誤處理程式有多少次。若在特定經過的重播迴圈期間尚未遇到斷點達臨界值次數,則API截取模組755允許GPU 306持續執行。然而,若在特定經過的重播迴圈期間已達斷點達臨界值次數,則API截取模組755使GPU執行環境之目前狀態儲存於映射狀態記憶體336。此類型之操作對執行著色器程式335提供任務執行的錯覺,即使當僅有單一斷點包括在著色器程式335中之時。
換言之,在數百或數千個執行緒平行執行的著色器程式中的第一斷點處停止將始終停止在接近圖框之開始的特定點處的著色。進展之錯覺藉由在重播迴圈之每次遞迴期間皆自動略過許多斷點以推進到圖框之著色的不同點而提供。
第八A圖、第八B圖和第八C圖例示根據另一具體實施例
之使用單一GPU 306除錯圖形程式之方法800的流程圖。在步驟802,API截取模組755監測圖形應用程式334所產生的API命令流。在一具體實施例中,API截取模組755係應用程式填充碼,其構成截取圖形應用程式334所產生的API命令,並管理代表與圖形應用程式334有關聯的API執行環境的狀態模型。在步驟804,API截取模組755判定是否擷取下一圖框。在一具體實施例中,API截取模組755可構成從IDE 333接收一命令,以使API截取模組755補捉下一圖框擷取API命令流。在另一具體實施例中,API截取模組755構成在第一斷點設定於著色器程式335時,自動擷取圖框;且可構成在全部斷點皆從著色器程式335移除時,不自動擷取圖框。若API截取模組755尚未接收到擷取下一圖框的指令,則隨後API截取模組755持續監測由圖形應用程式334所產生的API命令流。然而,若API截取模組755已接收到擷取下一圖框的指令,則隨後在步驟806,API截取模組755將擷取API執行環境之初始狀態。在一具體實施例中,API截取模組755在記憶體304的下一圖框之起始處,建立狀態模型之副本。
在步驟808,API截取模組755將現有圖框之API命令流儲存於重播緩衝區中。重播緩衝區係記憶體304中的資料結構,其維護至少一圖框的API命令之順序列表。在步驟810,API截取模組755可停頓圖形應用程式334之執行。應明白,某些程序可在當今的現代作業系統中暫停。在步驟812,API截取模組755啟動重播迴圈。每個經過的重播迴圈皆將API執行環境重置成在步驟806中所擷取API執行環境的初始狀態,並將儲存於重播緩衝區中的API命令流重新傳輸至軟體層,以重新著色圖框一次或多次。
在步驟814,API截取模組755將API執行環境之狀態重置成API執行環境之初始狀態。在一具體實施例中,API截取模組755可構成產生新的API執行環境,其代表儲存於記憶體304中的API執行環境之初始狀態。藉由發出包括與API執行環境之初始狀態有關的參數之新的API命令可產生新的API執行環境。在另一具體實施例中,API截取模組755構成產生為了重置API執行環境之初始狀態而修改現有API執行環境的API命令。API截取模組755亦可構成依據API執行環境之初始狀態而重置
記憶體304中的物件(例如緩衝區、紋理等)之狀態。
在步驟816,API截取模組755將來自儲存於重播緩衝區中的API命令流的API命令傳輸至軟體層。軟體層可能係實施API的驅動程式或執行階段程式庫。在步驟818,API截取模組755判定是否已到達斷點。在一具體實施例中,GPU 306在到達斷點使得訊息傳輸至驅動程式332時,執行錯誤處理程式。驅動程式332可通知API截取模組755一斷點已使GPU 306暫停執行圖形程式,且API截取模組755可執行與斷點有關的各種操作。若尚未到達斷點,方法800隨後返回步驟816,使得重播緩衝區中的下一API命令傳輸至軟體層。然而,若已到達斷點,則隨後在步驟820,API截取模組755判定是否持續執行。在一具體實施例中,API截取模組755判定觸發錯誤處理程式的特定斷點是否應讓API截取模組755將GPU執行環境之目前狀態儲存於映射狀態記憶體336。例如,若之前已到達斷點,且API截取模組755構成藉由等待直到稍後執行緒觸發斷點而提供進展之錯覺,則隨後API截取模組755允許GPU持續執行,且方法返回步驟818等待下一斷點。然而,若應停止執行,則隨後在步驟822,將GPU環境儲存於映射狀態記憶體336。一旦GPU執行環境儲存於映射狀態記憶體336中,則在步驟824,可回復GPU並允許其持續執行。
在步驟826,API截取模組755將重播緩衝區中的下一API命令傳輸至軟體層。在步驟828,API截取模組755判定是否已到達圖框之末端。API命令流中的特定API命令可指示是否已到達圖框之末端。若尚未到達圖框之末端,方法800隨後返回步驟826,並將另一API命令傳輸至軟體層。然而,若已到達圖框之末端,則隨後在狀態830,API截取模組755判定是否持續進行另一經過的重播迴圈。API截取模組755可等待來自除錯工具的命令,其指示程式設計師是否想要執行另一經過的重播迴圈,並檢驗程式中不同點的GPU執行環境。若API截取模組755判定應進行另一經過的重播迴圈,方法800隨後返回步驟814,回復API執行環境之初始狀態。然而,若API截取模組755判定應終止重播迴圈,則隨後在步驟832,API截取模組755清理重播迴圈。在一具體實施例中,API截取模組755可解除分配用於映射狀態記憶體336、API之初始狀態和依此類推的記憶體。在步
驟832之後,方法800終止。
第九圖例示可實施各種先前具體實施例之各種架構及/或功能之一種示例性系統900。如所顯示,系統900提供包括至少一中央處理器901,其連接通信匯流排902。通信匯流排902可使用任何適合的協定實施,諸如周邊組件互連(PCI,Peripheral Component Interconnect)、快速周邊組件互連(PCI-Express)、加速圖形埠(AGP,Accelerated Graphics Port)、超傳輸(HyperTransport)或任何其他匯流排或點對點通信協定。系統900亦包括一主記憶體904。控制邏輯(軟體)和資料儲存於可具有隨機存取記憶體(RAM,Random Access Memory)之形式的主記憶體904中。
系統900亦包括輸入裝置912、一圖形處理器906和一顯示器908,包含但不限於慣用的陰極射線管(CRT,Cathode Ray Tube)、液晶顯示器(LCD,Liquid Crystal Display)、發光二極體(LED,Light Emitting Diode)、電漿顯示器。使用者輸入可從輸入裝置912接收,例如鍵盤、滑鼠、觸控板、麥克風。在一具體實施例中,圖形處理器906可包括複數個著色器模組、一格柵化模組等。每個前述模組甚至皆可置放於單一半導體平台上以形成圖形處理單元(GPU)。
在本發明所說明的內容中,單一半導體平台可視為一單獨的個體半導體型積體電路或晶片。應注意,術語「單一半導體平台」亦可視為具有提升連接性的多晶片模組,其模擬晶片上操作並藉由運用慣用中央處理單元(CPU)和匯流排實施而進行實質改良。當然,各種模組亦可依使用者所需分開或以半導體平台之各種組合置放。
系統900亦可包括一輔助儲存器910。輔助儲存器910包括,例如,一硬碟機及/或一可拆卸儲存機,代表一軟式磁碟機、一磁帶機、一光碟機、數位影音光碟(DVD,Digital Versatile Disk)機、記錄裝置、通用串列匯流排(USB,Universal Serial Bus)快閃記憶體。可拆卸儲存機採用習知方式讀取及/或寫入一可拆卸儲存機。
電腦程式或電腦控制邏輯演算法可儲存於主記憶體904及/或輔助儲存器910中。此類電腦程式在執行時,允許系統900執行各種功能。記憶體904、儲存器910及/或任何其他儲存器皆係電腦可讀媒體之可
能範例。
在一具體實施例中,各種先前圖式之架構及/或功能可實施於中央處理器901、圖形處理器906、能勝任中央處理器901與圖形處理器906兩者之至少一部分性能的積體電路(未顯示)、晶片組(亦即設計以運作並作為執行相關功能等的單元銷售的積體電路之群組)、及/或有關此的任何其他積體電路之環境中。
此外,各種先前圖式之架構及/或功能可實施於通用電腦系統、電路板系統、專屬於娛樂用途的遊戲機系統、應用程式指定系統、及/或任何其他所需系統之環境中。例如,系統900可具有的形式為桌上型電腦、膝上型電腦、伺服器、工作站、遊戲機、嵌入式系統及/或任何其他類型之邏輯。此外,系統900可具有各種其他裝置之形式,包括,但不限於個人數位助理(PDA)裝置、行動電話裝置、電視機等。
此外,雖然未顯示,但系統900可為了通信用途而耦合於網路(例如電信網路、區域網路(LAN)、無線網路、廣域網路(WAN),諸如網際網路、對等網路、電纜網路或此類)。
雖然上面已說明各種具體實施例,但應理解,其僅是藉由範例進行描述,而不是限制。因此,較佳具體實施例之廣度和範疇應不侷限於上面所述示例性具體實施例之任一者,而應僅根據文後申請專利範圍及其相等物所定義。
Claims (20)
- 一種方法,包括:將一應用程式介面(API,Application Programming Interface)執行環境(context)之一初始狀態儲存於一記憶體中,其中,該API執行環境之該初始狀態係對應於一圖框之一起始;截取(intercepting)與該圖框有關聯的一API命令流,其中,該API命令流由一圖形應用程式產生;將該API命令流傳輸至一實施該API以著色(render)該圖框的一軟體層;及為回應一斷點,將一圖形處理單元(GPU,Graphics Processing Unit)執行環境儲存於該記憶體中。
- 如申請專利範圍第1項之方法,更包括執行一重播迴圈,其包括:產生一或多個該API命令,以將該API執行環境回復成該初始狀態;將該API命令流重新傳輸至該軟體層,以重新著色該圖框;及為回應另一斷點,將另一GPU執行環境儲存於該記憶體中。
- 如申請專利範圍第2項之方法,其中回應從一整合發展環境(IDE,Integrated Development Environment)接收的一命令以重複該重播迴圈。
- 如申請專利範圍第1項之方法,其中,該軟體層係一驅動程式。
- 如申請專利範圍第4項之方法,其中,該驅動程式實施一OpenGL® API。
- 如申請專利範圍第1項之方法,其中,該軟體層係一執行階段程式庫(runtime libary)。
- 如申請專利範圍第6項之方法,其中,該執行階段程式庫係實施一Direct3D® API。
- 如申請專利範圍第1項之方法,更包括追蹤該API執行環境之一狀態。
- 如申請專利範圍第8項之方法,其中,追蹤該API執行環境之該狀態包括:啟動與該圖形應用程式有關聯的一狀態模型;及對於該圖形應用程式所產生的每個API命令,依據該API命令更 新該狀態模型。
- 如申請專利範圍第1項之方法,其中,該API命令流由一應用程式填充碼(shim)截取。
- 如申請專利範圍第1項之方法,更包括:為回應一斷點,依據該斷點判定是否持續執行;及若應持續執行,則隨後將該API命令傳輸至該軟體層以回復執行;或者若不應持續執行,則隨後將該GPU執行環境儲存於該記憶體中。
- 如申請專利範圍第11項之方法,其中,依據該斷點判定是否持續執行,包括將有關該斷點的一計數器與有關該重播迴圈之重覆次數的一臨界值相比較。
- 如申請專利範圍第1項之方法,其中該API執行環境之該初始狀態代表在該圖框之該起始與該API執行環境有關聯的一圖形處理單元之一狀態。
- 一種儲存指令之非暫時性電腦可讀儲存媒體,當一處理器執行指令時,使該處理器執行下列步驟,包括:將一應用程式介面(API)環境之一初始狀態儲存於一記憶體中,其中,該API環境之該初始狀態對應於一圖框之一起始;截取與該圖框有關聯的一API命令流,其中,該API命令流由一圖形應用程式產生;將該API命令流傳輸至實施該API以著色該圖框的一軟體層;及為回應一斷點,將一圖形處理單元(GPU)執行環境儲存於該記憶體中。
- 如申請專利範圍第14項之非暫時性電腦可讀儲存媒體,其中,該軟體層係一驅動程式。
- 如申請專利範圍第14項之非暫時性電腦可讀儲存媒體,該等步驟更包括藉由下列追蹤該API執行環境之一狀態:啟動與該圖形應用程式有關聯的一狀態模型;及對於該圖形應用程式所產生的每個API命令,依據該API命令更 新該狀態模型。
- 一種系統,包括:一圖形處理單元(GPU);一記憶體,其構成儲存一應用程式填充碼,該應用程式填充碼係用來:將一應用程式介面(API)執行環境之一初始狀態儲存於一記憶體中,其中,該API環境之該初始狀態對應於一圖框之一起始;截取與該圖框有關聯的一API命令流,其中該API命令流是由一圖形應用程式產生;將該API命令流傳輸至實施該API以著色該圖框的一軟體層;及為回應一斷點,將一GPU執行環境儲存於該記憶體中。
- 如申請專利範圍第17項之系統,其中,該圖形應用程式是與構成由該GPU執行的一或多個著色器(shader)程式有關聯。
- 如申請專利範圍第17項之系統,其中,該軟體層包括一驅動程式,其實施一OpenGL API。
- 如申請專利範圍第17項之系統,該應用程式填充碼進一步藉由下列方式追蹤該API執行環境之一狀態:啟動一與該圖形應用程式有關聯的一狀態模型;及對於該圖形應用程式所產生的每個API命令,依據該API命令更新該狀態模型。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261730025P | 2012-11-26 | 2012-11-26 | |
US14/076,105 US9292414B2 (en) | 2012-11-26 | 2013-11-08 | System, method, and computer program product for debugging graphics programs locally utilizing a system with a single GPU |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201426301A true TW201426301A (zh) | 2014-07-01 |
Family
ID=50679204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102142093A TW201426301A (zh) | 2012-11-26 | 2013-11-19 | 局部運用具單一圖形處理單元之系統除錯圖形程式之系統、方法及電腦程式產品 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9292414B2 (zh) |
CN (1) | CN103838669A (zh) |
DE (1) | DE102013224046A1 (zh) |
TW (1) | TW201426301A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9978171B2 (en) | 2014-07-29 | 2018-05-22 | Nvidia Corporation | Control of a sample mask from a fragment shader program |
Families Citing this family (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014108733A1 (en) | 2013-01-08 | 2014-07-17 | Freescale Semiconductor, Inc. | Method and apparatus for estimating a fragment count for the display of at least one three-dimensional object |
US20150145871A1 (en) * | 2013-11-22 | 2015-05-28 | Nvidia Corporation | System, method, and computer program product to enable the yielding of threads in a graphics processing unit to transfer control to a host processor |
US9785536B2 (en) * | 2013-11-29 | 2017-10-10 | Nxp Usa, Inc. | Code injection for conditional breakpoints |
US9928564B2 (en) * | 2014-06-26 | 2018-03-27 | Intel Corporation | Efficient hardware mechanism to ensure shared resource data coherency across draw calls |
CN104469385B (zh) * | 2014-12-11 | 2018-11-13 | 北京星网锐捷网络技术有限公司 | 基于虚拟化技术的图形显示方法及装置 |
CN107079200B (zh) * | 2014-12-16 | 2020-07-28 | 惠普发展公司,有限责任合伙企业 | 处理瘦客户端终端中的数据 |
US10402931B2 (en) * | 2015-06-07 | 2019-09-03 | Apple Inc. | Systrace visualization tool |
US9971542B2 (en) * | 2015-06-09 | 2018-05-15 | Ultrata, Llc | Infinite memory fabric streams and APIs |
US9836808B2 (en) | 2015-06-23 | 2017-12-05 | Nxp Usa, Inc. | Apparatus and method for verifying image data comprising mapped texture image data |
US11023993B2 (en) | 2015-06-23 | 2021-06-01 | Nxp Usa, Inc. | Apparatus and method for verifying fragment processing related data in graphics pipeline processing |
US9910760B2 (en) * | 2015-08-07 | 2018-03-06 | Nvidia Corporation | Method and apparatus for interception of synchronization objects in graphics application programming interfaces for frame debugging |
US10210655B2 (en) | 2015-09-25 | 2019-02-19 | Intel Corporation | Position only shader context submission through a render command streamer |
US9672135B2 (en) | 2015-11-03 | 2017-06-06 | Red Hat, Inc. | System, method and apparatus for debugging of reactive applications |
US9881352B2 (en) * | 2015-11-13 | 2018-01-30 | Intel Corporation | Facilitating efficient graphics commands processing for bundled states at computing devices |
CN106775749B (zh) * | 2016-12-29 | 2019-11-05 | 东软集团股份有限公司 | 图像的处理方法及装置 |
US10235272B2 (en) * | 2017-03-06 | 2019-03-19 | Xilinx, Inc. | Debugging system and method |
US10719902B2 (en) * | 2017-04-17 | 2020-07-21 | Intel Corporation | Thread serialization, distributed parallel programming, and runtime extensions of parallel computing platform |
US10310895B2 (en) * | 2017-04-21 | 2019-06-04 | Intel Corporation | Memory-based software barriers |
US10726514B2 (en) * | 2017-04-28 | 2020-07-28 | Intel Corporation | Compute optimizations for low precision machine learning operations |
US10289393B2 (en) | 2017-06-22 | 2019-05-14 | Microsoft Technology Licensing, Llc | GPU-executed program sequence cross-compilation |
US10102015B1 (en) | 2017-06-22 | 2018-10-16 | Microsoft Technology Licensing, Llc | Just in time GPU executed program cross compilation |
US10241766B2 (en) | 2017-06-22 | 2019-03-26 | Microsoft Technology Licensing, Llc | Application binary interface cross compilation |
US10657698B2 (en) * | 2017-06-22 | 2020-05-19 | Microsoft Technology Licensing, Llc | Texture value patch used in GPU-executed program sequence cross-compilation |
US10452516B2 (en) * | 2017-07-10 | 2019-10-22 | Microsoft Technology Licensing, Llc | Replaying time-travel traces relying on processor undefined behavior |
US20190042390A1 (en) * | 2017-08-01 | 2019-02-07 | Microsoft Technology Licensing, Llc | Focused execution of traced code in a debugger |
US10733076B2 (en) * | 2018-03-02 | 2020-08-04 | Microsoft Technology Licensing, Llc | Techniques for detecting faults in rendering graphics |
US10972740B2 (en) | 2018-03-06 | 2021-04-06 | Forcepoint, LLC | Method for bandwidth reduction when streaming large format multi-frame image data |
WO2019209314A1 (en) * | 2018-04-27 | 2019-10-31 | Hewlett-Packard Development Company, L.P. | Failure shield |
US10846088B2 (en) * | 2018-08-21 | 2020-11-24 | Arm Limited | Control of instruction execution in a data processor |
US10997771B2 (en) * | 2018-08-29 | 2021-05-04 | Intel Corporation | Position-based rendering apparatus and method for multi-die/GPU graphics processing |
US11134087B2 (en) | 2018-08-31 | 2021-09-28 | Forcepoint, LLC | System identifying ingress of protected data to mitigate security breaches |
US11200063B2 (en) * | 2018-09-27 | 2021-12-14 | Intel Corporation | Graphics engine reset and recovery in a multiple graphics context execution environment |
US11140190B2 (en) | 2018-10-23 | 2021-10-05 | Forcepoint, LLC | Automated user module assessment |
US10761908B2 (en) * | 2018-10-30 | 2020-09-01 | Stoplight, Inc. | Distillation of various application interface data structures distributed over distinctive repositories to form a data source of consolidated application interface data components |
US11048611B2 (en) | 2018-11-29 | 2021-06-29 | Forcepoint, LLC | Web extension JavaScript execution control by service/daemon |
CN109783407B (zh) * | 2019-01-14 | 2021-01-12 | 武汉精立电子技术有限公司 | 一种基于fpga实现pc与显卡桥接的装置及方法 |
US11132973B2 (en) * | 2019-02-01 | 2021-09-28 | Forcepoint, LLC | System for capturing images from applications rendering video to a native platform with a graphics rendering library |
US10917382B2 (en) | 2019-04-03 | 2021-02-09 | Forcepoint, LLC | Virtual point of presence in a country to allow for local web content |
CN110162302B (zh) * | 2019-04-11 | 2023-06-20 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
US10981059B2 (en) * | 2019-07-03 | 2021-04-20 | Sony Interactive Entertainment LLC | Asset aware computing architecture for graphics processing |
CN110399124B (zh) * | 2019-07-19 | 2022-04-22 | 浪潮电子信息产业股份有限公司 | 一种代码生成方法、装置、设备及可读存储介质 |
US10996942B1 (en) | 2020-01-21 | 2021-05-04 | Dell Products L.P. | System and method for graphics processing unit firmware updates |
US11431743B2 (en) | 2020-02-03 | 2022-08-30 | Forcepoint, LLC | Cross domain dynamic data protection intermediary message transform platform |
US11422920B2 (en) * | 2020-03-12 | 2022-08-23 | Micro Focus Llc | Debugging multiple instances of code using thread patterns |
US11455237B2 (en) | 2020-06-01 | 2022-09-27 | Agora Lab, Inc. | Highly scalable system and method for automated SDK testing |
US11621980B2 (en) | 2020-07-07 | 2023-04-04 | Agora Lab, Inc. | System and method for providing upstream directives based on upstream signal quality of wireless network in real-time communication |
US11470531B2 (en) | 2020-07-13 | 2022-10-11 | Agora Lab, Inc. | System and method for automatically switching real-time communication device to new basic service set |
US11350314B2 (en) | 2020-07-13 | 2022-05-31 | Agora Lab, Inc. | System and method for classifying network data packets with provided classifier identifiers |
CN111831284B (zh) * | 2020-07-29 | 2023-08-08 | 网易(杭州)网络有限公司 | 渲染调试方法、装置及设备 |
CN112579174B (zh) * | 2020-12-05 | 2023-01-31 | 西安翔腾微电子科技有限公司 | 一种多周期双发射指令可发射的检测电路及方法 |
CN112581585B (zh) * | 2020-12-24 | 2024-02-27 | 西安翔腾微电子科技有限公司 | 一种基于SysML视图的GPU命令处理模块的TLM装置及操作方法 |
US11972240B2 (en) | 2021-12-03 | 2024-04-30 | Samsung Electronics Co., Ltd. | Systems and methods for automapping source code to machine code |
CN114745257B (zh) * | 2022-03-28 | 2024-01-09 | 杭州义益钛迪信息技术有限公司 | 数据帧调试方法、装置、设备及存储介质 |
CN115861511B (zh) * | 2022-12-30 | 2024-02-02 | 格兰菲智能科技有限公司 | 绘制命令的处理方法、装置、系统和计算机设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100601606B1 (ko) | 1999-05-13 | 2006-07-14 | 삼성전자주식회사 | 소프트웨어/하드웨어 복합 방식을 이용한 데이터 처리장치 및방법 |
US6891543B2 (en) | 2002-05-08 | 2005-05-10 | Intel Corporation | Method and system for optimally sharing memory between a host processor and graphics processor |
US7380235B1 (en) * | 2003-06-27 | 2008-05-27 | Microsoft Corporation | Application program interface call replay tool |
US7328429B2 (en) | 2003-11-13 | 2008-02-05 | Intel Corporation | Instruction operand tracing for software debug |
US7548244B2 (en) * | 2005-01-12 | 2009-06-16 | Sony Computer Entertainment Inc. | Interactive debugging and monitoring of shader programs executing on a graphics processor |
US20070005323A1 (en) * | 2005-06-30 | 2007-01-04 | Patzer Aaron T | System and method of automating the addition of programmable breakpoint hardware to design models |
US8201029B2 (en) | 2008-01-31 | 2012-06-12 | International Business Machines Corporation | Method and apparatus for operating system event notification mechanism using file system interface |
US9256514B2 (en) * | 2009-02-19 | 2016-02-09 | Nvidia Corporation | Debugging and perfomance analysis of applications |
US8581916B2 (en) | 2009-06-26 | 2013-11-12 | Intel Corporation | Graphics analysis techniques |
US8572573B2 (en) | 2012-03-09 | 2013-10-29 | Nvidia Corporation | Methods and apparatus for interactive debugging on a non-preemptible graphics processing unit |
-
2013
- 2013-11-08 US US14/076,105 patent/US9292414B2/en active Active
- 2013-11-19 TW TW102142093A patent/TW201426301A/zh unknown
- 2013-11-25 DE DE102013224046.5A patent/DE102013224046A1/de not_active Withdrawn
- 2013-11-26 CN CN201310611924.0A patent/CN103838669A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9978171B2 (en) | 2014-07-29 | 2018-05-22 | Nvidia Corporation | Control of a sample mask from a fragment shader program |
Also Published As
Publication number | Publication date |
---|---|
DE102013224046A1 (de) | 2014-05-28 |
US9292414B2 (en) | 2016-03-22 |
US20140146062A1 (en) | 2014-05-29 |
CN103838669A (zh) | 2014-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9292414B2 (en) | System, method, and computer program product for debugging graphics programs locally utilizing a system with a single GPU | |
CN109978751B (zh) | 多gpu帧渲染 | |
US11113800B2 (en) | Filtering image data using a neural network | |
US9535815B2 (en) | System, method, and computer program product for collecting execution statistics for graphics processing unit workloads | |
US9286119B2 (en) | System, method, and computer program product for management of dependency between tasks | |
US10134102B2 (en) | Graphics processing hardware for using compute shaders as front end for vertex shaders | |
TWI498728B (zh) | 非搶占式圖形處理單元上互動除錯之方法和裝置 | |
KR101563098B1 (ko) | 커맨드 프로세서를 갖는 그래픽 프로세싱 유닛 | |
US8522000B2 (en) | Trap handler architecture for a parallel processing unit | |
JP5437485B2 (ja) | レンダリングされたグラフィックス要素のためのパフォーマンスメトリックの視覚的表現の表示 | |
US9256623B2 (en) | System, method, and computer program product for scheduling tasks associated with continuation thread blocks | |
CN108335349B (zh) | 利用神经网络滤波图像数据 | |
CN110675480B (zh) | 用于获取纹理操作的采样位置的方法和装置 | |
US11275662B2 (en) | Fault injection architecture for resilient GPU computing | |
CN111406277B (zh) | 以图块为基础的低分辨率深度存储 | |
US20170323469A1 (en) | Stereo multi-projection implemented using a graphics processing pipeline | |
CN110807827A (zh) | 系统生成稳定的重心坐标和直接平面方程访问 | |
US9082212B2 (en) | Programmable blending via multiple pixel shader dispatches | |
US20150145871A1 (en) | System, method, and computer program product to enable the yielding of threads in a graphics processing unit to transfer control to a host processor | |
US20140372703A1 (en) | System, method, and computer program product for warming a cache for a task launch | |
US20150084952A1 (en) | System, method, and computer program product for rendering a screen-aligned rectangle primitive | |
CN113393564B (zh) | 利用全局照明数据结构的基于水塘的时空重要性重采样 | |
US20230097097A1 (en) | Graphics primitives and positions through memory buffers | |
US9378139B2 (en) | System, method, and computer program product for low latency scheduling and launch of memory defined tasks | |
US20230115044A1 (en) | Software-directed divergent branch target prioritization |