TWI827792B - 多路徑神經網路、資源配置的方法及多路徑神經網路分析器 - Google Patents
多路徑神經網路、資源配置的方法及多路徑神經網路分析器 Download PDFInfo
- Publication number
- TWI827792B TWI827792B TW109102329A TW109102329A TWI827792B TW I827792 B TWI827792 B TW I827792B TW 109102329 A TW109102329 A TW 109102329A TW 109102329 A TW109102329 A TW 109102329A TW I827792 B TWI827792 B TW I827792B
- Authority
- TW
- Taiwan
- Prior art keywords
- neural network
- path
- multipath
- computing resource
- resource configuration
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 201
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000012545 processing Methods 0.000 claims abstract description 22
- 230000006870 function Effects 0.000 claims description 16
- 230000005540 biological transmission Effects 0.000 claims 2
- 230000001364 causal effect Effects 0.000 description 17
- 238000004458 analytical method Methods 0.000 description 12
- 238000013468 resource allocation Methods 0.000 description 8
- 238000000638 solvent extraction Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000011176 pooling Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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
-
- 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/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本發明提供一種多路徑神經網路、資源配置的方法及多路徑神經網路分析器。所述資源配置的方法可使用包含介面和處理裝置的多路徑神經網路分析器來最優地分配到多路徑神經網路。介面接收多路徑神經網路。處理裝置生成多路徑神經網路,以包含通過多路徑神經網路的關鍵路徑的一或多個層,所述一或多個層分配有可用以執行多路徑神經網路的第一計算資源配置。關鍵路徑限制多路徑神經網路的輸送量。第一計算資源配置將多路徑神經網路的執行時間減少到小於用於多路徑神經網路的第二計算資源配置的基線執行時間。用於關鍵路徑的第一層的第一計算資源配置不同於用於關鍵路徑的第一層的第二計算資源配置。
Description
本申請要求2019年1月23日申請的美國臨時申請第62/796,071號的優先權,所述臨時申請的揭露內容以全文引用的方式併入本文中。此外,本申請與美國專利申請序號(代理人案號第1535-479號)並行申請,所述美國專利申請的揭露內容以全文引用的方式併入本文中。
本文中所揭露的主題涉及神經網路。更具體地說,本文中所揭露的主題涉及用於在多路徑神經網路的不同路徑中將計算資源配置到不同層的系統和方法。
典型的圖形處理單元(graphic processing unit;GPU)平臺並不允許GPU操作的並存執行。為在典型GPU上並行地啟
動多個操作,每一操作必須指派給單獨執行器,也就是說,統一計算架構(Compute Unified Device Architecture;CUDA)程式化模型中的單獨串流。然而,針對大部分風行GPU內核並行地運行兩個或大於兩個GPU內核是幾乎不可能的。風行內核佔據所有GPU核心資源(包含暫存器和共用記憶體)且並未允許GPU調度程式執行來自同一核心上的另一內核的區塊。當前的GPU平臺依賴于用於調度安排的多個區塊,且另一GPU操作的並存執行可僅在區塊的數目低時為可能的。由於大部分GPU內核通常具有足夠的區塊數以佔據所有可用的GPU核心,另一GPU內核的執行被推遲直到第一內核完成之後為止,引起兩個操作的依序執行。因此,當前的GPU平臺利用用於個別層(內核)的裝置(例如GPU)核心的100%,進而阻止獨立內核的並存執行。
與當前GPU平臺相關的另一薄弱環節是低效資源利用率。雖然GPU內核可針對在特定輸入和GPU微架構上的性能優化,但計算效率和DRAM利用率並未針對用於一些輸入的多種GPU演算法充分優化。舉例來說,一些卷積(主要是通用矩陣乘法(General Matrix Multiplication,GEMM)類)的執行時間在有限數目的核心的情況下飽和,且在額外的核心上執行卷積引起核心的利用率不足。通過並行地運行多個操作,在一個GPU操作中利用率不足的資源可用於考慮演算法、輸入資料、資料佈局以及微架構的另一GPU操作。
與當前GPU平臺相關的另一薄弱環節為現有的GPU平臺按照GPU裝置如何接收操作的順序依序執行操作,將此優先化
以減少較早請求操作的延遲。此調度方法可增加針對多個應用的GPU操作的平均延遲。舉例來說,如果花費大量的時間來完成的GPU操作在花費較少的時間來完成的另一GPU操作到達之前到達GPU裝置,那麼第二次GPU操作的延遲(或回應時間)變得不必要的過長。
與當前GPU平臺相關的又一薄弱環節是當前GPU平臺並未針對具有多個路徑的工作負荷優化。GPU工作負荷可形成定向非循環圖表(directed acyclic graph;DAG),其中每一節點表示操作且從節點A到節點B的定向邊緣表示在節點A與節點B之間的輸入-輸出依賴性;也就是說,節點B必須在節點A之後執行。近年來,具有多路徑計算圖的GPU工作負荷已變得普遍。多路徑工作負荷可能從由單個使用者、由共用GPU平臺的多個使用者或由具有多個路徑的單個GPU應用啟動的不同GPU應用出現。多路徑神經網路為具有多個路徑的單個GPU應用的實例。
多路徑神經網路在機器學習(the machine learning;ML)領域中通過作為現實世界ML問題的較好表示已獲得大量關注。通常,針對平行的神經網路路徑,將存在可稱為限制總體神經網路的輸送量的關鍵路徑的一個路徑。通過神經網路的訊號串流可以表徵為通過一連串的依賴層的訊號串流。通常,當執行神經網路時,以依序反覆運算執行層,其中給定層的輸入取決於在序列中的立即前一層的輸出。
當前深度學習框架並未配置成基於在不同路徑或運行的不同路徑的內核之間的資源配置,優化多路徑神經網路的執行。如果需要執行內核的總體工作空間記憶體比執行神經網路的
裝置上的可用記憶體大,則低效記憶體分配可能阻止多路徑神經網路的內核的並存執行。在多路徑神經網路的關鍵路徑中的低效計算資源配置可能不利地影響總體神經網路的輸送量。
實例實施例提供多路徑神經網路,所述多路徑神經網路可包含通過多路徑神經網路的兩個或大於兩個路徑,其中第一路徑可包含一或多個層。第一路徑可為通過多路徑神經網路的限制多路徑神經網路的輸送量的關鍵路徑。關鍵路徑的第一層可分配有能夠執行多路徑神經網路的第一計算資源配置。第一計算資源配置將多路徑神經網路的執行時間減少到小於用於多路徑神經網路的第二計算資源配置的基線執行時間。用於第一層的第一計算資源配置可不同於用於第一層的第二計算資源配置。在一個實施例中,可在執行多路徑神經網路之前分配用於第一層的第一計算資源配置。在另一實施例中,可在執行多路徑神經網路期間分配用於第一層的第一計算資源配置。
實例實施例提供將資源配置到多路徑神經網路的層的方法,所述方法可包含:基於將能夠執行多路徑神經網路的計算資源配置到多路徑神經網路的第一計算資源配置確定用於多路徑神經網路的基線執行時間,所述多路徑神經網路包括通過多路徑神經網路的兩個或大於兩個路徑;反覆運算地確定通過用於兩個或大於兩個路徑的一或多個第二計算資源配置的所述兩個或大於兩個路徑的執行時間,每一第二計算資源配置不同於第一計算資源配置;以及識別第一路徑中的用於第一層的第二計算資源配
置,所述第二計算資源配置提供用於多路徑神經網路的小於用於多路徑神經網路的總體基線執行時間的總體執行時間。
實例實施例提供可包含介面和處理裝置的多路徑神經網路分析器。介面可能接收多路徑神經網路,所述多路徑神經網路可包含通過多路徑神經網路的兩個或大於兩個路徑且兩個或大於兩個路徑的第一路徑可包含一或多個層。處理裝置可能生成多路徑神經網路,以包含通過多路徑神經網路的關鍵路徑的一或多個層,所述一層或多個層分配有能夠執行多路徑神經網路的第一計算資源配置。關鍵路徑可限制多路徑神經網路的輸送量。第一計算資源配置可將多路徑神經網路的執行時間減少到小於用於多路徑神經網路的第二計算資源配置的基線執行時間。用於關鍵路徑的第一層的第一計算資源配置可不同於用於關鍵路徑的第一層的第二計算資源配置。
100:多路徑神經網路分析器
101:多路徑神經網路
102、103、104、106、109:步驟
105:裝置資源約束
107:成本模型
108:調度程式
201、202:內核
300:多路徑神經網路
301、302、503、504:路徑
303:輸入端
304:決策區塊
401、402:資料串流
500:層
501、502:窗口
600:示範性結構
601:處理器
602:記憶元件
603:系統匯流排
604:本機記憶體
605:大型儲存裝置
606:鍵盤
607:顯示裝置
608:指向裝置
609:網路介面卡
610:作業系統
611:應用程式
612:平臺
613:通訊鏈路
614:神經網路加速器
在以下部分中,將參考圖中所示出的示範性實施例來描述本文中所揭露的主題的方面,其中:圖1描繪根據本文中所揭露的主題的優化多路徑神經網路的不同路徑中計算資源到不同層的分配或分區的多路徑神經網路分析器的功能框圖。
圖2A描繪根據本文中所揭露的主題的具有四個核心的處理單元,如GPU,在所述核心上已例如使用修改的內核啟動函數並行地調度多個GPU操作。
圖2B描繪根據本文中所揭露的主題的在已使用修改的內核啟動函數啟動第二內核之後的GPU。
圖3描繪在輸入端與決策區塊之間具有兩個路徑的實例多路徑神經網路。
圖4A描繪通過多路徑神經網路的兩個實例路徑的部分的相對基線執行時間和序列。
圖4B描繪用於卷積層已經被分配4.5吉位元組(GB)的兩個路徑的相對執行時間和序列。
圖4C描繪用於卷積層已經被分配記憶體的4.0GB的兩個路徑的相對執行時間和序列。
圖5描繪根據本文中所揭露的主題的層的視窗類資源配置分析的實例。
圖6描繪根據本文中所揭露的主題的用於可用於實現圖1的多路徑神經網路分析器的資料處理系統的示範性架構的框圖。
在以下詳細描述中,闡述許多特定細節以便提供對本揭露的透徹理解。然而,本領域的技術人員應理解,可在不具有這些特定細節的情況下實踐所揭露的方面。在其它情況下,未詳細描述眾所周知的方法、步驟、元件以及電路,以避免混淆本文中所揭露的主題。
參考本說明書的“一個實施例”或“一實施例”是指結合實施例所描述的特定特徵、結構或特性可包含在本文中所揭露的至少一個實施例中。因此,在貫穿本說明書的不同位置中出
現的短語“在一個實施例中”或“在一實施例中”或“根據一個實施例”(或具有相似意義的其它短語)可能未必全部指代同一實施例。此外,在一或多個實施例中,特定特徵、結構或特性可以任何適合的方式組合。就這一點而言,如本文所使用的,詞語“示範性”是指“用作實施例、實例或說明”。本文中描述為“示範性”的任何實施例不應理解為必定比其它實施例優選或有利。此外,在一或多個實施例中,特定特徵、結構或特性可以任何適合的方式組合。此外,取決於本文中的論述的上下文,單數術語可包含相應的複數形式,且複數術語可包含相應的單數形式。類似地,加連字號的術語(例如“二維(two-dimensional)”、“預定(pre-determined)”、“圖元特定(pixel-specific)”等)可間或互換地與相應的未加連字號版本(例如“二維(two dimensional)”、“預定(predetermined)”、“圖元特定(pixel specific)”等)一起使用,且大寫條目(例如“計數器時脈(Counter Clock)”、“列選擇(Row Select)”、“PIXOUT”等)可互換地與相應的非大寫版本(例如“計數器時脈(counter clock)”、“列選擇(row select)”、“pixout”等)一起使用。此類偶然的可互換使用不應視為彼此不一致。
此外,取決於本文中的論述的上下文,單數術語可包含相應的複數形式,且複數術語可包含相應的單數形式。還應注意,本文中所繪示且論述的各種圖式(包含元件圖式)僅出於說明性目的,且未按比例繪製。類似地,僅出於說明性目的繪示各種波
形和時序圖。舉例來說,為了清晰起見,可相對於其它元件放大一些元件的尺寸。此外,如果認為適當,那麼在圖式中重複附圖標號,以指示相應的和/或類似的元件。
本文中所使用的術語僅出於描述一些實例實施例的目的,而不意圖限制所要求保護的主題。如本文中所使用,除非上下文另作明確指示,否則單數形式“一(a/an)”和“所述(the)”也意圖包含複數形式。更應理解,術語“包括(comprises和/或comprising)”在本說明書中使用時,指定存在所述特徵、整數、步驟、操作、元件和/或元件,但是不排除存在或一個或多個其他特徵、整數、步驟、操作、元件、元件和/或其群組的添加。如本文中所使用,除非如此明確定義,否則術語“第一”、“第二”等用作在其之前的名詞標籤,且不會暗示任何類型的次序(例如空間、時間、邏輯等)。此外,可以在兩個或更多個附圖上使用相同的附圖標記來指代具有相同或相似功能的部件、元件、區塊、電路、單元或模組。然而,此類使用僅出於說明的簡潔和易於論述;其並不暗示此類元件或單元的構造或架構細節在所有實施例中都相同,或此類共同參考部件/模組是實現本文中所揭露的實例實施例中的一些的唯一方式。
應理解,當元件或層稱為在另一元件或層“上”、“連接到”另一元件或層或“耦接到”另一元件或層時,所述元件或層可以直接在另一元件或層上、直接連接到另一元件或層或耦接到另一元件或層,或可能存在中間元件或層。相比之下,當元件
稱為“直接”在另一元件或層“上”、“直接連接到”另一元件或層或“直接耦接到”另一元件或層時,不存在中間元件或層。全文中,相同的標記表示相同的元件。如本文所使用的,術語“和/或”包括一個或多個相關聯的所列專案的任何和所有組合。
如本文中所使用,除非如此明確定義,否則術語“第一”、“第二”等用作在其之前的名詞標籤,且不會暗示任何類型的次序(例如空間、時間、邏輯等)。此外,可以在兩個或更多個附圖上使用相同的附圖標記來指代具有相同或相似功能的部件、元件、區塊、電路、單元或模組。然而,此類使用僅出於說明的簡潔和易於論述;其並不暗示此類元件或單元的構造或架構細節在所有實施例中都相同,或此類共同參考部件/模組是實現本文中所揭露的實例實施例中的一些的唯一方式。
除非另外定義,否則本文中所使用的所有術語(包含技術術語和科學術語)具有與本揭露主題所屬的領域的技術人員通常所理解相同的含義。更應理解,術語(如常用詞典中所定義的那些術語)應解釋為具有與其在相關技術的上下文中的含義相一致的含義,且除非明確地如此定義,否則將不在理想化或過度正式的意義上進行解釋。
如本文中所使用,術語“模組”是指軟體、韌體和/或硬體的任何組合,所述組合被配置以結合模組提供本文中所描述的功能。軟體可實施為套裝軟體、代碼和/或指令集或指令,且如在本文中所描述的任一實現中所使用的術語“硬體”可例如單獨或
以任何組合包含固線式電路、可程式化電路、狀態機電路和/或儲存由可程式化電路執行的指令的韌體。模組可共同或單獨地實施為形成較大系統的部分的電路,所述電路例如但不限於積體電路(integrated circuit;IC)、系統單晶片(system on-chip;SoC)等。本文中所揭露的各種元件和/或功能區塊可實施為可包含軟體、韌體和/或硬體的模組,所述模組結合各種元件和/或功能區塊提供本文中所描述的功能。
本文中所揭露的主題涉及用於有效分配或分區在單個GPU裝置上並行地執行的內核之間的計算資源的系統和方法。本文中所揭露的系統可能通過核心分配和/或核心再分配來調度單個GPU裝置上的多個GPU操作的並行和/或同步執行。系統的應用程式化發展介面(application programming interface;API)允許用戶選擇將並行地調度的GPU操作且為平行作業分配計算資源。
本文中所揭露的系統和方法可用于分配計算資源以優化多路徑神經網路的性能。在一個實施例中,可對多路徑神經網路的不同路徑中的不同層啟用並存執行。可基於因果資源分佈技術提供多路徑神經網路應用的自動優化。在一個實施例中,因果資源分佈技術可能提供多路徑神經網路的自動性能優化。可基於計算資源與受計算資源的分配水準影響的神經網路中的層的執行時間之間的關係來識別最優資源配置。
此外,因果資源分佈可基於通過多路徑神經網路的關鍵路徑和計算資源與此計算資源相關的執行時間之間的關係。成本
模型範本可以用於性能分析,且一或多種啟發法可用於減少分析的複雜性以確定最優資源配置。此外,多路徑神經網路應用的執行調度可使用因果資源分佈技術優化。
本文中所揭露的資源配置技術可在多路徑神經網路的層之間分配計算資源以提高總體神經網路的性能結果。可基於對於多路徑神經網路的層的資源利用率的修改來分析網路性能,且如果性能分析指示基於特定計算資源配置的性能改進,那麼可更新或重新配置個別層的資源利用率。
本文中所揭露的主題提供可在內核之間對計算資源進行分區的程式化介面。與當前GPU平臺不同,所述當前GPU平臺對於並存執行具有有限的程式化器支持且依賴於執行以用於確定內核的GPU核心的數目的執行緒區塊的數目,本文中所揭露的主題提供程式化介面,其中程式化器可定義並存執行的GPU操作和針對平行作業的資源配置。
可通過本文中所揭露的系統和方法支援靜態資源配置和動態資源配置兩者。對於靜態配置,資源可在執行應用程式之前指派給個別層。對於動態分配,可在運行時期間指派資源以基於網路變化(如在拓樸、輸入、批量大小等的變化)提供靈活性。
圖1描繪根據本文中所揭露的主題的優化多路徑神經網路的不同路徑中計算資源到不同層的分配或分區的多路徑神經網路分析器100的功能框圖。在一個實例實施例中,分析器100可實現為執行適合的軟體的資料處理系統。分析器100可接收多路徑神經網路101作為使用可用於分析器100的計算資源執行的輸入。多路徑神經網路101可為全精度訓練神經網路。替代地,多
路徑神經網路101可為訓練的神經網路。分析器100可使用因果資源分佈分析多路徑神經網路101的不同路徑中的不同層,且確定計算資源的最優分配或分區以使得多路徑神經網路101在最少量的時間內執行或運行。
在一個實施例中,分析器100可在執行多路徑神經網路之前生成用於多路徑神經網路的一或多個路徑的一或多個層的優化的計算資源配置。在神經網路運行時接著使用優化的計算資源配置。在另一實施例中,分析器100可優化定義用於與神經網路相關的多路徑神經網路的一或多個路徑的一或多個層的計算資源的參數,以使得當神經網路在計算裝置上產生實體時,執行神經網路的優化配置。在又一實施例中,分析器100可在多路徑神經網路的執行期間動態更新用於多路徑神經網路的一或多個路徑的一或多個層的計算資源配置,以基於網路變化(如在拓樸、輸入、批量大小等的變化)提供靈活性。
最初在圖1中的步驟102處,分析器100將相應串流指派到具有一或多個依序依賴層的神經網路101的不同路徑。在步驟103處,分析器100生成基線資源配置狀態。此外,可生成視窗或分組大小以減少執行用於不同的計算資源配置的因果資源分佈的複雜性,如結合圖5所描述。在步驟104處,分析器100可執行不同計算資源配置的性能分析以確定最優計算資源配置。可從用戶輸入接收在可用的計算資源上設置約束和/或束縛的裝置資源約束105。可在神經網路101處接收多路徑神經網路之前從使用者接收資源約束105。性能分析還可使用在步驟103生成的視窗或分組大小。可通過刪減或丟棄可能無法提供最優性能解決方案的
計算資源配置在步驟106處減少分析的不同計算資源配置的數目。可在性能分析期間使用成本模型107。
調度程式108可模擬分析的不同層和路徑的部分和/或分析的神經網路101的總體輸送量性能。在步驟109處,由於針對不同層和/或路徑確定較好的計算資源配置,且針對神經網路101確定較好的調度分配,分析器100用較好的分配更新在步驟103處的層的基線資源配置,並且在神經網路101運行時將使用較好的調度分配。
在操作中,分析器100通過應用程式化發展介面(API)接收裝置資源約束105,所述應用程式化發展介面允許用戶在可用以執行多路徑神經網路的計算資源上選擇性地設定約束。在一個實施例中,針對運行處理單元上的多路徑神經網路的路徑的一或多個內核,使用者可選擇處理單元或計算單元的核心的最小數目和/或最大數目。表1闡述可在開放運算語言(Open Computing Language;OpenCL)程式化框架中使用的修改內核啟動函數的實例,所述框架可提供資源約束,如根據本文中所揭露的主題的可用於內核的最小數目和最大數目的核心。可修改clEnqueueNDRangeKernel內核啟動命令以包含例如兩個額外變數參數:“min_cores”變數參數和“max_cores”變數參數。特定而言,將“const cl_uint min_cores”變數參數和“const cl_uint max_cores”變數參數添加到OpenCL框架的clEnqueueNDRangeKernel內核啟動命令。設定變數參數的兩個額
外參數呈現在clEnqueueNDRangeKernel內核啟動命令的變數參數清單的末端處。
“min_cores”變數參數可用于定義在與其它內核一起運行時用於內核的處理單元的最小數目的核心,並且“max_cores”變數參數可用于定義在單獨運行時用於內核的處理單元的最大數目的核心。用戶可定義將用於內核的多個核心,而不管內核的執行緒區塊的數目。
圖2A描繪根據本文中所揭露的主題的具有四個核心1到核心4的處理單元,如GPU,在其上已例如使用修改的內核啟動函數並行地調度多個GPU操作。最初,修改的內核啟動函數用以將內核201的最小核心/最大核心變數參數設定為2/3。對於此
實例,內核201可具有在GPU核心1到核心4上執行的12個執行緒區塊,所述執行緒區塊分佈如圖2A中所描繪分佈在核心1到核心3上。
可將第二內核202配置為將最小核心/最大核心變數參數設定為2/4。如圖2B中所描繪,當在GPU裝置上啟動內核202時,GPU調度程式(未繪示)執行執行緒區塊遷移,以使得基於用於先前執行的內核201和新近執行的內核202兩者的最小/最大變數參數,將先前分配在核心3上的內核201的執行緒區塊遷移到核心1和核心2。在這種情況下,兩個內核具有最小核心變數參數2,所述變數參數將設定兩個GPU核心的最小值以運行內核201和內核202中的每一個。不同的核心1到核心4可運行不同數目的執行緒區塊。此外,可不同地分配圖2A和圖2B中描繪的特定核心。
基於由使用者輸入的裝置約束105,分析器100可使用因果資源分佈以確定最優計算資源配置或分區來執行多路徑神經網路101。在一個實施例中,可以在通過多路徑神經網路101的關鍵路徑上執行因果資源分佈以識別計算資源配置的變化如何影響例如通過關鍵路徑的執行時間。因果資源分佈還可用於識別多路徑神經網路的不同路徑中的計算資源配置的變化可如何影響神經網路的總體執行時間。
圖3描繪在輸入端303與決策區塊304之間具有兩個路徑301和路徑302的實例多路徑神經網路300。路徑301可包含五個依序依賴層、且路徑302可包含四個依序依賴層。針對圖3中所描繪的實例神經網路300,路徑302為通過神經網路300的關鍵
路徑,所述關鍵路徑限制神經網路300的總體輸送量。也就是說,沿著路徑302的計算和處理比沿著路徑301的計算和處理花費更長的時間完成。因果資源分佈最初可基於基線計算資源配置確定通過關鍵路徑302的基線執行時間。還可基於基線計算資源配置確定通過神經網路300的其它路徑中的每一個的基線執行時間。計算資源配置可根據關鍵路徑中的不同層改變,以確定計算資源配置的變化如何影響關鍵路徑的執行時間。
因果資源分佈涉及在資源配置與執行時間之間的映射,這是由於神經網路的層的執行時間取決於資源配置。舉例來說,關鍵路徑302中的特定函數(即,層)的20%加速可潛在地將多路徑神經網路應用300的總體執行時間改善(即,減少)5%。
可延伸因果資源分佈以還分析多路徑神經網路的其它路徑,以確定改變分配到多路徑神經網路的各個路徑的不同層的計算資源可如何改變與關鍵路徑相關的執行時間。針對神經網路的特定層分配較少裝置核心可增加所述層的執行時間,但可有利地釋放計算資源以用於有利地減少另一路徑中的另一層的執行時間。
在一個實施例中,可運行多個模擬以基於對神經網路的不同層和路徑的不同計算資源配置確定多路徑神經網路的性能。可基於不同計算資源配置的神經網路的估計執行時間確定最優的資源配置。
圖4A描繪通過多路徑神經網路的兩個實例路徑的一部分的相對基線執行時間和序列。第一資料串流401通過表示通過多路徑神經網路的第一路徑的一系列層(函數)(即,最大池化
(Maxpool)層和全連接(fully connected;FC))執行。第二資料串流402通過表示通過神經網路的第二路徑的一系列層(即,卷積層和整流線性單元(rectified linear unit;ReLu)層)執行。儘管兩個路徑都不被識別為關鍵路徑,但圖4A描繪上部路徑完成執行花費的時間(虛線)比下部路徑更長。
圖4A中的層或函數中的每一個包含已經分配到層的函數的指示記憶體計算資源。舉例來說,最大池化層已經被分配1GB的記憶體。FC層已經被分配0.5GB。卷積層已經被分配5GB,且ReLu層已經被分配1GB。考慮可將最大值5GB的記憶體分配到任一路徑中的任一層的這個實例。因此,圖4A中描繪的記憶體分配不會導致兩個路徑中的任一個中的層與卷積層並存執行,這是因為所有可用的5GB的記憶體已經分配到卷積層。
圖4B描繪用於卷積層已經被分配4.5GB的兩個路徑的相對執行時間和序列。通過將分配到下部路徑(串流402)中的卷積層的記憶體的量從基線分配(圖4A)減少10%,上部路徑(串流401)中的FC層可與卷積層同時執行。還可減少多路徑神經網路(即,兩個路徑)的總體執行時間(虛線),因為現在FC層可與卷積層並存執行,因為0.5GB的記憶體可用以執行FC層。
圖4C描繪用於卷積層已經被分配4.0GB的記憶體的兩個路徑的相對執行時間和序列。通過將分配到下部路徑(串流402)中的卷積層的記憶體的量從基線(圖4A)減少20%,上部路徑(串流401)中的最大池化層可與下部路徑中的卷積層並存執行。此外,在最大池化層完成時,上部路徑中的FC層可與卷積層並存執
行。在卷積層完成時,下部路徑中的ReLu層可與FC層並存執行。多路徑神經網路(即,兩個路徑)的總體執行時間(虛線)可通過減少對卷積層的記憶體的分配來進一步減少。儘管在圖4B和圖4C的描繪中沒有特別繪示,卷積層可基於減少的記憶體分配花費略長的時間來執行,但用於兩個路徑的總體執行時間可明顯減少。對卷積層的記憶體分配的實例減少可靜態地應用於神經網路,以使得多路徑神經網路的每一後續產生實體在總體上減少的執行時間的情況下運行。替代地,可動態地確定記憶體分配的實例減少,並將所述實例減少應用於神經網路的當前產生實體以考慮網路變化,如拓樸、輸入、批量大小等的變化。
成本模型可用於神經網路中的常用層的因果資源分佈,所述模型將每一層的執行時間與計算資源利用率關聯。在因果資源分佈期間可考慮的計算資源可包含裝置計算單元、記憶體空間以及記憶體頻寬。對於CPU的計算單元,可考慮核心的數目。對於GPU計算單元,可考慮串流式多處理器(streaming multiprocessors;SM)的數目。對於現場可程式化閘陣列(Field Programmable Gate Array;FPGA),可考慮FPGA的區域。資源配置的單元可通常為離散值(例如,用於層的不同實現的核心數、記憶體/工作空間)。
可以用於多路徑神經網路的因果資源分佈性能分析的一個定義可如下。針對多路徑神經網路的輸入,k個執行串流分別輸入到多路徑神經網路的k個路徑中。針對每一對應的s串流,存在n s 依序依賴層l。針對路徑中的每一層l,存在m l 個不同的實現。
每一實現具有執行時間t ml,k 和用於利用率的資源集合{Wr|r資源}。定義的目的是找到使多路徑神經網路的總體執行時間最小化的所有層的平行調度和實現,如在等式(1)中。
其中K是總層數,w r,l 是資源r乘以層l的利用率,M r 是可用於多路徑神經網路的執行的最大的可用資源層r,且如果層l在時間t時執行,那麼α l,t 為1,並且如果不在所述時間執行,那麼為0。
數種啟發法可用於減少資源配置的複雜性。舉例來說,可刪減搜索空間。舉例來說,如果此處存在用於這個層的另一實現j,那麼可刪減用於層l的實現,其中t i >t j 和 r 資源,w r,i >w r,j 。還可刪減具有相對長的執行時間的實現。舉例來說,如果t k >β×最小{ti|i 層L實現},那麼可刪減用於層L的實現k,因為即使這種實現可提供相對較小的資源利用率,長時間運行的實現也不大可能為最優解決方案的一部分。
減少資源配置的複雜性的另一技術可以是使用層的視窗類資源配置。也就是說,可基於網路的每一路徑和深度中的層的平均或標稱執行時間形成的層的視窗或分組。每一串流或層的窗口大小可包含可調諧參數。可控制視窗以沿著多路徑神經網路路徑滑動,並且可以執行視窗內部的層的性能分析以找到最優資源配置。
圖5描繪根據本文中所揭露的主題的層500的視窗類資源配置分析的實例。如圖5中所描繪,可定義和使用第一視窗501以執行在多路徑神經網路的第一路徑503和第二路徑504的層之
間的因果資源分佈分析。可類似地定義第二視窗502來執行在第一路徑503和第二路徑504的層之間的另一因果資源分佈分析。每一串流的執行時間可在同一視窗內盡可能匹配,以完全實現並存執行。
圖6描繪用於資料處理系統的示範性架構600的框圖。在一個實施例中,架構600可用於實現圖1的分析器100。在另一實施例中,架構600可用於實現分析器100,且運行由分析器100提供的優化的多路徑神經網路。
架構600包含至少一個處理器,例如中央處理單元(central processing unit;CPU)601,所述處理器601通過系統匯流排603或其它適合的電路耦接到記憶元件602。架構600可在記憶元件602內儲存程式碼。處理器601可執行經由系統匯流排603從記憶元件602存取的程式碼。因此,處理器601可充當專用處理器。記憶元件602可包含一或多個物理記憶體裝置,如但不限於本機記憶體604和一或多個大型儲存裝置605。本機記憶體604可為在程式碼的實際執行期間通常所使用的隨機存取記憶體(random access memory;RAM)或其它非永久性的記憶體裝置。大型儲存裝置605實現為硬碟驅動器(hard disk drive;HDD)、固態驅動器(solid-state drive;SSD)和/或其它永久性資料儲存裝置。架構600還可包含一或多個高速緩衝記憶體(未繪示),所述記憶體提供至少一些程式碼的臨時記憶體,以便減少在執行期間必須從大型儲存裝置605檢索程式碼的次數。
架構600還可包含輸入/輸出(input/output;I/O)裝置,如鍵盤606、顯示裝置607和/或可任選地耦接到架構600的指向
裝置608。在一些實施例中,I/O裝置中的一或多個可組合成在用作顯示裝置607的觸控式螢幕中。這種顯示裝置607還可包含鍵盤606和指向裝置608。一或多個網路介面卡609也可耦接到架構600,以使得架構600能夠通過中間私有或公共網路耦合到其它系統、電腦系統、遠端印表機和/或遠端存放裝置。數據機、纜線數據機、乙太網(Ethernet)卡以及無線收發器是可與架構600一起使用的不同類型的網路介面卡的非限制性實例。取決於使用架構600實現的特定裝置,特定類型的一或多個網路介面卡可視具體情況而改變。I/O裝置可以直接或通過中間I/O控制器耦接到架構600上。
如圖6中所描繪,記憶元件602可儲存作業系統610和應用程式611。在一個方面中,以可執行的程式碼的形式實現的作業系統610和應用程式611可通過架構600執行。因此,作業系統610和應用程式611可視為架構600的整合部分。作業系統610、應用程式611以及通過架構600所使用、生成和/或操作後的任何資料項目可為功能資料結構,當用作使用架構600實現的系統的部分時,所述功能資料結構賦予功能。
在一個佈置中,應用程式611可包含一或多個模組,當由系統使用架構600或相似於架構600的架構執行時,所述模組可執行本文中參考圖1到圖5所描述的各種操作和功能。一或多個模組可包含結合各種元件和/或功能區塊提供本文中所描述的功能的軟體、韌體和/或硬體。
在另一佈置中,架構600可通過通訊鏈路613耦合到平臺612。在一個實例中,架構600可通過網路介面卡609耦合到平
臺612。在另一實例中,架構600可包含一或多個其它I/O裝置,如通用序列匯流排(Universal Serial Bus;USB)介面或其它通訊連接埠,所述其它I/O裝置或其它通訊連接埠可用於將架構600耦合到平臺612。平臺612可為電路板且具有耦合到其上的神經網路加速器614。在一個佈置中,神經網路加速器614可實現為積體電路(IC)或多個IC。舉例來說,神經網路加速器614可實現為一或多個可程式化IC,如現場可程式化閘陣列、一或多個專用IC(application-specific IC;ASIC)等。
架構600可配置以在多路徑神經網路上執行本文中所描述的操作,以將計算資源配置到多路徑神經網路的不同路徑中的不同層,如圖1中的多路徑神經網路101。也就是說,架構600可通過I/O裝置接收多路徑神經網路101,在多路徑神經網路的一或多個層上操作,並且根據本文中所揭露的主題輸出用於多路徑神經網路的優化的計算資源配置。架構600可進一步將優化的多路徑神經網路101的定義提供給神經網路加速器614以用於在其中執行。
圖6僅出於說明的目的提供,且因此不打算作為本文中所描述的發明性佈置的限制。在一些情況下,使用架構600實現的特定系統可包含比繪示的元件少或多的元件。此外,作為架構600的部分包含的特定作業系統和/或應用程式可改變。
如本領域的技術人員將認識到,可通過廣泛範圍的應用程式修改和改變本文中所描述的創新概念。因此,所要求保護的主題的範圍不應限於上文所論述的特定示範性教示中的任一種,但相反,應由以下權利要求來定義。
100:多路徑神經網路分析器
101:多路徑神經網路
102、103、104、106、109:步驟
105:裝置資源約束
107:成本模型
108:調度程式
Claims (20)
- 一種多路徑神經網路,包括: 通過所述多路徑神經網路的兩個或大於兩個路徑,第一路徑包括一或多個層,所述第一路徑包括通過所述多路徑神經網路的關鍵路徑,所述關鍵路徑限制所述多路徑神經網路的輸送量,所述關鍵路徑的第一層分配有能夠執行所述多路徑神經網路的第一計算資源配置,所述第一計算資源配置將所述多路徑神經網路的執行時間減少到小於用於所述多路徑神經網路的第二計算資源配置的基線執行時間,用於所述第一層的所述第一計算資源配置不同於用於所述第一層的所述第二計算資源配置。
- 如請求項1所述的多路徑神經網路,其中在執行所述多路徑神經網路之前分配用於所述第一層的所述第一計算資源配置。
- 如請求項1所述的多路徑神經網路,其中在所述多路徑神經網路的執行期間分配用於所述第一層的所述第一計算資源配置。
- 如請求項1所述的多路徑神經網路,其中能夠執行所述多路徑神經網路的計算資源包括多個計算單元核心、記憶體大小以及記憶體頻寬。
- 如請求項1所述的多路徑神經網路,其中所述關鍵路徑包含提供卷積函數的層。
- 一種用以將資源配置到多路徑神經網路的層的方法,所述方法包括: 基於將能夠執行所述多路徑神經網路的計算資源配置到所述多路徑神經網路的第一計算資源配置確定用於多路徑神經網路的基線執行時間,所述多路徑神經網路包括通過所述多路徑神經網路的兩個或大於兩個路徑; 反覆運算地確定通過用於所述兩個或大於兩個路徑的一或多個第二計算資源配置的所述多路徑神經網路的所述兩個或大於兩個路徑的執行時間,每一第二計算資源配置不同於所述第一計算資源配置;以及 識別第一路徑中的用於第一層的第二計算資源配置,用於所述第一層的所述第二計算資源配置提供用於所述多路徑神經網路的小於用於所述多路徑神經網路的總體基線執行時間的總體執行時間。
- 如請求項6所述的方法,其中用於所述多路徑神經網路的所述總體基線執行時間對應於通過所述多路徑神經網路的限制所述多路徑神經網路的輸送量的關鍵路徑的執行時間。
- 如請求項6所述的方法,更包括分配所識別的所述第一路徑中的用於所述第一層的所述第二計算資源配置,以提供用於所述多路徑神經網路的小於用於所述多路徑神經網路的所述總體基線執行時間的所述總體執行時間。
- 如請求項8所述的方法,更包括在執行所述多路徑神經網路之前,分配所識別的所述第一路徑中的用於所述第一層的所述第二計算資源配置。
- 如請求項8所述的方法,更包括在執行所述多路徑神經網路期間,分配所識別的所述第一路徑中的用於所述第一層的所述第二計算資源配置。
- 如請求項6所述的方法,其中識別所述第二計算資源配置更包括從用戶接收所述第二計算資源配置的選擇。
- 如請求項6所述的方法,其中能夠執行所述多路徑神經網路的計算資源包括多個計算單元核心、記憶體大小以及記憶體頻寬。
- 如請求項6所述的方法,其中所述兩個或大於兩個路徑中的至少一者包含提供卷積函數的層。
- 一種多路徑神經網路分析器,包括: 介面,接收多路徑神經網路,所述多路徑神經網路包括通過所述多路徑神經網路的兩個或大於兩個路徑且所述兩個或大於兩個路徑中的第一路徑包括一或多個層;以及 處理裝置,生成包括通過所述多路徑神經網路的關鍵路徑的一或多個層的所述多路徑神經網路,所述關鍵路徑的所述一或多個層分配有能夠執行所述多路徑神經網路的第一計算資源配置,所述關鍵路徑限制所述多路徑神經網路的輸送量,所述第一計算資源配置將所述多路徑神經網路的執行時間減少到小於用於所述多路徑神經網路的第二計算資源配置的基線執行時間,用於所述關鍵路徑的第一層的所述第一計算資源配置不同於用於所述關鍵路徑的所述第一層的所述第二計算資源配置。
- 如請求項14所述的多路徑神經網路分析器,其中能夠執行所述多路徑神經網路的計算資源包括多個計算單元核心、記憶體大小以及記憶體頻寬。
- 如請求項14所述的多路徑神經網路分析器,其中所述處理裝置進一步配置成: 基於所述第二計算資源配置來確定通過所述多路徑神經網路的兩個或大於兩個路徑的基線執行時間以執行所述多路徑神經網路, 反覆運算地確定通過用於所述兩個或大於兩個路徑的至少一個第三計算資源配置的所述多路徑神經網路的所述兩個或大於兩個路徑的執行時間,每一第三計算資源配置不同於所述第二計算資源配置;以及 識別提供用於所述多路徑神經網路的小於用於所述多路徑神經網路的所述基線執行時間的所述執行時間的所述第三計算資源配置。
- 如請求項16所述的多路徑神經網路分析器,其中用於所述多路徑神經網路的所述基線執行時間對應於針對所述關鍵路徑的所述第二計算資源配置的通過所述多路徑神經網路的所述關鍵路徑的執行時間。
- 如請求項16所述的多路徑神經網路分析器,其中所述處理裝置還配置成將用於所述關鍵路徑的所述第三計算資源配置分配為用於所述關鍵路徑的所述第一計算資源配置。
- 如請求項18所述的多路徑神經網路分析器,其中所述處理裝置配置成在執行所述多路徑神經網路之前分配用於所述關鍵路徑的所述第一計算資源配置。
- 如請求項18所述的多路徑神經網路分析器,其中所述處理裝置配置成在所述多路徑神經網路的執行期間分配用於所述關鍵路徑的所述第一計算資源配置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962796071P | 2019-01-23 | 2019-01-23 | |
US62/796,071 | 2019-01-23 | ||
US16/442,440 US11620510B2 (en) | 2019-01-23 | 2019-06-14 | Platform for concurrent execution of GPU operations |
US16/442,440 | 2019-06-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202029064A TW202029064A (zh) | 2020-08-01 |
TWI827792B true TWI827792B (zh) | 2024-01-01 |
Family
ID=71608978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109102329A TWI827792B (zh) | 2019-01-23 | 2020-01-22 | 多路徑神經網路、資源配置的方法及多路徑神經網路分析器 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11687771B2 (zh) |
JP (1) | JP2020119564A (zh) |
KR (2) | KR20200091789A (zh) |
CN (1) | CN111476344A (zh) |
TW (1) | TWI827792B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11537436B2 (en) * | 2019-10-02 | 2022-12-27 | Qualcomm Incorporated | Method of configuring a memory block allocation of a machine learning network |
CN112349419A (zh) * | 2020-08-27 | 2021-02-09 | 北京颢云信息科技股份有限公司 | 一种基于医学数据及人工智能的真实世界研究方法 |
KR20220052546A (ko) * | 2020-10-21 | 2022-04-28 | 삼성전자주식회사 | 데이터 처리 방법 및 장치 및 이를 포함한 전자 장치 및 가속기 시스템 |
US20230071278A1 (en) * | 2021-09-03 | 2023-03-09 | International Business Machines Corporation | Using a machine learning module to determine a group of execution paths of program code and a computational resource allocation to use to execute the group of execution paths |
CN114091688B (zh) * | 2021-11-25 | 2022-05-20 | 北京九章云极科技有限公司 | 一种计算资源获取方法、装置、电子设备和存储介质 |
WO2024113184A1 (en) * | 2022-11-29 | 2024-06-06 | Paypal, Inc. | Optimizing allocation of graphical processing unit (gpu) resources in a production workspace |
CN117114055B (zh) * | 2023-10-24 | 2024-04-09 | 北京航空航天大学 | 面向工业应用场景的fpga二值神经网络加速方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI313437B (en) * | 2006-09-20 | 2009-08-11 | Nat Chiao Tung Universit | Matching method for interdependent scheduling |
US20150220420A1 (en) * | 2014-01-31 | 2015-08-06 | Schlumberger Technology Corporation | Performance evaluation and tuning systems and methods |
TW201716994A (zh) * | 2015-11-03 | 2017-05-16 | 英特爾公司 | 在處理器中進行立即資料的收合之技術 |
TW201732567A (zh) * | 2015-12-26 | 2017-09-16 | 英特爾股份有限公司 | 用於資料解壓縮的硬體設備及方法 |
CN107832840A (zh) * | 2017-10-31 | 2018-03-23 | 中国科学院计算技术研究所 | 一种用于神经网络处理器的方法 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06187309A (ja) * | 1992-12-21 | 1994-07-08 | Hitachi Ltd | プロセッサ割付制御方式 |
US5704012A (en) | 1993-10-08 | 1997-12-30 | International Business Machines Corporation | Adaptive resource allocation using neural networks |
US7656959B2 (en) * | 2001-04-13 | 2010-02-02 | Agere Systems Inc. | Pipelined decision-feedback unit in a reduced-state viterbi detector with local feedback |
TWI246114B (en) * | 2002-09-24 | 2005-12-21 | Asml Netherlands Bv | Lithographic apparatus, device manufacturing method, and device manufactured thereby |
US20060253677A1 (en) * | 2005-05-04 | 2006-11-09 | Arm Limited | Data access prediction |
US8347293B2 (en) * | 2005-10-20 | 2013-01-01 | Network Appliance, Inc. | Mutual exclusion domains to perform file system processes on stripes |
US7606807B1 (en) * | 2006-02-14 | 2009-10-20 | Network Appliance, Inc. | Method and apparatus to utilize free cache in a storage system |
US20080071755A1 (en) * | 2006-08-31 | 2008-03-20 | Barsness Eric L | Re-allocation of resources for query execution in partitions |
CN101908003B (zh) * | 2009-06-05 | 2014-10-22 | Sap股份公司 | 并行化查询的多核调度 |
US8627331B1 (en) * | 2010-04-30 | 2014-01-07 | Netapp, Inc. | Multi-level parallelism of process execution in a mutual exclusion domain of a processing system |
US8868867B2 (en) * | 2011-09-15 | 2014-10-21 | The Regents Of The University Of California | Method for reducing latency of accessing data stored in a file system on a computer storage device by caching file system permission information in the computer storage device |
JP5961402B2 (ja) * | 2012-02-20 | 2016-08-02 | 株式会社日立製作所 | 計算機システム |
US20140133574A1 (en) * | 2012-11-13 | 2014-05-15 | Mediatek Inc. | Method and Apparatus for Sign Data Hiding of Video and Image Data |
JP2014179957A (ja) * | 2013-03-15 | 2014-09-25 | Toshiba Corp | 画像符号化装置および画像復号化装置 |
CN105814857A (zh) * | 2013-10-17 | 2016-07-27 | 乔治亚技术研究公司 | 用于低复杂度和高性能通信的改进的格基约减辅助的k-best 算法 |
US10417554B2 (en) | 2014-05-22 | 2019-09-17 | Lee J. Scheffler | Methods and systems for neural and cognitive processing |
US10346941B2 (en) | 2014-05-30 | 2019-07-09 | Apple Inc. | System and method for unified application programming interface and model |
US20160164537A1 (en) * | 2014-12-08 | 2016-06-09 | Samsung Electronics Co., Ltd. | Method and apparatus for parallel concatenated ldpc convolutional codes enabling power-efficient decoders |
US9779469B2 (en) | 2015-08-17 | 2017-10-03 | Qualcomm Incorporated | Register spill management for general purpose registers (GPRs) |
US9443192B1 (en) * | 2015-08-30 | 2016-09-13 | Jasmin Cosic | Universal artificial intelligence engine for autonomous computing devices and software applications |
WO2017091833A1 (en) * | 2015-11-29 | 2017-06-01 | Arterys Inc. | Automated cardiac volume segmentation |
US10891540B2 (en) * | 2015-12-18 | 2021-01-12 | National Technology & Engineering Solutions Of Sandia, Llc | Adaptive neural network management system |
CN107533459B (zh) * | 2016-03-31 | 2020-11-20 | 慧与发展有限责任合伙企业 | 使用电阻存储器阵列的数据处理方法和单元 |
US20180039884A1 (en) * | 2016-08-03 | 2018-02-08 | Barnaby Dalton | Systems, methods and devices for neural network communications |
US10116582B2 (en) * | 2016-08-08 | 2018-10-30 | Bank Of America Corporation | Resource assignment system with allocation assist |
US10264264B2 (en) * | 2016-09-24 | 2019-04-16 | Apple Inc. | Multi-bin decoding systems and methods |
US11556779B2 (en) * | 2016-09-26 | 2023-01-17 | Arizona Board Of Regents On Behalf Of Arizona State University | Cascaded computing for convolutional neural networks |
JP6778130B2 (ja) * | 2017-02-24 | 2020-10-28 | 日本電信電話株式会社 | 仮想計算機システムおよびそのリソース割当て方法 |
US10387298B2 (en) | 2017-04-04 | 2019-08-20 | Hailo Technologies Ltd | Artificial neural network incorporating emphasis and focus techniques |
US20180308006A1 (en) | 2017-04-24 | 2018-10-25 | William Atkinson | Method and Apparatus for Dynamic Evolving Cognitive questioning querying architecture iterative problem solving dynamically evolving feedback loop |
US10970630B1 (en) * | 2017-06-15 | 2021-04-06 | National Technology & Engineering Solutions Of Sandia, Llc | Neuromorphic computing architecture with dynamically accessible contexts |
GB2563473B (en) * | 2017-06-15 | 2019-10-02 | Accelercomm Ltd | Polar coder with logical three-dimensional memory, communication unit, integrated circuit and method therefor |
CN110537204A (zh) * | 2017-06-28 | 2019-12-03 | 渊慧科技有限公司 | 使用分割和分类神经网络的可泛化医学图像分析 |
US11694066B2 (en) * | 2017-10-17 | 2023-07-04 | Xilinx, Inc. | Machine learning runtime library for neural network acceleration |
US20190044883A1 (en) * | 2018-01-11 | 2019-02-07 | Intel Corporation | NETWORK COMMUNICATION PRIORITIZATION BASED on AWARENESS of CRITICAL PATH of a JOB |
CN108875752B (zh) * | 2018-03-21 | 2022-06-07 | 北京迈格威科技有限公司 | 图像处理方法和装置、计算机可读存储介质 |
US11568220B2 (en) * | 2018-07-25 | 2023-01-31 | International Business Machines Corporation | Deep neural network implementation |
US20200042856A1 (en) * | 2018-07-31 | 2020-02-06 | International Business Machines Corporation | Scheduler for mapping neural networks onto an array of neural cores in an inference processing unit |
US10963300B2 (en) * | 2018-12-06 | 2021-03-30 | Raytheon Company | Accelerating dataflow signal processing applications across heterogeneous CPU/GPU systems |
-
2019
- 2019-06-14 US US16/442,447 patent/US11687771B2/en active Active
- 2019-06-14 US US16/442,440 patent/US11620510B2/en active Active
- 2019-11-12 KR KR1020190144253A patent/KR20200091789A/ko unknown
- 2019-11-12 KR KR1020190144279A patent/KR20200091790A/ko unknown
-
2020
- 2020-01-17 JP JP2020006404A patent/JP2020119564A/ja active Pending
- 2020-01-21 CN CN202010070764.3A patent/CN111476344A/zh active Pending
- 2020-01-22 TW TW109102329A patent/TWI827792B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI313437B (en) * | 2006-09-20 | 2009-08-11 | Nat Chiao Tung Universit | Matching method for interdependent scheduling |
US20150220420A1 (en) * | 2014-01-31 | 2015-08-06 | Schlumberger Technology Corporation | Performance evaluation and tuning systems and methods |
TW201716994A (zh) * | 2015-11-03 | 2017-05-16 | 英特爾公司 | 在處理器中進行立即資料的收合之技術 |
TW201732567A (zh) * | 2015-12-26 | 2017-09-16 | 英特爾股份有限公司 | 用於資料解壓縮的硬體設備及方法 |
CN107832840A (zh) * | 2017-10-31 | 2018-03-23 | 中国科学院计算技术研究所 | 一种用于神经网络处理器的方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20200091789A (ko) | 2020-07-31 |
US11620510B2 (en) | 2023-04-04 |
US20200234115A1 (en) | 2020-07-23 |
US20200234146A1 (en) | 2020-07-23 |
CN111476344A (zh) | 2020-07-31 |
KR20200091790A (ko) | 2020-07-31 |
TW202029064A (zh) | 2020-08-01 |
US11687771B2 (en) | 2023-06-27 |
JP2020119564A (ja) | 2020-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI827792B (zh) | 多路徑神經網路、資源配置的方法及多路徑神經網路分析器 | |
WO2016155335A1 (zh) | 异构多核可重构计算平台上任务调度的方法和装置 | |
JP2020537784A (ja) | ニューラルネットワークアクセラレーションのための機械学習ランタイムライブラリ | |
JP2020537789A (ja) | 超並列ソフトウェア定義ハードウェアシステムにおける静的ブロックスケジューリング | |
Yeralan et al. | Algorithm 980: Sparse QR factorization on the GPU | |
US11436258B2 (en) | Prometheus: processing-in-memory heterogenous architecture design from a multi-layer network theoretic strategy | |
CN111522640A (zh) | 计算图的并行执行方法和设备 | |
Shetti et al. | Optimization of the HEFT algorithm for a CPU-GPU environment | |
US11934308B2 (en) | Processor cluster address generation | |
US20210319298A1 (en) | Compute-based subgraph partitioning of deep learning models for framework integration | |
Wang et al. | Phase-reconfigurable shuffle optimization for Hadoop MapReduce | |
JP7476299B2 (ja) | 同期プロセッサのためのコンパイル | |
Zheng et al. | Atomic dataflow based graph-level workload orchestration for scalable DNN accelerators | |
US11221979B1 (en) | Synchronization of DMA transfers for large number of queues | |
US11556342B1 (en) | Configurable delay insertion in compiled instructions | |
CN117539548A (zh) | 基于wait机制的指令执行方法、装置、设备及存储介质 | |
Garibotti et al. | Exploiting memory allocations in clusterised many‐core architectures | |
CN110415162B (zh) | 大数据中面向异构融合处理器的自适应图划分方法 | |
Sinaei et al. | Run-time mapping algorithm for dynamic workloads using association rule mining | |
Cui | A Novel Approach to Hardware/Software Partitioning for Reconfigurable Embedded Systems. | |
Kaufmann et al. | The {HCl} Scheduler: Going all-in on Heterogeneity | |
JP7423757B2 (ja) | 同期プロセッサのためのシャーディング | |
Ahmed | Energy Demand Response for High-Performance Computing Systems | |
Busch et al. | Impossibility results for distributed transactional memory | |
US11442794B1 (en) | Event assignment for synchronization of concurrent execution engines |