TWI709088B - 電腦系統、編程方法及非暫態電腦可讀取媒體 - Google Patents
電腦系統、編程方法及非暫態電腦可讀取媒體 Download PDFInfo
- Publication number
- TWI709088B TWI709088B TW107123892A TW107123892A TWI709088B TW I709088 B TWI709088 B TW I709088B TW 107123892 A TW107123892 A TW 107123892A TW 107123892 A TW107123892 A TW 107123892A TW I709088 B TWI709088 B TW I709088B
- Authority
- TW
- Taiwan
- Prior art keywords
- gate array
- programmable gate
- field programmable
- array device
- logic block
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- 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
-
- 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
-
- 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
- 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
- G06N3/105—Shells for specifying net layout
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Geometry (AREA)
- Stored Programmes (AREA)
- Logic Circuits (AREA)
Abstract
一種用於編程現場可程式化閘陣列裝置的系統以及方法於此提供。用於深度學習程序的已訓練模型被取得並被轉換成設計抽象代碼,設計抽象代碼用於定義邏輯區塊電路,以編程現場可程式化閘陣列裝置。每一個邏輯區塊電路代表執行深度學習程序的不同層之間的處理步驟的多個模組中的其中一者。
Description
本發明係有關於一種現場可程式化閘陣列裝置,特別係有關一種用於深度學習、人工神經網路以及機器學習應用的用於編程現場可程式化閘陣列裝置的裝置和方法。
深度學習應用的執行通常需要分層式的軟體堆疊,其相對而言使用和管理上來說較為複雜。深度學習應用包含無人駕駛應用、物體偵測和辨識以及電腦輔助診斷系統,但不限定這些應用。因此,使用者於開發基於已訓練模型的深度學習應用時,也需要安裝及調用許多相關的軟體元件,例如架構、程式庫以及介面,以支援多種應用。此外,若需在已訓練模型或堆疊的任何部分中做出更動,通常必須重建相關的依存關係。此外,隨著結合深度學習應用的軟體堆疊變得更複雜,額外的運算負擔會實質地影響上述應用的效能。
從開發觀點來看,複雜的軟體堆疊對開發者增加額外的負擔。舉例來說,現今開發者需要熟悉針對不同情境應用的不同軟體堆疊。因此,開發出能夠解決不同情境的堆疊是耗時且困難的。從效能觀點來看,由於額外的運算負擔,對於各種情境應用而言,複雜的軟件不僅是次佳的,額外的運算負擔更可能隨著對於特定應用要求更深的軟體堆疊而增加(如,包含大量層數,且在每一層中支援更多種功能)。
為優化深度學習應用的執行,一種傳統解決方法利用了特殊應用積體電路(application-specific integrated circuit,ASIC)。一般來說,特殊應用積體電路係優化以實施特定任務,並因此改善該等任務的效能。然而,如上所述,深度學習模型的堆疊要求可能有很大的差異。特殊應用積體電路一般而言太過具體特定,導致適用性受到限制。因此,特殊應用積體電路仍無法解決廣泛應用的需求。
另一種優化深度學習應用的執行的傳統方法為利用現場可程式化閘陣列(field programmable gate array,FPGA)裝置。由於現場可程式化閘陣列裝置可重新編程,而能靈活地適應各種已訓練模型和應用,因此受到開發者的注意。然而,現場可程式化閘陣列裝置對於深度學習應用的編程並不簡明易懂。因此,用於處理深度學習應用的開發方案普遍受到限制。一種解決方法為基於已知的軟體堆疊提供深度學習的軟體開發套件。然而,這導致了與上述
討論實質相同的堆疊管理以及運算負擔的問題。另一種解決方法採用「一站式」(turn-key)方案,其中提供了工具套組供使用者支援某些深度學習應用。然而,這種對應用上的有限支援,導致和特殊應用積體電路相同的問題。
基於上述,本領域需要一種可以簡化用於深度學習應用的現場可程式化閘陣列裝置的編程之系統和方法,以能夠充分發揮現場可程式化閘陣列裝置的優點。
本發明的實施例是關於用於編程現場可程式化閘陣列裝置的電腦系統、編程方法以及電腦程式。一種例示性的編程方法包含取得用於深度學習程序的已訓練模型,以及將已訓練模型轉換成設計抽象代碼。其後,系統內的現場可程式化閘陣列裝置可根據設計抽象代碼來編程。設計抽象代碼配置用以定義多個邏輯區塊電路,其中多個邏輯區塊電路的每一個代表多個模組中的其中一個模組。這些模組的每一個模組代表介於深度學習程序的不同層之間的處理步驟。在一些實作中,設計抽象代碼為用以編程現場可程式化閘陣列裝置的暫存器傳輸級代碼。
在一些實施例中,轉換步驟可包含指定通過多個邏輯區塊電路的資料流程。接著,設計抽象代碼指定與在現場可程式化閘陣列裝置中的多個邏輯區塊電路互相連接以提供該資料流程。
轉換步驟也可包含識別已訓練模型的處理步驟以及使各個處理步驟與該些模組中的其中一者相關聯。其後,邏輯區塊電路可被編碼以對應與處理步驟相關聯的模組。
在一些實施例中,方法可在編程之前包含附加步驟。舉例來說,可對現場可程式化閘陣列裝置的空間不足以支援設計抽象代碼所需的多個邏輯區塊電路作出判斷。若做出上述判斷,則在編程步驟期間,可以替代編程模式用於現場可程式化閘陣列裝置。
一種替代編程模式包含識別對應於執行重複操作的邏輯區塊電路的設計抽象代碼,以獲取重複的邏輯區塊電路。接著,可將除了重複區域中之一者以外的重複區域刪除。接著便可更新設計抽象代碼以配置現場可程式化閘陣列裝置,以使用該些重複的邏輯區塊電路中保留之一者來執行重複操作。
另一種替代編程模式包含識別對應於代表由系統中的另一元件執行操作的模組的邏輯區塊電路的設計抽象代碼,以再次獲取重複的邏輯區塊電路。接著,可將來自設計抽象代碼的所有重複的邏輯區塊電路刪除。設計抽象代碼亦可被更新以配置現場可程式化閘陣列裝置,以利用其他元件實施重複操作。
其他實施例係關於一種電腦系統,其包含處理器、現場可程式化閘陣列裝置以及使處理器執行上述方法的記憶體。又其他實施例包含用以使電腦裝置執行上述方法的非暫態電腦可讀取媒體。
100:方法
102、104、106:步驟
200:現場可程式化閘陣列轉換器系統
202:編譯器
204:除錯器
206:分析器
208:模組資料庫
300:串聯模組
302:參數
400:現場可程式化閘陣列裝置
402:閘極陣列
404:暫存器
500:系統
502:中央處理器
600:現場可程式化閘陣列裝置
602:閘極陣列
604:暫存器
700:系統
702:中央處理器
800:現場可程式化閘陣列裝置
802:閘極陣列
804:暫存器
850:其他處理器
852:邏輯區塊
900:系統
902:中央處理器
904:混合處理系統
1000:系統
1002:匯流排
1004:記憶體
1006:唯讀記憶體
1008:隨機存取記憶體
1010:控制器
1012:儲存裝置
1014:模組
1016:模組
1018:模組
1020:輸入裝置
1022:輸出裝置
1024:通信介面
1025:顯示器
1026:感應器
1028:快取記憶體
1030:處理器
1031:現場可程式化閘陣列
1032:快閃記憶體
1034:韌體
1100:系統
1102:晶片組
1104:橋接器
1106:使用者介面元件
1108:通信介面
1110:處理器
1111:現場可程式化閘陣列
1112:韌體
1114:輸出裝置
1116:儲存裝置
1118:隨機存取記憶體
第1圖為根據一實施例繪示的例示方法的步驟流程圖;第2圖示意地繪示根據一實施例的現場可程式化閘陣列的轉換器系統;第3圖示意地繪示根據一實施例的對應模型的串聯模組和參數;第4圖示意地繪示根據一實施例的以「完整」模式編程的現場可程式化閘陣列裝置;第5圖繪示利用第4圖的現場可程式化閘陣列裝置的系統示意圖;第6圖示意地繪示根據一實施例的以「節約」模式編程現場可程式化閘陣列裝置;第7圖繪示利用第6圖的現場可程式化閘陣列裝置的系統示意圖;第8圖示意地繪示根據一實施例的現場可程式化閘陣列裝置以及其他處理器,其中該現場可程式化閘陣列裝置以「混合」模式編程;第9圖繪示利用第8圖的現場可程式化閘陣列裝置以及其他處理器的系統示意圖;第10圖繪示一電腦系統實例,其中該電腦系統的元件彼此利用匯流排電力通信;以及
第11繪示一具有晶片組結構的電腦系統實例,其中該系統可用於執行不同實施例的系統和方法。
本發明參照附圖圖示來說明,其中在所有附圖中使用相同的參考數字以指明相似或同等的元件。附圖並未以實際大小繪示,而僅提供用以說明本發明。下面參照用於說明的實例應用描述了本發明的數個面向。應可理解的是,列舉的許多具體細節、關係以及方法為用以提供對本發明的全面理解。然而,所屬領域中具有通常知識者可輕易地辨別本發明可不以一或多個具體細節或以其他方法來實施。在其他例子中,習知的結構或操作並未詳細繪示以避免混淆本發明。本發明並非受限於所示的動作或事件的順序,部分動作可以不同次序發生及/或和其他動作或事件同步發生。另外,實施本發明所描述的一個或多個態樣或實施例時,並非所有於此示出的步驟皆為必需。
如上所述,利用現場可程式化閘陣列裝置執行深度學習應用的傳統解決方案通常是受到侷限且複雜的。有鑑於上述限制,各個實施例涉及一個在現場可程式化閘陣列裝置中執行已訓練模型的新方法,並因此降低一般為了用於深度學習而使用傳統現場可程式化閘陣列裝置編程解決方案會面臨的複雜和運算負擔(overhead)的問題。特別的是,各個實施例涉及執行一個用於深度學習應用的新的現場可程式化閘陣列轉換器的系統和方法。此處討論的系統和方
法配置以將已訓練模型轉換為暫存器傳輸級(register-transfer level,RTL)代碼或是其他設計抽象代碼。其他抽象設計代碼可包含Verilog或是OpenCL代碼,但不以此為限。設計抽象代碼可用以直接地配置現場可程式化閘陣列裝置。通過上述配置,各個實施例中的新的現場可程式化閘陣列轉換器不僅能減少複雜的開發過程,從而改善開發者體驗,也能提供更簡潔的模型,以調整欲使用的目標現場可程式化閘陣列裝置。
第1圖繪示各個實施例的整體方法。第1圖為傳輸已訓練模型至現場可程式化閘陣列裝置的例示性方法100的步驟流程圖。方法始於步驟102,於步驟102中,用於現場可程式化閘陣列裝置的已訓練模型可被取得。已訓練模型可為任何類型的機器學習模型,以下僅舉數例,包含基於決策樹模型(decision tree based models)、基於線性回歸模型(linear regression based models)、基於神經網路模型(neural network based models)、基於貝氏網路模型(Bayesian network based models)、基於支持向量機模型(support vector machine based models)以及基於最近鄰居模型(nearest neighbor based models),但不以此為限。所提供的機器學習模型也可為不同類型模型的組合。此外,該模型可以任何形式的類型提供。舉例來說,神經網路模型可利用傳統模型提供,如AlexNet、GoogleNet、ResNet、DenseNet或其他神經網路形式的類型。然而,在不同的實施例中,模型的類型和形式並不限定上述所述。雖
然模型在一些實施例中可預處理和訓練,但在其他的實施例中,由於已訓練模型一般包含使用模型所需的全部檔案,因此並不需預處理。舉例來說,這些檔案可包含提供如層數、每層的類型、核心數量、核心尺寸等參數的客製化架構的檔案,以及提供如訓練權重等參數的檔案。
在步驟102中取得已訓練模型後,模型可在步驟104中被轉換為設計抽象代碼。步驟104包含將在步驟102中取得的模型提供予現場可程式化閘陣列轉換器系統進行處理。此現場可程式化閘陣列轉換器系統可為執行深度學習應用的系統的一部份,或是一個全然獨立的系統。進一步地,現場可程式化閘陣列轉換器系統可作為軟體元件、硬體元件,或是以軟硬體元件的組合執行。
最後在步驟106中,在步驟104中取得的設計抽象代碼可用以編程現場可程式化閘陣列裝置。此種編程可以任何已知的現場可程式化閘陣列裝置編程技術來實施。進一步地,此種編程可在執行深度學習應用的系統中實施,或是可一個全然獨立的系統中實施。然而,後者的配置提供了優勢,使得現場可程式化閘陣列裝置可根據需要重新編程以支援不同的應用。
第2圖繪示根據不同實施例的現場可程式化閘陣列裝置轉換器系統的一個例示性執行。如第2圖所繪示,現場可程式化閘陣列轉換器系統200可包含不同元件,如編譯器202、除錯器204以及分析器206。編譯器202可配置用以將已訓練模型編譯(亦即轉換)成設計抽象代碼。除錯器204可提供開發者查看和檢閱編譯器202的操作產生的錯誤訊息,並在之後對現場可程式化閘陣列裝置的設計抽象代碼實施任何必要的除錯或是更新。分析器206可作為診斷工具提供開發者分析正在轉換的模型的編譯時間和執行時間表現。
在操作中,編譯器202配置用以從現場可程式化閘陣列轉換器系統200的模組資料庫208中選擇模組,其中每個模組與介於深度學習操作的特定層之間的操作步驟相關聯。這些模組的每一個可用以配置以優化目標現場可程式化閘陣列裝置內操作步驟的效率。在一些實作中,可針對正在使用的模型的類型對模組進行優化。實施模組的選擇如下。當提供模型予現場可程式化閘陣列轉換器系統200,編譯器202首先對模型的組成實施分析,以將模組分解為串聯的操作。接著,編譯器202自模組資料庫208對應的串聯的操作中辨識串聯的模組。最後,將適當參數連結每一個模組,以能夠執行已訓練模型的對應操作。
在不同的執行中,模組可包含將卷積濾波器應用於圖像的卷積模組(C)、將啟動函數應用於卷積模組的輸出的線性整流函數模組(R)、將圖像資料縮放到不同範圍的正規化模組(N)、將卷積模組得到的圖像資料進行向下取樣的池化模組(P)、將卷積模組得到的以及池化模組向下取樣得到的特徵實施分類的完全連接模組(F)、選擇要放棄訓練的節點的丟棄模組(dropout module)(D),以及基於輸入的值域透過歸一化指數函數Softmax模組(S)產生輸出,但不限於這些模組。然而,不同的實施例在這方面不受限制,且根據不同實施例的現場可程式化閘陣列轉換器系統可配置以支援較上述更多或更少的模組類型。
從上述可看出,不同的模組執行不同的操作。一些模組可利用軟體(演算法)進行優化或滿足硬體資源的限制。舉例來說,卷積操作可被分解成許多向量操作,每個操作皆可獨立運行。因此,可展開操作並平行執行不同的操作(亦即在同一時間下)。在另一個實例中,減少精密度也為一個改善表現效率的良好方法。此外,權重修剪、分群壓縮以及矩陣分解為重要的演算法級別方法,用以壓縮已訓練模型和加速推理。在一些實施例中,可使用硬體優化。舉例來說,查找表可用以映射結果,而非實施計算。
編譯過程因此導致欲由現場可程式化閘陣列裝置串聯執行的模組的集合。舉例來說,第3圖繪示一個例示性串聯模組300。為了易於說明,第3圖中的模組受限於上述所討論的模組。然而,如上所述,不同實施例可配置以支援較上述列舉更多或更少的模組類型。進一步地,如第3圖所繪示,串聯模組300中的每一個模組可與一組參數302中的一個參數有關聯。然而,在一些實作中,串聯模組300中的一些或全部的模組可能不需要任何的參數。
如上所述對應第1圖,設計抽象代碼一旦產生,即可對現場可程式化閘陣列裝置或是電路板進行編程,並可在之後用以深度學習工作負荷或是應用。第4圖繪示一個例示性的已編程的現場可程式化閘陣列裝置。如第4圖所繪
示,現場可程式化閘陣列裝置400包含已編程並用以定義串聯的互連邏輯區塊的閘極陣列402。特別的是,如第4圖所繪示,在閘極陣列402中的邏輯區塊對應到第3圖的串聯模組300。第3圖的參數302可被編程進入第4圖的一或多個暫存器404中,並根據需要和閘極陣列402中的邏輯區塊互連。
接著可以使用編程的現場可程式化閘陣列裝置400,如第5圖所繪示。第5圖示意地繪示實施深度學習工作負荷的系統500的資料流程。如第5圖所繪示,系統包含中央處理器502以及現場可程式化閘陣列裝置400。在操作中,當中央處理器502遇到深度學習任務時,該任務被轉送至現場可程式化閘陣列裝置400。接著,現場可程式化閘陣列裝置400根據其中編程的模型執行該任務。其後,現場可程式化閘陣列裝置400將結果提供回中央處理器502。
在一些實作中,參數不需要儲存在正被編程的現場可程式化閘陣列裝置中。而是當需要實施深度學習任務時,這些參數可被傳送至現場可程式化閘陣列裝置中。另一方面,獨立的記憶體裝置可被耦合至現場可程式化閘陣列裝置以儲存用於現場可程式化閘陣列裝置的參數。
第5圖繪示現場可程式化閘陣列裝置400的配置以及過程,兩者皆為基於現場可程式化閘陣列裝置僅在「完整」模式下操作的假設。也就是說,模型可完全地在現場可程式化閘陣列裝置中執行。然而,在某些情況下,由於硬體的約束及限制,無法實現該配置。舉例來說,現場可程式化閘陣列裝置的閘極陣列可能沒有足夠閘極數量來定義
在現場可程式化閘陣列裝置中執行模型所需要的每一個模組及每個模組的實例。在一些例子中,將數個現場可程式化閘陣列裝置串聯起來以實施任務是可能的。在這樣的配置中,每一個現場可程式化閘陣列裝置會包含串聯的一部份,而最後一個現場可程式化閘陣列裝置將最終結果反饋回中央處理器。然而,在其他實例中,可能僅是多個現場可程式化閘陣列裝置的系統內沒有足夠的實體空間。因此,在不同的實施例中,提供了替代的編程模式以克服這些阻礙。
在一些實施例中,如果可能的話,現場可程式化閘陣列裝置可被編程在「節約」模式下操作。也就是說,如果需要用以執行模型的串聯模組包含重複操作,則和重複操作有關的模組可在現場可程式化閘陣列裝置中重新使用。以這種方式配置的現場可程式化閘陣列裝置600示意地繪示於第6圖中。
如第6圖所繪示,現場可程式化閘陣列裝置600包含已編程並用以定義串聯的互連邏輯區塊的閘極陣列602。特別的是,如第6圖所繪示,在閘極陣列602中的邏輯區塊包含第一組602a以及第二組602b。第一組602a以及第二組602b對應於模型內重複的操作。參數可被編程進入一或多個暫存器604中,並根據需要和閘極陣列602中的邏輯區塊互連。在現場可程式化閘陣列裝置600中,第一組602a以及第二組602b可配置以根據需要多次實施它們各自的操作(如第6圖中指出的迴圈)。
接著可以使用編程的現場可程式化閘陣列裝置
600,如第7圖所繪示。第7圖示意地繪示實施深度學習工作負荷的系統700的資料流程。如第7圖所繪示,系統包含中央處理器702以及現場可程式化閘陣列裝置600。在操作中,當中央處理器遇到深度學習任務時,該任務被轉送至現場可程式化閘陣列裝置600。接著,現場可程式化閘陣列裝置600根據其中編程的模型執行該任務,並根據需要重複任務(如迴圈所指出)。其後,現場可程式化閘陣列裝置600將結果提供回中央處理器702。
考慮到在一些實施例中,現場可程式化閘陣列裝置的重複操作可以不同方式來管理。舉例來說,在一些實施例中,現場可程式化閘陣列裝置可具有硬線式的資料流程以確保資料流回至現場可程式化閘陣列裝置中的適當的模組,上述可確保實施重複操作的正確數量。在其他實施例中,現場可程式化閘陣列裝置的部份的閘極陣列可配置以定義用以控制及管理資料流程的邏輯。在其他實施例中,該過程可由中央處理器控制。也就是說,第一次傳遞的結果可提供予中央處理器,而中央處理器可傳遞結果回現場可程式化閘陣列裝置做進一步處理,直到實施重複操作的數量。此外,上述技術的組合可用在不同的實施例中。
在一些實施例中,現場可程式化閘陣列裝置可配置以跳躍(skip)或旁路(bypass)模組。舉例來說,第6圖繪示了現場可程式化閘陣列裝置配置以使用一或多次模組序列「CRNP」,接著使用一或多次模組序列「FRDS」。第4圖的現場可程式化閘陣列裝置通過「旁路」可達成相同
的結果。也就是說,如第4圖所繪示,使用了兩次序列「CRNP」。其後,為了達成「FRDS」序列,現場可程式化閘陣列裝置400可配置以向前跳躍至「F」、「R」、「D」以及「S」的下一個實例。在這樣的配置中,現場可程式化閘陣列裝置400可配置以接收用以控制如何以及那些模組被旁路的額外參數。在一些實施例中,重複以及旁路功能可在相同的現場可程式化閘陣列裝置中一起執行。因此,回頭參閱第4圖,若需要多於「CRNP」的兩個實例,則現場可程式化閘陣列裝置400可配置以重複一或多個可用的實例以提供所需的功能。
如上所述,在一些實施例中,模型可儲存在處理來自串聯的中央處理器的輸入訊號的現場可程式化閘陣列串聯裝置中,而最後一個現場可程式化閘陣列裝置將最後結果回傳至中央處理器。然而,在一些實施例中,提供了「混合」的模式。也就是說,可減少所需用於現場可程式化閘陣列裝置的模組的數量以及邏輯電路區塊,其中這樣的模組已在系統他處執行。舉例來說,系統中其他的現場可程式化閘陣列裝置或加速器可能已經配置包含執行這樣的模組的邏輯電路區塊。在此情形下,現場可程式化閘陣列裝置可配置與其他深度學習任務裝置相互配合使用。這在第8圖和第9圖被示意地繪示出。
第8圖繪示已編程的現場可程式化閘陣列裝置800,其用以與其他處理器850配合使用。現場可程式化閘陣列裝置800包含已編程並用以定義串聯的互連邏輯區塊
的閘極陣列802。參數可被編程進入一或多個暫存器804中,並根據需要和陣列802中的邏輯區塊互連。其他處理器850也可為現場可程式化閘陣列裝置、加速器或其他處理器。其他處理器850可包含用以執行在閘極陣列802的中邏輯區塊無法實施的操作的邏輯區塊852。在一些實作中,可加入額外的現場可程式化閘陣列裝置、加速器或其他處理器,以實施現場可程式化閘陣列裝置800或其他處理器850中的任何一個不可用的額外的操作。
已編程的現場可程式化閘陣列裝置800和其他處理器850(以及其他任何的裝置)可如第9圖中所繪示般使用。第9圖示意地繪示實施深度學習工作負荷的系統900的資料流程。如第9圖所繪示,系統包含中央處理器902以及混合處理系統904。在操作中,當中央處理器902遇到深度學習任務時,該任務被轉送至混合處理系統904。任務一旦完成,混合處理系統904將結果提供回中央處理器902。
在系統900中,混合處理系統904由至少現場可程式化閘陣列裝置800和其他處理器850(在此情況下配置為加速器)所組成。然而,如上所述對應第8圖,現場可程式化閘陣列裝置800和其他處理器850可配置以和其他不同的裝置配合使用。因此,如第9圖所繪示,混合處理系統904可包含一或多個額外的裝置。
混合處理系統904操作如下述。在從中央處理器902接收到任務後,任務被傳送到混合處理系統904內的其中一個元件。該元件接著實施一些操作,並將任務傳送至
混合處理系統904內的其他元件。重複這個過程直到任務完成。接著,完成任務的最後操作的元件可傳送最後結果回中央處理器902。
舉例來說,現場可程式化閘陣列裝置800可實施任務的第一次操作,其他處理器850可執行任務的額外的操作。若任務完成後,其他處理器850可接著傳送任務至中央處理器。若任務尚未完成(亦即需要更多操作),任務可根據完成任務所需,被傳送回現場可程式化閘陣列裝置800或混合處理系統904內的其他元件。
在某些實施例中,中央處理器可為混合處理系統的一部份。也就是說,中央處理器可包含有效率地實施某些操作的邏輯。因此,在一些例子中,資料可在中央處理器、現場可程式化閘陣列以及其他元件中間傳送,以完成所有的操作。
在不同的實施例中,用於混合處理系統的不同元件的參數可以不同的方式儲存。在一些例子中,每個元件的參數可與每個元件一起儲存。在一些例子中,當需要實施操作時,可將這些參數傳送至元件。這些參數可從混合操作系統內部源或外部源傳送。舉例來說,參數可由中央處理器提供,另一方面,獨立的記憶體裝置可被耦合至混合處理系統以儲存這些參數。
在一些實施例中,「混合」和「節約」模式可結合使用。也就是說,可根據需要重複不同元件提供的操作。舉例來說,回頭參閱第9圖,現場可程式化閘陣列裝置
800、其他處理器850或混合處理系統904中的其他任何元件實施的操作,可根據需要配置以重複操作來完成任務。
如上所述,可用不同方式管理重複的操作。舉例來說,在一些使用混合處理系統的實施例中,混合操作系統的元件可具有元件之間的硬線式的資料流程以確保資料流回至適當的元件,以及確保實施重複操作的正確數量。在其他實施例中,混合處理系統的一或多個元件可配置以定義控制以及管理元件之間的資料流程的邏輯。在其他實施例中,過程可由中央處理器控制。也就是說,第一次傳送的結果可由中央處理器提供,且中央處理器將結果傳送回混合處理系統做進一步處理,直到實施重複操作的數量。此外,上述技術的組合可用在不同的實施例中。
在不同的實施例中,可預期能自動選擇模式選擇。也就是說,編譯器可檢查欲使用的現場可程式化閘陣列裝置,並判斷可行的模式與選擇無須使用者輸入的適當的模式。舉例來說,若編譯器判斷現場可程式化閘陣列裝置無法容納整個模型(亦即「完整」模式是不可能的),則編譯器可判斷是否可執行「節約」和「混合」中的一或兩種模式。若兩種模式皆為可能,則編譯器接著可配置以檢查現場可程式化閘陣列裝置和/或其他元件,以辨別那種模式預期能為所需操作提供最佳表現。另一方面,編譯器可以優先順序選擇模式。
在一些實施例中,使用者可指定所欲或喜好的模式。舉例來說,若「完整」模式是可能的,則使用者可指
示編譯器應配置以在此模式下自動使用現場可程式化閘陣列裝置。在其他實例中,若使用者意識到某些元件已經存在於系統用於有效地執行某些操作,則使用者可要求混合模式。在一些例子中,使用者也可辨認欲借助利用的現有元件。然而,在其他例子中,編譯器可配置以自動檢測系統中的元件。如此一來,使用者可選擇借助利用系統的現有功能。在其他實例中,使用者也可指定介於「節約」和「混合」之間的喜好的模式。
模式選擇的實例如下述。編譯器將分析已訓練模型、偵測到的元件(中央處理器、現場可程式化閘陣列或圖形處理器)、所需的資源(記憶體和暫存器)以及執行每一個模組最有效率的方法。舉例來說,通常使用圖形處理器以更有效地實施卷積操作。因此,若編譯器偵測到在電腦系統的圖形處理器是可用的,則可選擇混合模式以利用圖形處理器來實施卷積操作。在其他實例中。若編譯器判斷現場可程式化閘陣列無法達到執行模型所需的一或多個模組的要求,則轉換器可將現場可程式化閘陣列聯合中央處理器、圖形處理器或其他可用的現場可程式化閘陣列,以實施這些任務。
雖然上述有關系統的有限細節描述了例示性的實施例,但它們可以被執行或以其他方式使用,而這僅是便於說明。而是,不同的實施例可在包含上述更多的元件的系統中執行或以其他方式使用。例示性系統對應第10圖和第11圖被繪示出。然而,不同的實施例並不限定於此例示性
系統。
第10圖繪示電腦系統1000的實例,其中電腦系統的元件利用匯流排1002彼此電力通信。系統1000包含處理單元1030(中央處理器或是處理器)以及系統匯流排1002,系統匯流排1002將不同的系統元件如系統記憶體1004(例如唯讀記憶體1006和隨機存取記憶體1008)耦合到處理器1030。系統1000可包含直接連接、緊密鄰接或整合成部分處理器1030的高速緩衝記憶體。系統1000可將來自記憶體1004及/或儲存裝置1012資料複製到快取記憶體1028以供處理器1030快速存取。如此一來,在等待數據的同時,快取記憶體可為處理器1030提供表現提升。這些和其他模組可控制或配置來控制處理器1030以實施不同的動作。其他系統記憶體1004也可用於使用。記憶體1004可包含多個不同類型且不同效能特徵的記憶體。處理器1030可包含任何通用的處理器和硬體模組或軟體模組,如嵌入儲存裝置1012中的第一模組1014、第二模組1016以及第三模組1018。硬體模組或軟體模組配置以控制處理器1030和軟體指令被結合到實際處理器設計中的專用處理器。處理器1030實質上可為自包含電腦系統,包含了多個核心或處理器、匯流排、記憶體控制器、快取記憶體等等。多核心處理器可為對稱或非對稱。
除了處理器1030外,其他處理器可整合進系統1000中。舉例來說,如第10圖所繪示,可提供現場可程式化閘陣列1031或其他處理器。如第10圖所繪示,現場可程
式化閘陣列1031也可耦合至系統匯流排1002以使現場可程式化閘陣列1031和系統1000內的其他元件通信以及互動。然而,在一些實施例中,現場可程式化閘陣列1031可耦合至系統1000內的其他元件。
為讓使用者能與電腦裝置1000互動,提供了輸入裝置1020作為輸入機構。輸入裝置1020可包含用於語音的麥克風、用於手勢或圖像輸入的觸摸屏、鍵盤、滑鼠、動作輸入等等。在一些實例中,多模式系統可讓使用者能夠提供多種類型的輸入以和系統1000通信。在這樣的實例中,同樣可提供輸出裝置1022。通信介面1024可監督以及管理使用者輸入和系統輸出。舉例來說,可通過顯示器1025來輸出系統。
儲存裝置1012可為非揮發性記憶體以儲存電腦可存取的資料。儲存裝置1012可為磁性卡匣、快閃記憶卡、固態記憶體裝置、數位多功能光碟、卡匣、隨機存取記憶體1008、唯讀記憶體1006,以及上述之混合。
控制器1010可為系統1000上專用的微控制器或是處理器,例如基板管理控制器。在一些例子中,控制器1010可為智慧管理平台介面的一部份。此外,在一些例子中,控制器1010可被嵌入系統1000的主機板或是主要電路板中。控制器1010可管理系統管理軟體和平台硬體之間的介面。控制器1010也可與不同系統裝置以及元件(內部及/或外部),如控制器或周邊元件通信,進一步如下述。
控制器1010可產生對通知、警報及/或事件的
特定回應,以及和遠端裝置或元件(如電子郵件訊息、網路訊息等等)通信以產生用於自動硬體回復程序的指示或命令等等。管理者也可與控制器1010遠端通信以啟動或是實施特定的硬體回復程序的程序或操作,其操作進一步如下述。
控制器1010也可包含系統事件紀錄控制器及/或儲存器用以管理和維護控制器1010接收的事件、警報以及通知。舉例來說,控制器1010或系統事件紀錄控制器接收來自一或多個裝置和元件的警報和通知,並維護系統事件儲存元件內的警報和通知。
快閃記憶體1032可為系統1000使用並用於儲存及/或資料傳送的電子非揮發性電腦儲存媒體或晶片。快閃記憶體1032可被電性擦除及/或重新編程。快閃記憶體1032,舉例來說,可包含可擦除可規劃式唯讀記憶體(erasable programmable read-only memory,EPROM)、電子可擦除可規劃式唯讀記憶體(electrically erasable programmable read-only memory,EEPROM)、唯讀記憶體、非揮發性隨機存取記憶體或互補式金氧半場效電晶體。當系統1000以及指定用於韌體1034的一組配置首次通電時,快閃記憶體1032可儲存系統1000執行的韌體1034。快閃記憶體1032也可儲存韌體1034使用的配置。
韌體1034可包含基本輸入輸出系統或其同等設備,如可延伸韌體介面或統一可延伸韌體介面。每一次系統1000啟動時,韌體1034可做為順序程式被加載或執行。韌體1034可基於該組配置來識別、初始化以及測試系統1000中存在的硬體。韌體1034可在系統1000上實施自測試,如開機自測試(Power-on-Self-Test,POST)。該自測試可測試不同硬體元件的功能,如硬碟、光學讀取裝置、冷卻裝置、記憶體模組、擴充卡等等。韌體1034可處理及分配在記憶體1004、唯讀記憶體1006、隨機存取記憶體1008,及/或儲存裝置1012中的區域,以儲存操作系統。韌體1034可加載啟動載入器及/或操作系統,並將系統1000的控制權交予操作系統。
系統1000的韌體1034可包含韌體配置,其定義了韌體1034是如何控制系統1000內不同的硬體元件。韌體配置可決定系統1000內的不同硬體元件的啟動順序。韌體1034可提供介面,如統一可延伸韌體介面,使得能夠設置多種不同的參數,而這些參數與韌體默認配置中的參數不同。舉例來說,使用者(如管理者)可使用韌體1034以指定時序及匯流排的速度、定義連結到系統1000的周邊設備、設置健康監控(如風扇速度以及中央處理器溫度限制)及/或提供其他多種影響整體表現及系統1000電量使用的其他參數。雖然韌體1034被繪示為儲存在快閃記憶體1032中,但所屬領域中具有通常知識者可輕易辨別韌體1034可儲存在其他記憶體元件中,如記憶體1004或唯讀記憶體1006。
系統1000可包含一或多個感應器1026。一或多個感應器1026可包含,舉例來說,一或多個溫度感應器、熱感應器、氧氣感應器、化學感應器、噪音感應器、電流感
應器、電壓偵測器、空氣流量感應器、流量感應器、紅外線溫度計、熱通量感應器、溫度計、高溫計等等。舉例來說,一或多個感應器1026可藉由匯流排1002和處理器1030、快取記憶體1028、快閃記憶體1032、通信介面1024、顯示器1025、記憶體1004、唯讀記憶體1006、隨機存取記憶體1008、控制器1010以及儲存裝置1012通信。一或多個感應器1026也可藉由一或多個不同方法與系統內其他元件通信,如內部積體電路、通用型輸出等等。系統1000上不同類型的感應器(如感應器1026)也可向控制器匯報參數,如冷卻風扇速度、電源狀態、操作系統狀態、硬體狀態等等。
第11圖繪示具有可用於執行上述方法或操作,以及產生和顯示圖形化使用者介面的晶片組架構的電腦系統1100的實例。電腦系統1100可包含用以執行揭露技術的電腦硬體、軟體以及韌體。系統1100可包含處理器1110,該處理器代表能夠處理配置以實施識別計算的軟體、韌體或硬體的多種物理及/或邏輯上不同的資源。處理器1110能和控制處理器1110的輸入與輸出的晶片組1102通信。在這樣的實例中,晶片組1102將信息輸出至輸出裝置1114,如顯示器,且可讀取和寫入訊息到儲存裝置1116。系統1100也可包含額外的處理器,如現場可程式化閘陣列1111。現場可程式化閘陣列1111也可與晶片組1102通信以控制現場可程式化閘陣列1111的輸入與輸出。然而,在其他的實施例中,現場可程式化閘陣列可連結至系統1100內的其他元件。
舉例來說,儲存裝置1116可包含磁性媒體以及固態媒體。晶片組1102也可讀取來自隨機存取記憶體1118的資料並將資料寫入隨機存取記憶體1118中。可提供用於接合多種使用者介面元件1106的橋接器1104以接合晶片組1102。使用者介面元件1106可包含鍵盤、麥克風、觸控偵測和處理電路以及指向裝置,如滑鼠。
晶片組1102也可與一或多個具有不同物理界面的通信介面1108接合。這樣的通信介面可包含用於有線和無線區域網路、用於寬頻無線網路以及用於個人區域網路的介面。進一步地,機器可接收通過使用者介面元件1106來自使用者的輸入並利用處理器1110來解釋這些輸入以執行適當的功能,如瀏覽功能。
此外,晶片組1102也可與韌體1112通信,當通電時韌體1112可由電腦系統1100執行。韌體1112可基於一組韌體配置來辨識、初始化以及測試系統1100中存在的硬體。韌體1112可在系統1100上實施自測試,如開機自測試。該自測試可測試不同硬體元件1102-1108的功能。韌體1112可處理及分配在隨機存取記憶體1118中的區域,以儲存操作系統。韌體1112可加載啟動載入器及/或操作系統,並將系統1100的控制權交予操作系統。在一些例子中,韌體1112可與硬體元件1102-1110以及1114-1118通信。在此,韌體1112可藉由晶片組1102及/或一或多個其他元件來與硬體元件1102-1110以及1114-1118通信。在一些例子中,韌體1112可與硬體元件1102-1110以及1114-1118直
接通信。
可理解的是,在示例之系統1000和1100可具有多於一個的處理器,或為網路連接在一起的電腦裝置的群組或叢集的一部份,以提供更佳的處理能力。
為了明確解釋,在一些實施例中,本揭露可能會呈現為包含個別功能區塊、包含功能區塊、裝置及/或裝置元件、體現在軟體或軟硬體組合的步驟或常規。
在一些實施例中,電腦可讀取儲存裝置、媒體以及記憶體可包含位元串流等的有線或無線訊號。然而,當提及時,非暫態電腦可讀取儲存媒體明確地排除如能量、載波信號、電磁波以及信號本身的媒體。
根據上述實施例的方法可以使用從電腦可讀媒體儲存或以其他方式獲得的電腦可執行指令來執行。這些指令可包含,舉例來說,產生或以其他方式配置成通用計算機、專用計算機或專用處理裝置,以實施某一功能或一組功能的指令或資料。部分所使用的電腦資源可經由網路存取。電腦可執行指令,舉例來說,可為二進位及中間格式指令,如組合語言、韌體或是原始碼。
根據這些揭露的裝置執行方法可包含硬體、韌體及/或軟體,且可採取各種形式因素。這些形式因素的典型例子可包含筆記型電腦、智慧型行動電話、小型形式因素個人電腦、個人數位助理、機架式裝置、獨立裝置等等。本文所述的功能也可嵌入至周邊設備或附加卡中。經由進一步的實例,這樣的功能也可在不同晶片中的電路板上執行,或
是在個別裝置中執行不同的過程。
不同實施例可在廣泛不同的操作環境中進一步實施,其中在一些例中可包含一或多個伺服器電腦、使用者電腦或是可用於操作任何多個應用中的電腦裝置。使用者或客戶裝置可包含多種通用電腦的任何一種,如運行標準操作系統的桌上型電腦或是筆記型電腦,以及運行移動軟體的蜂巢式、無線或是手持裝置,並且能夠支援多種網路和信息協定。這樣的系統也可包含多種運行任何多種商業可用操作系統的許多工作站,以及包含其他已知用途的應用,如開發以及資料庫管理。這些裝置也可包含其他電子裝置,如虛擬端子、精簡型電腦、遊戲系統以及其他能夠藉由網路通信的裝置。
就實例或其部分而言,其在硬體中執行,而本揭露可以下述技術一個或多個組合來執行:具有邏輯閘以在資料訊號上執行邏輯功能的離散邏輯電路;具有適當組合的邏輯閘的特定應用積體電路;可編程的硬體,如可程式邏輯閘陣列、現場可程式化閘陣列等等。
大多數實例使用所屬領域中具有通常知識者熟悉的至少一網路,藉由利用多種商業可用協定,如傳輸控制協定/網際網路協定、開放系統連結、檔案傳輸協定、通用型隨插即用協定、網路檔案系統、網路文件共享系統、AppleTalk等等,來支援通信。舉例來說,網路可為區域網路、廣域網路、虛擬私人網路、網際網路、企業內部網路、企業外部網路、公眾交換電話網路、紅外線網路、無線網路
以及上述任何組合。
根據這些技術的裝置執行方法可包含硬體、韌體及/或韌體,且可採取各種形式因素。這些形式因素的典型例子可包含伺服器電腦、筆記型電腦、智慧型行動電話、小型形式因素個人電腦、個人數位助理等等。本文所述的功能也可嵌入至周邊設備或附加卡中。經由進一步的實例,這樣的功能也可在不同晶片中的電路板上執行,或是在個別裝置中執行不同的過程。
在使用網頁伺服器的實例中,網頁伺服器可運行多種伺服器或是中間應用,包含超文件傳輸協定伺服器、檔案傳輸協定伺服器、共同閘道介面伺服器、資料伺服器、Java伺服器以及商業應用伺服器。為回應使用者裝置的要求,網頁伺服器也能夠執行程式或是指令碼。舉例來說,網頁伺服器可執行一或多個網路應用,這些網路應用可以一或多個以任何編程語言,如Java®、C、C#或C++,或任何指令碼語言,如Perl、Python或TCL以及上述組合的指令碼或是程式來執行。網頁伺服器也可包含資料庫伺服器,包括那些在公開市場上為商業可用的資料庫伺服器。
如上所述,伺服器系統可包含多種資料儲存以及其他記憶體和儲存媒體。這些可留駐在多個位置,如在一或多個電腦區域(和/或留駐)的儲存媒體,或是遠離網路上的電腦。在一組特別的實例中,信息可留駐在所屬領域中具有通常知識者熟悉的儲存區域網路。類似地,任何用以實施歸屬於電腦、伺服器或其他網路裝置功能的必要的檔案,可
視情況儲存在區域及/或遠端。在系統包含電腦化裝置的情形下,每一個這樣的裝置可包含能夠藉由匯流排電性連接,且利用單元包括如至少一個中央處理器、至少一個輸入裝置(如滑鼠、鍵盤、控制器、觸控顯示單元或按鍵),以及至少一個輸出裝置(如顯示裝置、印表機或揚聲器)的硬體單元。這樣的系統也可包含一或多個儲存裝置,如磁碟機、光學儲存裝置、固態儲存裝置(如隨機存取記憶體或唯讀記憶體)、移動媒體裝置、記憶卡以及快閃記憶卡等等。
用於包含代碼或代碼的一部份的儲存媒體和電腦可讀媒體可包含任何所屬領域中已知或已被使用的適當媒體,包括儲存媒體以及電腦媒體。儲存媒體和電腦媒體可包含用以儲存及/和傳送資料或信息的移動和非移動媒體,但不意欲限定這些媒體。移動和非移動媒體包含隨機存取記憶體、唯讀記憶體、可擦除可規劃式唯讀記憶體、電子可擦除可規劃式唯讀記憶體、快閃記憶體或其他記憶體技術、光碟唯讀記憶體、數位多功能光碟或其他光學儲存、磁性卡匣、磁帶、磁碟儲存或其他磁碟儲存裝置。移動或非移動媒體可用以儲存系統裝置可存取的想要的信息。資料和信息可包含電腦可讀指令、資料結構、程式模組或其他資料。基於本文所提供的技術和教示,所屬領域中具有通常知識者可理解可以其他方式及/或方法執行本揭露的多種面向。
因此,說明書和圖示將被認為是說明性的而非限制性的。然而,在不偏離如申請專利範圍中所闡述的本專利申請的更廣泛的精神和範圍的情況下,可對其進行各種修飾和改變。
100‧‧‧方法
102、104、106‧‧‧步驟
Claims (10)
- 一種編程方法,包含:取得用於一深度學習程序之一已訓練模型;轉換該已訓練模型為一設計抽象代碼;根據該設計抽象代碼,在一系統中編程一現場可程式化閘陣列裝置,其中,該設計抽象代碼包含在該現場可程式化閘陣列裝置中用以編程複數個邏輯區塊電路的代碼,該些邏輯區塊電路的每一者代表複數個模組中之一者,該些模組用於執行於該深度學習程序的不同層間之處理步驟;以及於一編程期間執行一替代編程模式,其中該替代編程模式包含:識別對應於代表由該系統中的另一元件所執行之一操作的該些邏輯區塊電路的該設計抽象代碼,以獲取重複的邏輯區塊電路;刪除來自該設計抽象代碼的該重複的邏輯區塊電路;以及更新該設計抽象代碼,以配置該現場可程式化閘陣列裝置,以利用該另一元件實施重複的該操作。
- 如申請專利範圍第1項之編程方法,其中轉換的操作包含指定通過該些邏輯區塊電路的一資料流程,且其中該設計抽象代碼指定該現場可程式化閘陣列裝置中的該些邏輯區塊電路的互連以提供該資料流程。
- 如申請專利範圍第1項的編程方法,更包含:在編程之前,判斷該現場可程式化閘陣列裝置不足以用於該設計抽象代碼所需的該些邏輯區塊電路;以及相應於該現場可程式化閘陣列裝置不足以用於該設計抽象代碼所需的該些邏輯區塊電路的判斷,在該編程期間,實施用於該現場可程式化閘陣列裝置的該替代編程模式。
- 一種電腦系統,包含:一處理器;一現場可程式化閘陣列裝置,通訊耦接至該處理器;以及一記憶體,用於儲存使該處理器執行複數步驟的複數指令,該些步驟包含:取得用於一深度學習程序之一已訓練模型;轉換該已訓練模型為一設計抽象代碼;根據該設計抽象代碼,編程該現場可程式化閘陣列,其中,該設計抽象代碼包含在該現場可程式化閘陣列裝置中用以編程複數個邏輯區塊電路的代碼,該些邏輯區塊電路的每一者代表複數個模組中之一者,該些模組用於執行於該深度學習程序的不同層間之處理步驟;以及於一編程期間執行一替代編程模式,其中該替代編程模式包含: 識別對應於代表由該系統中的另一元件所執行之一操作的該些邏輯區塊電路的該設計抽象代碼,以獲取重複的邏輯區塊電路;刪除來自該設計抽象代碼的該重複的邏輯區塊電路;以及更新該設計抽象代碼,以配置該現場可程式化閘陣列裝置,以利用該另一元件實施重複的該操作。
- 如專利申請範圍第4項的電腦系統,其中該設計抽象代碼包含一暫存器傳輸級代碼。
- 如專利申請範圍第4項的電腦系統,其中轉換的操作包含指定通過該些邏輯區塊電路的一資料流程,且其中該設計抽象代碼指定該現場可程式化閘陣列裝置中的該些邏輯區塊電路的互連以提供該資料流程。
- 如專利申請範圍第4項的電腦系統,更包含:在編程之前,判斷該現場可程式化閘陣列裝置不足以用於該設計抽象代碼所需的該些邏輯區塊電路;以及相應於該現場可程式化閘陣列裝置不足以用於該設計抽象代碼所需的該些邏輯區塊電路的判斷,在該編程期間,實施用於該現場可程式化閘陣列裝置的該替代編程模式。
- 一種非暫態電腦可讀取媒體,在其上儲存由一電腦裝置執行的一電腦程式,該電腦程式包含用於使該電腦裝置執行複數步驟的複數個代碼段,該些步驟包含:取得用於一深度學習程序之一已訓練模型;轉換該已訓練模型為一設計抽象代碼;根據該設計抽象代碼,編程一現場可程式化閘陣列裝置,其中,該設計抽象代碼包含在該現場可程式化閘陣列裝置中用以編程複數個邏輯區塊電路的代碼,該些邏輯區塊電路的每一者代表複數個模組中之一者,該些模組用於執行於該深度學習程序的不同層間之處理步驟;以及於一編程期間執行一替代編程模式,其中該替代編程模式包含:識別對應於代表由該系統中的另一元件所執行之一操作的該些邏輯區塊電路的該設計抽象代碼,以獲取重複的邏輯區塊電路;刪除來自該設計抽象代碼的該重複的邏輯區塊電路;以及更新該設計抽象代碼,以配置該現場可程式化閘陣列裝置,以利用該另一元件實施重複的該操作。
- 如專利申請範圍第8項的非暫態電腦可讀取媒體,其中轉換的操作包含指定通過該些邏輯區塊電路 的一資料流程,且其中該設計抽象代碼指定該現場可程式化閘陣列裝置中的該些邏輯區塊電路的互連以提供該資料流程。
- 如專利申請範圍第8項的非暫態電腦可讀取媒體,更包含:在編程之前,判斷該現場可程式化閘陣列裝置不足以用於該設計抽象代碼所需的該些邏輯區塊電路;以及相應於該現場可程式化閘陣列裝置不足以用於該設計抽象代碼所需的該些邏輯區塊電路的判斷,在該編程期間,實施用於該現場可程式化閘陣列裝置的該替代編程模式。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/891,762 | 2018-02-08 | ||
US15/891,762 US11568232B2 (en) | 2018-02-08 | 2018-02-08 | Deep learning FPGA converter |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201935264A TW201935264A (zh) | 2019-09-01 |
TWI709088B true TWI709088B (zh) | 2020-11-01 |
Family
ID=64184014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107123892A TWI709088B (zh) | 2018-02-08 | 2018-07-10 | 電腦系統、編程方法及非暫態電腦可讀取媒體 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11568232B2 (zh) |
EP (1) | EP3525119B1 (zh) |
JP (1) | JP6676126B2 (zh) |
CN (1) | CN110134379B (zh) |
TW (1) | TWI709088B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11537856B2 (en) * | 2018-08-08 | 2022-12-27 | Applied Brain Research Inc. | Digital circuits for evaluating neural engineering framework style neural networks |
US11954573B2 (en) * | 2018-09-06 | 2024-04-09 | Black Sesame Technologies Inc. | Convolutional neural network using adaptive 3D array |
KR102680097B1 (ko) * | 2019-11-01 | 2024-07-02 | 삼성전자주식회사 | 전자 장치 및 그 동작 방법 |
TWI755112B (zh) * | 2020-10-23 | 2022-02-11 | 財團法人工業技術研究院 | 電腦程式碼之優化方法、優化系統及應用其之電子裝置 |
KR102268813B1 (ko) * | 2020-12-14 | 2021-06-25 | 주식회사 모빌린트 | 딥러닝 알고리즘을 위한 fpga 설계 방법 및 시스템 |
JP2023020264A (ja) * | 2021-07-30 | 2023-02-09 | 株式会社Screenホールディングス | スケジュール作成方法、スケジュール作成装置、基板処理装置、基板処理システム、記録媒体、及びスケジュール作成プログラム |
CN115426265B (zh) * | 2022-11-02 | 2023-04-18 | 之江实验室 | 一种多模态网络下交换资源分配优化方法及装置、介质 |
US12056533B2 (en) | 2022-11-02 | 2024-08-06 | Zhejiang Lab | Method, apparatus and medium for optimizing allocation of switching resources in polymorphic network |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100076915A1 (en) * | 2008-09-25 | 2010-03-25 | Microsoft Corporation | Field-Programmable Gate Array Based Accelerator System |
CN104680236A (zh) * | 2015-02-13 | 2015-06-03 | 西安交通大学 | 核函数极限学习机分类器的fpga实现方法 |
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
CN106529668A (zh) * | 2015-11-17 | 2017-03-22 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915195B (zh) * | 2015-05-20 | 2017-11-28 | 清华大学 | 一种基于现场可编程门阵列实现神经网络计算的方法 |
CN106228238B (zh) * | 2016-07-27 | 2019-03-22 | 中国科学技术大学苏州研究院 | 现场可编程门阵列平台上加速深度学习算法的方法和系统 |
US10621486B2 (en) | 2016-08-12 | 2020-04-14 | Beijing Deephi Intelligent Technology Co., Ltd. | Method for optimizing an artificial neural network (ANN) |
US10163197B2 (en) * | 2016-12-02 | 2018-12-25 | Tata Consultancy Services Limited | System and method for layer-wise training of deep neural networks |
US11676004B2 (en) * | 2017-08-15 | 2023-06-13 | Xilinx, Inc. | Architecture optimized training of neural networks |
-
2018
- 2018-02-08 US US15/891,762 patent/US11568232B2/en active Active
- 2018-07-10 TW TW107123892A patent/TWI709088B/zh active
- 2018-07-26 CN CN201810832509.0A patent/CN110134379B/zh active Active
- 2018-10-24 JP JP2018200292A patent/JP6676126B2/ja active Active
- 2018-11-07 EP EP18205023.7A patent/EP3525119B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100076915A1 (en) * | 2008-09-25 | 2010-03-25 | Microsoft Corporation | Field-Programmable Gate Array Based Accelerator System |
CN104680236A (zh) * | 2015-02-13 | 2015-06-03 | 西安交通大学 | 核函数极限学习机分类器的fpga实现方法 |
CN106529668A (zh) * | 2015-11-17 | 2017-03-22 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
Non-Patent Citations (1)
Title |
---|
Yufei Ma, Yu Cao, Sarma Vrudhula, Jae-sun Seo, "An Automatic RTL Compiler for High-Throughput FPGA Implementation of Diverse Deep Convolutional Neural Networks," 2017 27th International Conference on Field Programmable Logic and Applications (FPL), 2017. * |
Also Published As
Publication number | Publication date |
---|---|
US20190244095A1 (en) | 2019-08-08 |
TW201935264A (zh) | 2019-09-01 |
US11568232B2 (en) | 2023-01-31 |
EP3525119A1 (en) | 2019-08-14 |
JP2019139742A (ja) | 2019-08-22 |
EP3525119B1 (en) | 2021-09-29 |
CN110134379A (zh) | 2019-08-16 |
CN110134379B (zh) | 2022-11-22 |
JP6676126B2 (ja) | 2020-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI709088B (zh) | 電腦系統、編程方法及非暫態電腦可讀取媒體 | |
US9003343B2 (en) | Energy consumption simulation and evaluation system for embedded device | |
US11372380B2 (en) | Media-to-workflow generation using artificial intelligence (AI) | |
Lockhart et al. | Design considerations for the WISDM smart phone-based sensor mining architecture | |
Levis | Experiences from a Decade of {TinyOS} Development | |
US7596687B2 (en) | System and method for information handling system interoperable firmware storage | |
WO2020214396A1 (en) | Automatic feature subset selection based on meta-learning | |
WO2020248511A1 (zh) | 一种基于运行时模型实现对终端应用控制的方法 | |
JP6701398B2 (ja) | リモートユーティリティによるファームウェアの更新 | |
US20130346992A1 (en) | Computing system, method for controlling thereof, and computer-readable recording medium having computer program for controlling thereof | |
EP3809347A1 (en) | Media-to-workflow generation using artificial intelligence (ai) | |
Ryabinin et al. | Ontology-driven edge computing | |
CN109391508B (zh) | 在数据中心自动组成数据中心资源的计算机实施方法 | |
Shan et al. | KubeAdaptor: a docking framework for workflow containerization on Kubernetes | |
US20230186117A1 (en) | Automated cloud data and technology solution delivery using dynamic minibot squad engine machine learning and artificial intelligence modeling | |
US20230117893A1 (en) | Machine learning techniques for environmental discovery, environmental validation, and automated knowledge repository generation | |
CN108334313A (zh) | 用于大型soc研发的持续集成方法、装置及代码管理系统 | |
TW202219842A (zh) | 產生原始程式碼以為邊緣設備和現有工具鏈構建安全的機器學習引擎 | |
Luo | Scaling Up Task Execution on Resource-Constrained Systems | |
US20240248761A1 (en) | System and method for infrastructure management using self describing services | |
JP2023039924A (ja) | 機器に搭載された多数の連合学習モデルを管理する方法、システム、およびコンピュータプログラム | |
CN118276832A (zh) | 多模型工作流构建方法、装置、电子设备及存储介质 | |
JP2024121770A (ja) | 人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(device and method for providing benchmark result of artificial intelligence based model) | |
JP2024121758A (ja) | 人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(device and method for providing benchmark result of artificial intelligence based model) | |
CN117747983A (zh) | 电量的动态电源管理方法、装置、计算机设备和存储介质 |