TW202111562A - 用於同步處理器之分片 - Google Patents
用於同步處理器之分片 Download PDFInfo
- Publication number
- TW202111562A TW202111562A TW109128609A TW109128609A TW202111562A TW 202111562 A TW202111562 A TW 202111562A TW 109128609 A TW109128609 A TW 109128609A TW 109128609 A TW109128609 A TW 109128609A TW 202111562 A TW202111562 A TW 202111562A
- Authority
- TW
- Taiwan
- Prior art keywords
- blocks
- block
- layer
- candidate
- different
- Prior art date
Links
- 230000001360 synchronised effect Effects 0.000 title abstract description 11
- 239000011159 matrix material Substances 0.000 claims abstract description 38
- 238000000034 method Methods 0.000 claims abstract description 36
- 238000004590 computer program Methods 0.000 claims abstract description 14
- 238000012545 processing Methods 0.000 claims description 28
- 238000013467 fragmentation Methods 0.000 claims description 19
- 238000006062 fragmentation reaction Methods 0.000 claims description 19
- 239000000872 buffer Substances 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 4
- 238000013528 artificial neural network Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000014616 translation Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000000543 intermediate Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/82—Architectures of general purpose stored program computers data or demand driven
- G06F15/825—Dataflow computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
- G06F8/4451—Avoiding pipeline stalls
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/485—Resource constraint
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/506—Constraint
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Data Mining & Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
- Complex Calculations (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明揭示用於使具有多個同步塊之一裝置之資料流圖分片之方法、系統及設備,其等包含編碼於電腦儲存媒體上之電腦程式。該等方法之一者包含接收包括複數個節點之一資料流圖之一表示,該複數個節點各表示由具有複數個同步塊之一裝置執行之各自矩陣運算。根據該裝置之一或多個資源約束來評估該資料流圖之各自部分至該複數個同步塊之各塊之候選分配。基於評估各候選分配來選擇該等候選分配之一者。
Description
本說明書係關於用於積體電路加速器之編譯器技術。
一同步積體電路加速器係經設計用於執行高度並行同步操作之一專用積體電路(ASIC)。藉由整合可同時執行之諸多不同獨立處理元件來達成並行性。
此等裝置非常適合於使通過神經網路之推理遍次加速,例如,其中獨立處理元件之各者執行具有權重之層輸入之一不同乘法或加法。神經網路係採用多層操作來自一或多個輸入預測一或多個輸出之機器學習模型。神經網路通常包含位於一輸入層與一輸出層之間的一或多個隱藏層。各層之輸出用作網路中另一層(例如下一隱藏層或輸出層)之輸入。
一加速器可使用多個獨立處理塊。在本說明書中,一塊係指具有可對一矩陣之一部分至少部分並行執行運算之一單元運算陣列之任何適當裝置。因此,各單元包含允許該單元執行數學或其他運算之電路系統。在一典型方案中,一塊接收一輸入向量,使用運算陣列使輸入向量乘以一權重矩陣,且產生一輸出向量。
在本說明書中,一塊同步意謂由運算陣列執行之操作不執行分支執行,例如,如在一命令式程式之一if/else語句中般。確切而言,可部分或完全預先排定操作。例如,可將一些同步處理器之操作排定至個別循環級,其意謂運算陣列之每一處理元件之每一操作依執行循環之一序列被指派一特定時槽。
本說明書描述用於編譯為具有多個同步處理器之系統編寫之程式之技術。如上文所描述,為簡潔起見,本說明書中將此等裝置指稱塊。
一編譯器可利用可以其排定在多個同步處理器上執行之一程式之操作之循環級精度。此允許操作之精細分片及其他效能提高。本說明書中所描述之技術對操作一線性陣列中之多個塊之一系統中之排程操作特別有用,其中各塊僅與其線性陣列中之相鄰塊連通。然而,相同技術亦可用於缺少此硬體配置之系統中。
本說明書中所描述之標的之特定實施例可經實施以實現以下優點之一或多者。一編譯器可利用各種分片技術來提高具有多個運算塊之一裝置之效能。可使用分片技術來使在此一裝置上執行一任務適應裝置規格/約束。編譯器可使用子層分片來提高裝置之利用率。編譯器亦可使用平行四邊形時間切片來減少或消除其中塊因為其在等待某事發生而不執行任何工作之空閒區。一編譯器亦可使用過度分片來改良塊之間的負載平衡且處置在編譯時無法預測之負載平衡情形。一編譯器亦可使用鋸齒形分片來平衡塊之間的記憶體及運算需求。
附圖及以下描述中闡述本說明書之標的之一或多個實施例之細節。將自[實施方式]、圖式及申請專利範圍明白標的之其他特徵、態樣及優點。
圖1係用於使具有多個塊之一裝置之矩陣運算分片之一實例程序之一流程圖。如上文所描述,目標裝置可具有以一線性陣列配置或經組態以操作為一線性陣列之塊,其中各塊僅與其相鄰塊連通。因此,回應於接收一資料流圖,系統可產生圖之節點與塊之間的一分配,其考量線性陣列中塊之排序。為方便起見,實例程序將被描述為由位於一或多個位置中之一或多個電腦之一系統執行且根據本說明書適當程式化。
系統接收指定由具有複數個塊之一裝置執行之矩陣運算之一資料流圖之一表示(110)。在本發明中,矩陣運算應被理解為包含矩陣或向量運算。資料流圖之各節點指定對專用於該節點之一矩陣執行之矩陣運算。例如,圖中之各節點可表示一神經網路之一層,其中矩陣儲存該層待使用及待學習之權重。圖之各邊表示資料之一傳播,其中一節點之輸出變成下一節點之輸入。系統產生資料流圖之部分至複數個塊之各塊之複數個候選分配(120)。分片問題可用公式表示為一搜尋問題以自複數個候選分配中找到資料流圖之部分至裝置上之塊之一最佳分配。下文將更詳細描述與產生待評估候選者有關之各種技術。哪個候選分配實際上最好高度取決於資料流圖及特定應用。
系統根據裝置之一或多個資源約束來評估各候選分配(130)。重要資源約束包含記憶體約束及頻寬約束。
一機器學習加速器之一實例記憶體約束係指派給一特定塊之所有矩陣之所有權重必須適配於塊之本端靜態隨機存取記憶體(SRAM)中。換言之,各塊可具有整合數量之駐留SRAM,其在執行分片時變成一記憶體約束。此約束之原因涉及速度及頻寬。首先,一機器學習加速器經設計以儘快透過一模型執行一推理遍次。且針對一些應用,動態隨機存取記憶體(DRAM)不夠快。另外,矩陣之權重可能較大且因此難以四處移動。因此,當指派給一特定塊之所有矩陣之所有權重可適配於塊之本端SRAM中時,塊無需在推理遍次或訓練更新期間花時間讀取及寫入權重。
另一實例記憶體約束係一頻寬約束。頻寬約束指定資料必須多快地移動於圖之節點之間。若所提出之分配將超過圖中一特定邊之一頻寬臨限值,則系統可判定已違反頻寬約束。
系統基於評估各候選分配來選擇候選分配之一者(140)。作為一實例,系統可執行層分片,其中將來自一輸入程式之不同層之不同矩陣分配給不同各自塊。因此,例如,具有8個層之一神經網路可使其權重矩陣分別分配給8個塊。
針對滿足一或多個資源約束之候選分配,系統可判定哪個分配最好地最佳化裝置上塊之利用率。一般而言,此涉及運算所有塊上之最大運算時間量及接著選擇具有最小最大運算時間量之候選分配。針對具有同步塊之一裝置(其可預先排定至循環級),此等計算可比其他種類之裝置之編譯器估計精確得多。
在選擇候選分配之後,系統可藉由產生將由裝置之塊執行之硬體指令來執行資料流圖程式之進一步降低。接著,系統可使硬體指令與矩陣之權重一起載入至裝置上,且在裝置上執行硬體指令以完成由資料流圖表示之操作。
圖2A至圖2B繪示子層分片之實例。子層分片涉及分割資料流圖中之一特定節點之一矩陣及將不同部分指派給不同塊。圖2A繪示其中矩陣200之元素沿一對角線分割之一實例候選分割。圖2B繪示其中矩陣200之元素分割於行之間的另一實例候選分割。替代地或另外,矩陣200可分割於列之間。在一些實施方案中,每當一矩陣超過一大小臨限值時,系統使用子層分片來產生一候選分配。
為產生用於子層分片之一候選分配,需要將一些額外複雜性添加至資料流圖。特定言之,各層之向量輸入通常必須廣播至接收子層分片結果之一部分之每一塊。另外,由個別塊產生之部分和或激勵必須在一隨後階段合併至一相同塊或一不同塊上之一最終和或激勵中。編譯器可在評估涉及子層分片之一候選分配時考量此等額外複雜性。
圖3A至圖3C繪示平行四邊形時間切片之實例。當塊在具有不同執行斜率之不同遍次中執行某些操作時,平行四邊形時間切片可為有利的。執行斜率係指塊可多快地完全執行序列中之所有操作。此等應用常見於神經網路中,例如,通過所有塊之一單一遍次可表示通過網路之一推理遍次。
圖3A繪示由不同執行斜率引起之衝突。在圖3A中,橫軸表示時間。圖3A中之塊以一線性陣列結構配置,使得各塊可僅向其兩個緊鄰者提供資料且可僅自其兩個緊鄰者接收資料。在一些實施方案中,線性陣列結構環繞成(例如)一環形結構,使得最後塊可與第一塊連通,且反之亦然。
因此,塊首先自塊0開始直至塊7循序執行遍次A。遍次A具有機器學習模型之常見性質,因為各塊直至自前一塊接收一輸出才開始執行。因此,塊1必須等待塊0完成,塊2必須等待塊1完成,依此類推。
圖3A中之虛線繪示此常見模式如何形成遍次A之一平行四邊形。
圖3A亦繪示一第二遍次(遍次B)。遍次B之操作不像遍次A般花那麼多時間,因此,遍次B具有比遍次A更陡之一執行斜率。
在此實例中,遍次A及遍次B之不同執行斜率引起塊5與塊6之間的一衝突。發生衝突之原因係:至塊5完成遍次B時,塊6尚未完成遍次A之其部分。因此,必須由編譯器或一運行時間引入暫停301及302,其引起塊5等待提供遍次B之結果,直至塊6完成遍次A之操作。
圖3B繪示管理不同執行斜率之一替代策略,其係在遍次B開始之前就引入一單一暫停303,使得可在遍次A之最後操作之後立即執行遍次B在塊7上之最後操作。
此等兩種策略導致其中塊空閒不做任何工作之空閒區310及320。空閒區310小於空閒區320,但引入多個暫停引入圖3B中之策略不存在之額外編譯時間或運行時間控制複雜性。
圖3C繪示不同執行斜率可如何實際引入額外空閒區。在圖3C中,具有一更陡執行斜率之遍次B導致一第一空閒區330。但若要在遍次B之後再次執行遍次A,則此引入一第二空閒區340。
圖3D繪示如何使用平行四邊形時間切片來管理不同執行斜率。為減小由不同執行斜率引入之空閒區,編譯器可產生迫使所有遍次實際上具有相同執行斜率之一排程。因此,不同遍次實際上適配在一起以消除空閒區。
編譯器可使用暫停或緩衝來促成一較平緩執行斜率。例如,如圖3D中所展示,已藉由在不同塊之間引入緩衝來降低遍次B之執行斜率。換言之,在塊0完成遍次B之後,將結果儲存於一緩衝區360中。接著,塊0可立即開始處理遍次A之第二反覆。替代地或另外,編譯器可在結束遍次B與開始遍次A之第二反覆之間插入一暫停。應注意,儘管此解決方案比圖3A中所展示之方法引入更多暫停,但總空閒區實質上較小。
促成一平緩執行斜率引入編譯器在評估候選分配時要考量之額外控制複雜性。特定言之,所促成之平緩執行斜率引入某些遍次之一時序約束。例如,在圖3D中,時序約束係塊1上之遍次B無法在塊0上之遍次B之後立即開始。
圖4A至圖4C繪示過度分片之實例。過度分片係指用於比硬體所需更精細地使一矩陣分片之技術。換言之,運算可由一單一塊執行,但由於其他原因,無論如何還是使矩陣分片了。通常,該等其他原因與負載平衡有關。
圖4A繪示在8個塊上執行具有9個層之一單一遍次A。因此,在此實例中,第9層被完全分配給塊0。儘管塊0具有完全執行第9層之所有操作之可用性及記憶體容量,但此使塊之剩餘者在此期間完全不被佔用。
圖4B繪示遍次A之第9層之過度分片。換言之,即使一單一塊可執行第9層之所有操作,但第9層經過度分片以使其跨所有8個其他塊分佈。可能存在或可能不存在一層內資料相依性,因此,第9層之不同部分可被部分或完全並行執行。
因此,裝置具有比僅一個塊執行第9層更佳之負載平衡。此可在裝置亦執行其他運算時特別有利。
圖4C繪示用於處置運行時間負載平衡之過度分片之另一應用。一些應用無法預先知道塊上之運行時間負載。一此實例係裝置可用於提供使用針對不同轉譯所訓練之大量不同模型之自動機器轉譯。例如,如圖4C之左邊所展示,可指派塊0執行模型A,可指派塊1執行模型B,依此類推。然而,在編譯時(尤其在裝置用於服務輸入網際網路流量之一後端伺服器中時)不知道使用此等模型之實際順序。
因此,情況可為塊0處置絕大部分請求,而其他塊很少被使用。
為提供一些運行時間負載平衡,編譯器可使模型過度分片且將所有模型分佈於所有晶片上,如圖4C之右邊所展示。
此時,在運行時間,所有塊可具有實質上相等利用率,不管運行時間負載之實際分佈如何。
圖5A至圖5C繪示指稱鋸齒形分片之另一型式之過度分片之實例。針對包含神經網路之諸多機器學習應用,出現一常見模式:層具有降低運算複雜性但增加記憶體需求。
因此,如圖5A中所展示,記憶體模式可導致各後續塊需要越來越多記憶體。且如圖5B中所展示,運算模式需要越來越少運算資源。
一編譯器可使用鋸齒形分片,使得所有塊具有更平衡記憶體及運算指派。鋸齒形分片基本上將不同互補層配對在一起,使得其等由相同塊執行。因此,例如,鋸齒形分片可確保相同塊將執行第一層及第八層、第二層及第七層、第三層及第六層及第四層及第五層。此分配展示於圖5C中,其中運算模式呈一鋸齒形形狀。
如圖5C中所展示,第一層(層1)經過度分片且分佈於塊0至塊3中以分割第一層之運算複雜性。依一類似但互補方式,第八層亦經分割且分佈於相同塊0至塊3中以分割第八層之記憶體需求。
同樣地,第二層總是指派給相同於第七層之塊,第三層總是指派給相同於第六層之塊,且第四層總是指派給相同於第五層之塊。
上文相對於圖2至圖4所描述之分片技術之各實例可各單獨或與其他分片技術之任何一或多者組合使用。
圖6繪示可用於實施具有多個同步處理器之一系統中之處理之一塊600之一實例。例如,塊600可用作塊之一線性陣列或其中塊操作為塊之一線性陣列之一系統中之一塊。
各塊600包含本端記憶體602及耦合至記憶體602之一運算陣列604。本端記憶體602包含定位於運算陣列604附近之實體記憶體。運算陣列604包含多個單元606。運算陣列604之各單元606包含經組態以基於至單元606之資料輸入(諸如激勵輸入及權重輸入)執行一運算(例如一乘法及累加運算)之電路系統。各單元可在時脈信號之一循環上執行運算(例如乘法及累加運算)。運算陣列604可具有比行多之列、比列多之行或相等數目個行及列。例如,在圖6所展示之實例中,運算陣列604包含配置成8個列×8個行之64個單元。其他運算陣列大小亦可行,諸如具有16個單元、32個單元、128個單元或256個單元之運算陣列。各塊可包含相同數目個單元及/或相同大小運算陣列。
塊600中所含之記憶體602可包含(例如)隨機存取記憶體(RAM),諸如SRAM。各記憶體602可經組態以儲存與具有多個塊之一系統之n個塊502相關聯之總記憶體之1/n。記憶體602可經提供為一單一晶片或提供於多個晶片中。例如,圖6中所展示之記憶體602經提供為四個單埠SRAM,其等之各者耦合至運算陣列604。替代地,記憶體602可經提供為兩個單埠SRAM或八個單埠SRAM及其他組態。在錯誤校正編碼之後,記憶體之共同容量可為(但不限於)(例如) 16kB、32kB、64kB或128kB。可藉由將實體記憶體602本端提供給運算陣列來極大降低佈線之密度。
塊600亦包含可控匯流排線。可控匯流排線可分類為多個不同群組。例如,可控匯流排線可包含一第一群組之通用可控匯流排線610,其經組態以在各基本方向上傳送資料於塊之間。即,第一群組之可控匯流排線610可包含:匯流排線610a,其經組態以沿塊網格之第一維度101朝向一第一方向(圖6中指稱「向東」)傳送資料;匯流排線610b,其經組態以沿塊網格之第一維度101朝向一第二方向(圖6中指稱「向西」)傳送資料,其中第二方向與第一方向之方向相反;匯流排線610c,其經組態以沿塊網格之第二維度103朝向一第三方向(圖6中指稱「向北」)傳送資料;及匯流排線610d,其經組態以沿塊網格之第二維度103朝向一第四方向(圖6中指稱「向南」)傳送資料,其中第四方向與第三方向相反。通用匯流排線610可經組態以載送控制資料、激勵輸入資料、來自及/或至通信介面之資料、來自及/或至向量處理單元之資料及由塊600儲存及/或使用之資料(例如權重輸入)。塊600可包含用於控制可控匯流排線且因此使資料路由至塊600及/或記憶體602及/或自塊600及/或記憶體602路由資料之一或多個控制元件621 (例如正反器及多工器)。
可控匯流排線亦可包含一第二群組之可控匯流排線,本文中指稱運算陣列部分和匯流排線620。運算陣列部分和匯流排線620可經組態以載送自由運算陣列604執行之運算輸出之資料。例如,匯流排線620可經組態以載送自運算陣列604中之列獲得之部分和資料,如圖6中所展示。在此情況中,匯流排線620之數目將匹配陣列604中之列數。例如,針對一8×8運算陣列,將存在8個部分和匯流排線620,其等之各者耦合至運算陣列604中之一對應列之輸出。運算陣列輸出匯流排線620可進一步經組態以耦合至系統內之另一塊,例如作為塊之一線性陣列中之一相鄰塊之一運算陣列之輸入。例如,塊600之陣列部分和匯流排線620可經組態以接收一第二塊之一運算陣列之輸入(例如部分和620a),該第二塊經定位成與塊600相距至少一塊。接著,將運算陣列604之輸出添加至部分和線620以產生新部分和620b,其可自塊600輸出。接著,部分和620b可經傳遞至另一塊或替代地經傳遞至一向量處理單元。例如,各匯流排線620可耦合至向量處理單元之一對應片段(諸如圖5中之片段506)。
本說明書中所描述之標的及功能操作之實施例可經實施於數位電子電路系統、經有形體現之電腦軟體或韌體、電腦硬體(其包含本說明書中所揭示之結構及其結構等效物)或其等之一或多者之組合中。本說明書中所描述之標的之實施例可經實施為一或多個電腦程式,即,編碼於一有形非暫時性儲存媒體上以由資料處理設備執行或控制資料處理設備之操作之電腦程式指令之一或多個模組。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合。替代地或另外,程式指令可編碼於一人工產生之傳播信號(例如一機器產生之電、光學或電磁信號)上,該人工產生之傳播信號經產生以編碼用於傳輸至適合接收器設備以由一資料處理設備執行之資訊。
術語「資料處理設備」係指資料處理硬體且涵蓋用於處理資料之各種設備、裝置及機器,其包含(舉例而言)一可程式化處理器、一電腦或多個處理器或電腦。設備亦可為或進一步包含專用邏輯電路系統,例如一FPGA (場可程式化閘陣列)或一ASIC (專用積體電路)。除硬體之外,設備亦可視情況包含針對電腦程式產生一執行環境之程式碼,例如構成處理器韌體、一協定堆疊、一資料庫管理系統、一作業系統或其等之一或多者之一組合之程式碼。
一電腦程式(其亦可指稱或經描述為一程式、軟體、一軟體應用程式、一app、一模組、一軟體模組、一指令碼或程式碼)可依任何形式之程式撰寫語言(其包含編譯或解譯語言或宣告或程序語言)編寫,且其可依任何形式部署,包含作為一獨立程式或作為適合用於一運算環境中之一模組、組件、子常式或其他單元。一程式可(但未必)對應於一檔案系統中之一檔案。一程式可儲存於保存其他程式或資料之一檔案之一部分中,例如儲存於一標記語言文件、專用於所討論之程式之一單一檔案或多個協調檔案(例如儲存一或多個模組、子程式或程式碼之部分之檔案)中之一或多個指令碼。一電腦程式可經部署以在一個電腦上或在定位於一個地點處或跨多個地點分佈且由一資料通信網路互連之多個電腦上執行。
一或多個電腦之一系統經組態以執行特定操作或動作意謂系統上已安裝在操作中引起系統執行操作或動作之軟體、韌體、硬體或其等之一組合。一或多個電腦程式經組態以執行特定操作或動作意謂一或多個程式包含在由資料處理設備執行時引起設備執行操作或動作之指令。
如本說明書中所使用,一「引擎」或「軟體引擎」係指提供不同於輸入之一輸出之一軟體實施之輸入/輸出系統。一引擎可為一經編碼之功能區塊,諸如一程式庫、一平台、一軟體開發套件(「SDK」)或一物件。各引擎可經實施於包含一或多個處理器及電腦可讀媒體之任何適當類型之運算裝置(例如伺服器、行動電話、平板電腦、筆記型電腦、音樂播放器、電子書閱讀器、膝上型或桌上型電腦、PDA、智慧型電話或其他固定或可攜式裝置)上。另外,兩個或更多個引擎可經實施於相同運算裝置或不同運算裝置上。
本說明書中所描述之程序及邏輯流程可由執行一或多個電腦程式以藉由操作輸入資料且產生輸出來執行功能之一或多個可程式化電腦執行。程序及邏輯流程亦可由專用邏輯電路系統(例如一FPGA或一ASIC)或專用邏輯電路系統及一或多個程式化電腦之一組合執行。
適合於執行一電腦程式之電腦可基於通用或專用微處理器或兩者或任何其他種類之中央處理單元。一般而言,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之基本元件係用於執行(performing)或執行(executing)指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。中央處理單元及記憶體可由專用邏輯電路系統補充或併入至專用邏輯電路系統中。一般而言,一電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如磁碟、磁光碟或光碟)或經可操作地耦合以自該一或多個大容量儲存裝置接收資料或將資料傳送至該一或多個大容量儲存裝置或兩者。然而,一電腦未必具有此等裝置。此外,一電腦可嵌入於例如以下各者之另一裝置中:一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放器、一遊戲機、一全球定位系統(GPS)接收器或一可攜式儲存裝置(例如一通用串列匯流排(USB)快閃碟)等等。
適合於儲存電腦程式指令及資料之電腦可讀媒體包含所有形式之非揮發性記憶體、媒體及記憶體裝置,其包含(舉例而言):半導體記憶體裝置,例如EPROM、EEPROM及快閃記憶體裝置;磁碟,例如內部硬碟或可抽換式磁碟;磁光碟;及CD-ROM及DVD-ROM磁碟。
為提供與一使用者之互動,可在具有用於將資訊顯示給使用者之一顯示裝置(例如一CRT (陰極射線管)或LCD (液晶顯示器)監視器)及一鍵盤及指標裝置(例如一滑鼠、軌跡球或一存在敏感顯示器或使用者可藉由其將輸入提供至電腦之其他表面)之一電腦上實施本說明書中所描述之標的之實施例。其他種類之裝置亦可用於提供與一使用者之互動;例如,提供給使用者之回饋可為任何形式之感覺回饋,例如視覺回饋、聽覺回饋或觸覺回饋;及來自使用者之輸入可依任何形式接收,其包含聲波、語音或觸覺輸入。另外,一電腦可藉由將文件發送至由一使用者使用之一裝置且自該裝置接收文件(例如,藉由回應於自一使用者之裝置上之一網頁瀏覽器接收之請求而將網頁發送至該網頁瀏覽器)來與使用者互動。而且,一電腦可藉由將文字訊息或其他形式之訊息發送至一個人裝置(例如一智慧型電話)、運行一傳訊應用程式及反過來自一使用者接收回應訊息來與使用者互動。
本說明書中所描述之標的之實施例可經實施於包含一後端組件(例如作為一資料伺服器)或包含一中間軟體組件(例如一應用程式伺服器)或包含一前端組件(例如具有一圖形使用者介面、一網頁瀏覽器或一使用者可透過其與本說明書中所描述之標的之一實施方案互動之一app之一用戶端電腦)或包含一或多個此等後端、中間軟體或前端組件之任何組合之一電腦系統中。系統之組件可由任何形式或媒體之數位資料通信(例如一通信網路)互連。通信網路之實例包含一區域網路(LAN)及一廣域網路(WAN),例如網際網路。
運算系統可包含用戶端及伺服器。一用戶端及伺服器一般彼此遠離且通常透過一通信網路互動。用戶端與伺服器之關係由運行於各自電腦上且彼此具有一用戶端-伺服器關係之電腦程式引起。在一些實施例中,一伺服器將資料(例如一HTML頁)傳輸至一使用者裝置以(例如)將資料顯示給與裝置互動之一使用者(其充當一用戶端)及自該使用者接收使用者輸入。可在伺服器處自裝置接收使用者裝置處所產生之資料,例如使用者互動之一結果。
除上述實施例之外,以下實施例亦具創新性:
實施例1係一種方法,其包括:
接收包括複數個節點之一資料流圖之一表示,該複數個節點各表示由具有複數個同步塊之一裝置執行之各自矩陣運算;
產生該資料流圖之各自部分至該複數個同步塊之各塊之複數個候選分配;
根據該裝置之一或多個資源約束來評估該複數個候選分配之各候選分配;及
基於評估各候選分配來選擇該等候選分配之一者。
實施例2係實施例1之方法,其中該複數個同步塊之各塊包括獨立處理元件之一運算陣列。
實施例3係實施例1至2中任一者之方法,其中根據一或多個資源約束來產生該複數個候選分配包括根據一SRAM記憶體約束來產生該等候選分配,該SRAM記憶體約束指定該等相關聯運算之所有權重必須適配於該對應同步塊本端之一本端SRAM中。
實施例4係實施例3之方法,其中各本端SRAM係整合至將執行該等運算之該相同同步塊中之駐留記憶體。
實施例5係實施例1至4中任一者之方法,其中產生該複數個候選分配包括將不同各自層之矩陣分配給不同各自塊。
實施例6係實施例1至5中任一者之方法,其中產生該複數個候選分配包括對該程式中之一特定節點之一矩陣執行子層分片,該執行包含將該矩陣之不同區塊分配給不同各自同步塊。
實施例7係實施例6之方法,其中將該矩陣之不同區塊分配給不同各自同步塊包括沿一列或行分割該矩陣或沿對角線分割該矩陣。
實施例8係實施例7之方法,其中該等運算進一步包括對超過一大小臨限值之任何矩陣執行子層分片。
實施例9係實施例1至8中任一者之方法,其中產生該複數個候選分配包括執行平行四邊形時間切片,使得具有初始不同執行斜率之不同遍次具有一實質上類似執行斜率。
實施例10係實施例9之方法,其中執行平行四邊形時間切片包括:
運算兩個不同遍次之各者之一各自執行斜率;
判定一第一遍次具有小於一第二遍次之一執行斜率;及
作為回應,修改該候選分配,使得該第一遍次具有一更平緩執行斜率。
實施例11係實施例10之方法,其中修改該候選分配包括將緩衝或暫停插入至該候選分配中。
實施例12係實施例1至11中任一者之方法,其中產生該複數個候選分配包括執行過度分片,使得可完全由該等塊之一者執行之該資料流圖之一節點分割於多個不同塊之間。
實施例13係實施例12之方法,其中執行過度分片包括將一各自層指派給各塊及在所有該等塊之間分割一最後層。
實施例14係實施例12之方法,其中執行過度分片包括跨所有該等塊分割複數個矩陣。
實施例15係實施例1至14中任一者之方法,其中產生該複數個候選分配包括藉由將具有不同記憶體及運算需求之不同層配對在一起來執行鋸齒形分片。
實施例16係實施例15之方法,其中將不同層配對在一起包括將一第一層與一最後層配對,使得一相同塊執行該第一層及該最後層兩者。
實施例17係實施例16之方法,其中該第一層具有最大運算需求且該最後層具有最大記憶體需求。
實施例18係實施例1至17中任一者之方法,其中該等塊以一線性陣列配置,使得各塊經組態以將資料提供至僅一個或兩個相鄰塊。
實施例19係一種系統,其包括一或多個電腦及儲存指令之一或多個儲存裝置,該等指令可在由該一或多個電腦執行時操作以引起該一或多個電腦執行實施例1至18中任一者之方法。
實施例20係一種由一電腦程式編碼之電腦儲存媒體,該程式包括指令,該等指令可在由資料處理設備執行時操作以引起該資料處理設備執行實施例1至18中任一者之方法。
儘管本說明書含有諸多特定實施細節,但此等不應被解釋為對任何發明之範疇或可主張內容之範疇之限制,而是應被解釋為可專用於特定發明之特定實施例之特徵之描述。本說明書之單獨實施例之內文中所描述之某些特徵亦可組合實施於一單一實施例中。相反地,一單一實施例之內文中所描述之各種特徵亦可單獨或以任何適合子組合實施於多個實施例中。此外,儘管上文可將特徵描述為作用於某些組合且甚至最初如此主張,但來自一主張組合之一或多個特徵可在一些情況中自組合刪去,且主張組合可涉及一子組合或一子組合之變動。
類似地,儘管圖式中依一特定順序描繪操作,但此不應被理解為要求依所展示之特定順序或依循序順序執行此等操作或執行所有繪示操作以達成所要結果。在某些情境中,多任務處理及並行處理可為有利的。此外,上述實施例中之各種系統模組及組件之分離不應被理解為在所有實施例中需要此分離,而是應瞭解,所描述之程式組件及系統一般可一起整合於一單一軟體產品中或封裝至多個軟體產品中。
已描述標的之特定實施例。其他實施例係在以下申請專利範圍之範疇內。例如,申請專利範圍中所列舉之動作可依一不同順序執行且仍達成所要結果。作為一實例,附圖中所描繪之程序未必需要所展示之特定順序或循序順序來達成所要結果。在某些情況中,多任務處理及並行處理可為有利的。
101:第一維度
103:第二維度
110:接收指定由具有複數個塊之一裝置執行之矩陣運算之一資料流圖之一表示
120:產生資料流圖之部分至複數個塊之各塊之複數個候選分配
130:根據裝置之一或多個資源約束來評估各候選分配
140:基於評估各候選分配來選擇候選分配之一者
200:矩陣
301:暫停
302:暫停
303:暫停
310:空閒區
320:空閒區
330:第一空閒區
340:第二空閒區
360:緩衝區
502:塊
506:片段
600:塊
602:本端記憶體
604:運算陣列
606:單元
610:可控匯流排線
610a:匯流排線
610b:匯流排線
610c:匯流排線
610d:匯流排線
620:運算陣列部分和匯流排線
620a:部分和
620b:部分和
621:控制元件
圖1係用於使具有多個塊之一裝置之矩陣運算分片之一實例程序之一流程圖。
圖2A至圖2B繪示子層分片之實例。
圖3A至圖3D繪示平行四邊形時間切片之實例。
圖4A至圖4C繪示過度分片之實例。
圖5A至圖5C繪示指稱鋸齒形分片之另一型式之過度分片之實例。
圖6繪示可用於實施具有多個同步處理器之一系統中之處理之一塊之一實例。
各種圖式中之相同元件符號及名稱指示相同元件。
110:接收指定由具有複數個塊之一裝置執行之矩陣運算之一資料流圖之一表示
120:產生資料流圖之部分至複數個塊之各塊之複數個候選分配
130:根據裝置之一或多個資源約束來評估各候選分配
140:基於評估各候選分配來選擇候選分配之一者
Claims (20)
- 一種系統,其包括: 一或多個電腦及儲存指令之一或多個儲存裝置,該等指令可在由該一或多個電腦執行時操作以引起該一或多個電腦執行包括以下之操作: 接收包括複數個節點之一資料流圖之一表示,該複數個節點各表示由具有複數個同步塊之一裝置執行之各自矩陣運算; 產生該資料流圖之各自部分至該複數個同步塊之各塊之複數個候選分配; 根據該裝置之一或多個資源約束來評估該複數個候選分配之各候選分配;及 基於評估各候選分配來選擇該等候選分配之一者。
- 如請求項1之系統,其中該複數個同步塊之各塊包括獨立處理元件之一運算陣列。
- 如請求項1之系統,其中根據一或多個資源約束來產生該複數個候選分配包括根據一SRAM記憶體約束來產生該等候選分配,該SRAM記憶體約束指定該等相關聯運算之所有權重必須適配於該對應同步塊本端之一本端SRAM中。
- 如請求項3之系統,其中各本端SRAM係整合至將執行該等運算之該相同同步塊中之駐留記憶體。
- 如請求項1之系統,其中產生該複數個候選分配包括將不同各自層之矩陣分配給不同各自塊。
- 如請求項1之系統,其中產生該複數個候選分配包括對該程式中之一特定節點之一矩陣執行子層分片,該執行包含將該矩陣之不同區塊分配給不同各自同步塊。
- 如請求項6之系統,其中將該矩陣之不同區塊分配給不同各自同步塊包括沿一列或行分割該矩陣或沿對角線分割該矩陣。
- 如請求項7之系統,其中該等運算進一步包括對超過一大小臨限值之任何矩陣執行子層分片。
- 如請求項1之系統,其中產生該複數個候選分配包括執行平行四邊形時間切片,使得具有初始不同執行斜率之不同遍次具有一實質上類似執行斜率。
- 如請求項9之系統,其中執行平行四邊形時間切片包括: 運算兩個不同遍次之各者之一各自執行斜率; 判定一第一遍次具有小於一第二遍次之一執行斜率;及 作為回應,修改該候選分配,使得該第一遍次具有一更平緩執行斜率。
- 如請求項10之系統,其中修改該候選分配包括將緩衝或暫停插入至該候選分配中。
- 如請求項1之系統,其中產生該複數個候選分配包括執行過度分片,使得可完全由該等塊之一者執行之該資料流圖之一節點分割於多個不同塊之間。
- 如請求項12之系統,其中執行過度分片包括將一各自層指派給各塊及在所有該等塊之間分割一最後層。
- 如請求項12之系統,其中執行過度分片包括跨所有該等塊分割複數個矩陣。
- 如請求項1之系統,其中產生該複數個候選分配包括藉由將具有不同記憶體及運算需求之不同層配對在一起來執行鋸齒形分片。
- 如請求項15之系統,其中將不同層配對在一起包括將一第一層與一最後層配對,使得一相同塊執行該第一層及該最後層兩者。
- 如請求項16之系統,其中該第一層具有最大運算需求且該最後層具有最大記憶體需求。
- 如請求項1之系統,其中該等塊以一線性陣列配置,使得各塊經組態以將資料提供至僅一個或兩個相鄰塊。
- 一種方法,其包括執行如請求項1至18中任一項之操作。
- 一種由一電腦程式編碼之電腦儲存媒體,該程式包括指令,該等指令可在由資料處理設備執行時操作以引起該資料處理設備執行如請求項1至18中任一項之方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962890471P | 2019-08-22 | 2019-08-22 | |
US62/890,471 | 2019-08-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202111562A true TW202111562A (zh) | 2021-03-16 |
TWI776212B TWI776212B (zh) | 2022-09-01 |
Family
ID=72474370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109128609A TWI776212B (zh) | 2019-08-22 | 2020-08-21 | 用於積體電路加速器之系統、方法及電腦儲存媒體 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20220300450A1 (zh) |
EP (1) | EP3987394A1 (zh) |
JP (2) | JP7423757B2 (zh) |
KR (1) | KR20220031717A (zh) |
CN (1) | CN114270307A (zh) |
TW (1) | TWI776212B (zh) |
WO (1) | WO2021035055A1 (zh) |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AUPQ131399A0 (en) * | 1999-06-30 | 1999-07-22 | Silverbrook Research Pty Ltd | A method and apparatus (NPAGE02) |
US5682107A (en) * | 1994-04-01 | 1997-10-28 | Xilinx, Inc. | FPGA architecture with repeatable tiles including routing matrices and logic matrices |
TWI353521B (en) * | 2006-09-28 | 2011-12-01 | Sandisk Corp | Soft-input soft-output decoder for nonvolatile mem |
US8862625B2 (en) * | 2008-04-07 | 2014-10-14 | Teradata Us, Inc. | Accessing data in a column store database based on hardware compatible indexing and replicated reordered columns |
JP5036523B2 (ja) * | 2007-12-21 | 2012-09-26 | 三菱電機株式会社 | プログラム並列化装置 |
US9176794B2 (en) * | 2010-12-13 | 2015-11-03 | Advanced Micro Devices, Inc. | Graphics compute process scheduling |
KR101497516B1 (ko) * | 2010-12-29 | 2015-03-02 | 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 | 디렉토리 기반의 멀티코어 아키텍처 상에서 캐시 상태 전송의 가속화 |
JP5798378B2 (ja) * | 2011-05-30 | 2015-10-21 | キヤノン株式会社 | 装置、処理方法、およびプログラム |
US9507563B2 (en) * | 2013-08-30 | 2016-11-29 | Cavium, Inc. | System and method to traverse a non-deterministic finite automata (NFA) graph generated for regular expression patterns with advanced features |
CN105630441B (zh) * | 2015-12-11 | 2018-12-25 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于统一染色技术的gpu系统 |
US10402527B2 (en) * | 2017-01-04 | 2019-09-03 | Stmicroelectronics S.R.L. | Reconfigurable interconnect |
US10387298B2 (en) * | 2017-04-04 | 2019-08-20 | Hailo Technologies Ltd | Artificial neural network incorporating emphasis and focus techniques |
CN111247513B (zh) * | 2017-04-17 | 2021-10-08 | 迪普西格有限公司 | 无线电信号处理数据流操作的放置与调度 |
US10452452B2 (en) * | 2017-04-17 | 2019-10-22 | Wave Computing, Inc. | Reconfigurable processor fabric implementation using satisfiability analysis |
US11232347B2 (en) * | 2017-04-17 | 2022-01-25 | Cerebras Systems Inc. | Fabric vectors for deep learning acceleration |
US10380063B2 (en) * | 2017-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator |
-
2020
- 2020-08-20 JP JP2022511309A patent/JP7423757B2/ja active Active
- 2020-08-20 EP EP20771947.7A patent/EP3987394A1/en active Pending
- 2020-08-20 KR KR1020227004916A patent/KR20220031717A/ko not_active Application Discontinuation
- 2020-08-20 US US17/636,805 patent/US20220300450A1/en active Pending
- 2020-08-20 CN CN202080058480.0A patent/CN114270307A/zh active Pending
- 2020-08-20 WO PCT/US2020/047206 patent/WO2021035055A1/en unknown
- 2020-08-21 TW TW109128609A patent/TWI776212B/zh active
-
2024
- 2024-01-17 JP JP2024005431A patent/JP2024040198A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20220031717A (ko) | 2022-03-11 |
EP3987394A1 (en) | 2022-04-27 |
TWI776212B (zh) | 2022-09-01 |
US20220300450A1 (en) | 2022-09-22 |
WO2021035055A1 (en) | 2021-02-25 |
JP2024040198A (ja) | 2024-03-25 |
JP2022544842A (ja) | 2022-10-21 |
JP7423757B2 (ja) | 2024-01-29 |
CN114270307A (zh) | 2022-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10373053B2 (en) | Stream-based accelerator processing of computational graphs | |
JP7094262B2 (ja) | 計算グラフの修正 | |
US11769061B2 (en) | Processing computational graphs | |
Kang et al. | Lalarand: Flexible layer-by-layer cpu/gpu scheduling for real-time dnn tasks | |
TWI827792B (zh) | 多路徑神經網路、資源配置的方法及多路徑神經網路分析器 | |
US10956225B2 (en) | Scalable computation and communication methods for domain decomposition of large-scale numerical simulations | |
Fan et al. | An effective approximation algorithm for the malleable parallel task scheduling problem | |
Obaida et al. | Simulation of HPC job scheduling and large-scale parallel workloads | |
Beaumont et al. | Comparison of static and runtime resource allocation strategies for matrix multiplication | |
Davidović et al. | Parallel local search to schedule communicating tasks on identical processors | |
Nasr et al. | Task scheduling algorithm for high performance heterogeneous distributed computing systems | |
Dietze et al. | Water-level scheduling for parallel tasks in compute-intensive application components | |
TW202111562A (zh) | 用於同步處理器之分片 | |
Kumar et al. | Global analysis of resource arbitration for MPSoC | |
Qiao et al. | An online workflow scheduling algorithm considering license limitation in heterogeneous environment | |
US11928500B1 (en) | Multi-threaded network routing based on partitioning | |
Cao | Performance Optimization of Big Data Computing Workflows for Batch and Stream Data Processing in Multi-Clouds | |
Zhengda | Online Evolutionary Batch Size Orchestration for Scheduling Deep Learning Workloads in GPU Clusters | |
Uwizeyimana | Tackling Resource Utilization in Deep Neural Network Accelerators | |
Mendonca | Multi-purpose Efficient Resource Allocation for Parallel Systems | |
i Igual | Schedulability analysis of limited-preemptive moldable gang tasks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |