計算機架構與系統實驗室

Computer Architecture and System Laboratory

使用者工具

網站工具


group:aionchip

差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

Both sides previous revision 前次修改
下次修改
前次修改
group:aionchip [2020/06/03 07:06]
admin
group:aionchip [2020/06/03 09:13]
admin
行 8: 行 8:
  
 CASLab GPU 透過電子系統層級 (Electronic System-Level, ESL)的 Full System 設計方案,軟體與硬體開發能在早期開發即進行系統驗證。利用 C 與 C++所實作的指令級模擬器(Instruction Set Simulator, ISS)可驗證指令集的功能正確性並提供時間模型(Timing Model)來做效能上的初步評估。而 SystemC 等高階硬體描述語言則提供彈性的硬體設計方法,因為是 Cycle-Accurate 行為,開發者在早期階段就能夠更準確的達到效能分析,也能作為後續如 Verilog 等暫存器傳遞語言(Register-transfer Language)的實作範本。目前 CASLab GPU 已在 FPGA 層級完成功能性的驗證,接下來會繼續優化與考慮實際硬體的成本,讓 CASLab GPU 能夠成為一顆高效能的 Edge Computing IP。 CASLab GPU 透過電子系統層級 (Electronic System-Level, ESL)的 Full System 設計方案,軟體與硬體開發能在早期開發即進行系統驗證。利用 C 與 C++所實作的指令級模擬器(Instruction Set Simulator, ISS)可驗證指令集的功能正確性並提供時間模型(Timing Model)來做效能上的初步評估。而 SystemC 等高階硬體描述語言則提供彈性的硬體設計方法,因為是 Cycle-Accurate 行為,開發者在早期階段就能夠更準確的達到效能分析,也能作為後續如 Verilog 等暫存器傳遞語言(Register-transfer Language)的實作範本。目前 CASLab GPU 已在 FPGA 層級完成功能性的驗證,接下來會繼續優化與考慮實際硬體的成本,讓 CASLab GPU 能夠成為一顆高效能的 Edge Computing IP。
- 
-===== CASLab GPU 軟體開發 ===== 
-在設計開發上,CASLab GPU 軟體堆疊情形如 Fig. 1。最上層實作 TensorFlow Runtime 讓使用者在平台上面能使用 TensorFlow API 以支援機器學習、深度學習模型開發,並透過 OpenCL Runtime 支援 GPU 來達到大量平行運算效能提升,無論是 TensorFlow CNN Application 或是 OpenCL 應用程式都能在 CASLab GPU 上達到加速效果。GPU 的軟體層級如果沒有編譯器支援的話,是無法完整將整個 GPU 系統平台建立起來的,因此編譯器在整個軟硬體系統上佔有非常重要的地位。CASLab GPU開發了自己的 OpenCL LLVM Compiler 以支援 CASLab GPU 硬體。因為是自行開發,編譯器能夠設計出適合我們 GPU 硬體的執行程式,使硬體與軟體間達到良好的配合,提升執行效率。最後透過 HSA runtime 提供一共同硬體介面,在軟硬體間搭載一個橋樑與 Device Driver 做溝通,降低 OpenCL Runtime 的設計複雜度,GPU 收到軟體端的資訊後便開始運作,最後在將結果傳回 CPU 端的記憶體中,達到程式加速的效果。 
-\\ 
-\\ 
-<<fig1>> 
-\\ 
-\\ 
-==== TensorFlow Runtime ==== 
-要達到 TensorFlow 應用能執行在 OpenCL 架構底下,我們需要了解TensorFlow Stream Executor 這個由 Google 為 TensorFlow 所定義的 Kernel API共用介面實作方式,以及 TF-Coriander 這個第三方專案的搭配方案。 
- 
-以下是對這兩種專案的介紹,首先,介紹何謂 TF-Coriander。原生的TensorFlow GPU Support 僅支援採用 CUDA Programming Language 的 GPUDevice,對於其他平台開發者需自行針對目標平台設計一 Stream Executor。由於TensorFlow 提供眾多 Kernel Operation 種類,如為該平台提供更完整的支援會需要花費大量人力成本於此,且未來 TensorFlow 如有更新會難以同步與維護。為了降低新增硬體的複雜度,Perkins, Hugh.於 2017 年提出 CUDA-on-CL 架構,利用一名為Coriander 之 Source-to-Source Compiler 將原生的 CUDA 應用程式轉譯為OpenCL Device 可以執行之 Host Code 與 Device Code,藉此將 TensorFlow 原生之 CUDA 程式碼轉為 OpenCL Device Kernel,並為 OpenCL 設計一 StreamExecutor 而獨立為一 TensorFlow 分支 TF-Coriander。 
- 
-TensorFlow Stream Executor 為 Google 為 TensorFlow 定義出 Kernel API 的共用介面,並將與硬體相依的相關實作於各目標之 Stream Executor 中實現,其架構 
-如 Fig. 2 所示。 
-\\ 
-\\ 
-<<fig2>> 
-\\ 
-\\ 
-該架構概念上是以 Stream Executor 作為各目標平台的硬體抽象層,上方應用程式(Kernel API)會透過統一介面對虛擬裝置進行諸如記憶體分配、指令派發與Kernel Process Monitoring 等等資源管理相關命令;而各平台開發者也可藉此將平台相關優化程式放入 Kernel Implementation 中以優化各 Kernel 於該平台的執行效率。為了讓使用者可以使用 TensorFlow 原有的 API 在 CASLab GPU 上做人工智慧應用,CASLab 修改了 TensorFlow API 的後端實作內容如 Fig. 3 所示,實作了約三十多種 CNN 需求的 Operations 來支援跑在 AI 應用程式上。 
-\\ 
-\\ 
-<<fig3>> 
-\\ 
-\\ 
-==== OpenCL Runtime ==== 
-為了因應各種不同運算需求,現今的運算平台普遍由 CPU、GPU 或 ASIC 等異質性硬體所組成。而過去不同平台的應用程式開發者經常會需要重新設計應用程式/演算法與執行架構以配合 Device Vender 所提供的 Device Model 與 Device Driver,使得設計出的應用程式通常不具備可移植性。為此,Apple 提出一開源語言框架-Open Computing Language (OpenCL),並交由非營利組織 Khronos Group 進行管理、維護。OpenCL 為了讓使用者能有效的管理資源,設計了一套軟體架構,讓使用者能由上至下,由大到小的來管理硬體上的資源,如 Fig. 4 所示。CASLab GPU 為了能夠有效支援 OpenCL API,以 C++物件導向,設計一個符合規範的 OpenCLRuntime API,其中每一個物件內部會記錄與硬體相關的資訊以及使用者使用各項資源的情形。 
-\\ 
-\\ 
-<<fig4>> 
-\\ 
-\\ 
-CASLab 實作的 API 有四大類,目前共計 33 個,如 Fig. 5 所示 
-1. Platforms 相關 
-[1] Platform object 用以實作取得整個平台系統相關資訊的 API 
-[2] Device object 用以實作取得 Platform 中數個裝置資訊的 API 
-[3] Context object 用以管理使用者在一個 Device 需要的硬體資源 
-2. Programs 相關 
-[1] Program object 用來記錄使用者所撰寫的 Device code,內部可以含 
-有多個 kernel。編譯 Device code 的 API (clBuildProgram),需使用 
-此物件來實作,先呼叫 CASLab 所實作之 Compiler,完成編譯流程 
-後,將結果紀錄再次物件中。。 
-[2] Kernel object 
-此物件可記錄編譯完成後的 Program 中的其中一個 kernel,並且用以 
-記錄要派發給 GPGPU 的相關資訊。 
-3. Memory 相關 
-[1] Memory object 
-用來宣告硬體空間給使用者,並且使用者也能用此類別中的相關 API, 
-來讀取或寫入資料到 GPGPU。 
-4. Command queues 
-[1] Command queues object 
-用來管理使用者所要派發給 GPGPU 的工作資訊,內部紀錄使用者要派 
-發的順序與內容。 
-\\ 
-\\ 
-<<fig5>> 
-\\ 
-\\ 
-==== HSA runtime ==== 
- 
-==== LLVM Compiler ==== 
- 
- 
-\\ 
-==== CASLab GPU 硬體架構與設計 ==== 
- 
-隨著大量應用產品與需求的出現,繪圖引擎近來擔任大量平行運算的重要角色。本實驗室GPU團隊現在正積極地在開發符合OpenCL/TensorFlow API規範的終端人工智慧Edge-AI之處理器系統,在GPGPU基礎上進行優化設計,並發展人工智慧多線程應用程式的執行環境。 
-\\ 
-<imgcaption image1|HSA>{{ :group:gpgpu.png?350}}</imgcaption> 
-\\ 
-  - **CASLAB GPUsim** \\ To overcome the complex development process, adopting TLM methodology can build the system by incremental development process, which makes verification and validation in early development stage possible.\\ \\ We develop the cycle-accurate SIMT core by basic cycle-accurate modeling approach and evaluate its performance on CASLAB-GPUSim cosimulation platform. 
- 
-\\ 
- 
-==== 支援異質系統架構(HSA)之Unified Shader GPU架構設計 ==== 
-(Unified Shader GPU Architecture based on HSA) 
- 
-隨著GPU技術的進步與繪圖效能的提升,視覺運算領域正快速的發展。使用GPU來做大量平行處理的通用運算GPU(GPGPU - General Purpose GPU),以及整合CPU與GPU的異質性系統,不但大幅提升了運算效能,更是研究的趨勢之一。[[http://www.hsafoundation.com/|HSA Foundation]]所提出的異質運算系統架構(Heterogeneous System Architecture),便希望整合CPU與GPU的架構,進一步提升整個系統運算的效能。 
-\\ 
-<imgcaption image1|HSA>{{ :group:HSA_lab.png?250}}</imgcaption> 
-=== 異質系統架構 === 
- 
-  - **HSA Immediate Language** \\ HSA introduced a low-level intermediate language, which is portable across multiple platforms. 
-  - **Hetergeneous Uniform Memory Access (hUMA)** \\ Unified Memory Address Space reduces memory bandwidth between CPU and GPU to improve performance. 
-  - **Hetergeneous Queuing (hQ)** \\ GPU and CPU have equal flexibility to create and dispatch work items which reduces dispatch latency to GPU. 
- 
-\\ 
-===== 研究成果 ===== 
-<imgcaption image2|GPU Simulator>{{ :group:HSA_Sim_lab.png?250}}</imgcaption> 
-為了研究並且模擬異質系統架構的運算,我們實作了一個基於異質系統架構(HSA)的GPU模擬器。此模擬器包含: 
-\\ 
-  - **Custom GPU ISA** \\ Which is based on the HSAIL BRIG and Nvidia PTX Virtual ISA 
-  - **HSAIL to HSA Binary Translator** 
-  - **GPU Simulator** 
- 
-A fundamental GPU Simulator based on our Custom GPU ISA which includes fixed-size register file, warp scheduler, dispatch unit and SIMD execution units for parallel computing. The Simulator also supports 80 of 110 (73%) instructions, and solution to the divergent control flow and synchronization. 
- 
-\\ 
-===== 團隊成員 ===== 
-==== 現任成員 ==== 
-^ 碩士班二年級    | | 
-^ 碩士班一年級    | | 
-^ 大學部    || 
-\\ 
-===== 研究計畫 ===== 
- 
-\\ 
-===== 外部連結 ===== 
-  - [[http://www.hsafoundation.com/|HSA Foundation]] 
- 
- 
-\\ 
-{{tabinclude>tab:research|研究成果, *tab:group|研究群組, tab:member|實驗室成員, tab:course|課程}} 
- 
- 
- 
  
  
group/aionchip.txt · 上一次變更: 2020/06/03 09:13 由 admin