教材:10710周志遠教授平行程式 https://www.youtube.com/playlist?list=PLS0SUwlYe8cxqw70UHOE5n4Lm-mXFXbZT 20250904 筆記 內容可能有錯僅供參考 14A~14B Heterogeneous Computing 今日大綱 異質計算 (Heterogeneous Computing) GPGPU (General-Purpose computing on GPU) 的基礎架構與應用 GPU 的內部架構 (Host, Device, Kernels, Memory Hierarchy) ### **異質計算 (Heterogeneous Computing)** **異質計算**指的是將不同類型的處理器結合起來,最常見的是結合 **CPU 與 GPU** 或其他 ASIC 架構的加速器。 * **CPU 的特性**: * 具有高度彈性和通用性,每個核心都能獨立完成完整的任務。 * 功能強大,但不容易客製化。 * **異質計算的優勢**: * 結合 CPU 和加速器(如 GPU)的優點,提高整體計算能力。 * 許多超級電腦都採用這種架構。 #### **異質計算的實現方式** 1. **傳統獨立架構 (Discrete GPU)**: * 這是最簡單且常見的方式。**GPU 和 CPU 是完全分開的**。 * GPU 被視為一個**加速器**,通過 **PCIe (Peripheral Component Interconnect Express)** 連接到主機板上。2025 年,PCIe 5.0 提供高達 128 GB/s 的頻寬,但仍遠低於 GPU 內部記憶體頻寬。 * **GPU 擁有獨立的記憶體**、暫存器和硬體排程器。 * **CPU (Host 端) 無法直接控制 GPU 的計算**,它只能將任務放到 GPU 的記憶體中,由 GPU 自行決定何時執行、如何執行。 * 缺點:GPU 和 CPU 的記憶體是獨立的,**資料必須進行複製 (memory copy)** 才能在兩者之間傳輸,這會導致顯著的效能開銷。 2. **異質系統架構 (HSA - Heterogeneous System Architecture)**: * HSA 旨在**將不同種類的處理器從系統層面整合在一起**。 * **核心目標:實現統一的記憶體 (Unified Memory)**。這表示 CPU 和 GPU 可以共同存取同一塊記憶體,避免了資料複製的開銷。 * **與傳統多核心 CPU 的差異**: * 傳統 CPU 核心由作業系統 (OS) 管理和排程。 * HSA 中,GPU 不受 CPU 或 OS 的管轄,它有自己的內部排程器和管理機制。 * 這種獨立性導致在共享記憶體時,兩者之間的溝通和協調變得更為複雜,需要專門的系統設計來解決。 * **優點:**將 CPU 和 GPU 整合在同一晶片上,可以**大幅提高資料傳輸頻寬 (bandwidth)**。有些 HSA 架構甚至將記憶體控制器等元件直接整合到晶片中,進一步提升頻寬。 * 產品實例:AMD 的 **APU (Accelerated Processing Unit)** 就是這種概念的實踐,如 Ryzen 7040 系列 (2023 年起),將 CPU 和 GPU 整合在同一個晶片封裝 (package) 中,實現了共享記憶體。中國的天河三號超級電腦也採用了類似的單晶片整合架構。 * **普及挑戰:**儘管 HSA 技術早在 2011 年就已存在,但由於其**特殊的程式模型和缺乏完整的開發工具鏈**,尚未在消費級市場完全普及。它們主要應用於追求極致效能的超級電腦、大型計算或客製化系統,這些系統通常會自行開發相應的工具。近年來,AMD 的 ROCm 平台和 Intel 的 oneAPI 積極推廣 HSA 相關技術,試圖擴展其應用範圍。 --- ### **GPGPU (General-Purpose Computing on GPU) 的基礎架構與應用** 本課程將重點關注 **GPU 計算**,首先介紹其基本架構。 #### **GPU 的基礎概念** * 它是一種**專用處理器 (specialized processor)**,硬體架構基於 **SIMD (Single Instruction, Multiple Data)** 模型。 * GPU 擅長處理**圖形應用中普遍存在的資料平行性 (data parallelism)**,這也是它被大量採用的原因。 * SIMD 架構使得 GPU 可以在單一處理器內擁有**非常多的計算核心**。 #### **GPU 的強大計算能力與優勢** * 核心數量龐大:例如,NVIDIA 的 H100 GPU (2023 年) 內含高達 16,896 個 CUDA 核心,Blackwell 系列 (2025 年) 核心數量進一步增加。 * 高 concurrent 執行:每個計算核心甚至可以像 CPU 的超執行緒 (Hyperthreading) 一樣,同時執行多個執行緒,使得同時期的執行緒數量可高達數十萬個。 * **空間、管理、電力效益**: * 傳統的超級電腦需要佔用整個房間的機櫃。 * 現在,可能只需要一台體積較大的電腦(內含數十張 GPU 卡,如 NVIDIA DGX 系統),就能提供相同的計算能力。 * 這大幅節省了空間、管理成本和電力消耗。例如,NVIDIA 的 Blackwell 架構相較前代 Hopper 提供高達 4 倍的能效提升。 #### **GPU 的發展與市場格局** * 早期的顯示卡主要用於圖形加速。 * AMD 策略:將 GPU 整合到 CPU 中,稱之為 APU,因為越來越多應用需要計算能力。2025 年,AMD 的 RDNA 4 架構進一步增強 APU 的 GPGPU 能力,支援機器學習和高效能計算。 * **NVIDIA 策略:專注於 GPGPU (General-Purpose Computing on GPU)**,將 GPU 用於一般性的通用計算而非僅限於顯示,並取得了巨大成功。 * GPGPU 的發展,主要在於開發了**專門的函式庫 (library) 和軟體介面 (interface)** (如 CUDA、cuDNN、OpenCL),讓程式設計師能更方便地將程式卸載到 GPU 執行,而非大幅改變硬體本身。 * 市場競爭:NVIDIA 在 GPGPU 領域處於領先地位,Intel 透過 oneAPI 和 Xe 架構的 GPU (如 Data Center GPU Max 系列) 積極進入市場,與 NVIDIA 既合作又競爭。AMD 的 ROCm 平台也在快速發展,試圖挑戰 NVIDIA 的 CUDA 生態。 #### **GPGPU 系統的通訊瓶頸與解決方案** * 我們課程中使用的 GPGPU 系統,GPU 與 host CPU 通常是透過 **PCIe** 連接的。 * PCIe 的限制:GPU 與 CPU 之間的通訊頻寬相對不高,PCIe 5.0 (2025 年) 提供 128 GB/s,但仍低於 GPU 內部記憶體頻寬 (如 H100 的 3 TB/s 或 Blackwell 的 8 TB/s)。 * **NVIDIA 的解決方案:NVLink**。 * NVIDIA 自行開發的互連技術,用來**取代 PCIe**。 * 大幅提升了 **GPU 與 CPU 之間**,以及更重要的 **GPU 卡與 GPU 卡之間** 的通訊頻寬。2025 年 NVLink 5.0 提供高達 1.8 TB/s 的雙向頻寬。 * 相較於 host 端的 PCIe 頻寬,GPU 內部記憶體 (internal DRAM) 的頻寬可高出數倍 (如 128 GB/s vs. 8 TB/s),這表明 NVIDIA 更多地著重於**優化 GPU 外部的通訊效能**。 * 記憶體複製的效能影響:由於 GPU 和 CPU 記憶體是獨立的,**資料在兩者之間複製會造成嚴重的效能瓶頸**。因此,後續的優化會著重於減少資料傳輸次數和時間,例如使用統一記憶體 (Unified Memory) 或 NVLink Fusion 技術。 #### **GPU 記憶體限制與多 GPU 系統** * **GPU (Device) 記憶體容量相對較小**,例如 NVIDIA H100 提供 141 GB HBM3,Blackwell B200 高達 192 GB HBM3e,而 **CPU (Host) 記憶體容量則大得多** (數百 GB 甚至 TB)。 * 這意味著,當需要處理的資料量過大時,**單張 GPU 可能無法一次載入所有資料**。 * 資料頻繁地在 GPU 和 Host 之間傳輸會嚴重降低效能。 * 為了解決這個問題,現今的 GPGPU 伺服器通常會配置**多張 GPU 卡 (例如 8 或 16 張卡)**,如 NVIDIA DGX B200 系統,支援高達 144 個 GPU 晶片的 NVLink 網域。 * 資料會被**分散儲存到每張 GPU 的記憶體中**。 * 此時,**GPU 卡之間的高速通訊變得至關重要**,這也是 NVLink 的主要價值所在。 * 儘管 GPU 的計算能力不斷提升,但如果**記憶體存取和資料傳輸的效能無法跟上,將會成為整體效能的瓶頸**。 #### **GPU 的內部架構 (Host, Device, Kernels, Memory Hierarchy)** GPU 內部採用**分層的架構 (hierarchical architecture)**: 1. **Host 與 Device**: * Host:指的是 CPU 及其連接的記憶體和週邊設備。 * Device:指的是 GPU 及其連接的記憶體和相關硬體。 2. **Streaming Multiprocessor (SM)**: * 每個 GPU 內部包含多個 SM (或稱處理器叢集)。例如,NVIDIA H100 有 132 個 SM,Blackwell B200 進一步提升至 168 個 SM。 * 每個 SM 內又包含許多 **串流處理器 (Stream Processor, SP)** 或 CUDA 核心。 3. **記憶體階層 (Memory Hierarchy)**: * **暫存器 (Register)**: * 位於最頂層,速度最快。 * 是**每個執行緒 (thread) 獨有**的局部儲存空間。 * 部分 Register File 會被劃分給 Shared Memory 使用。 * **共享記憶體 (Shared Memory)**: * 每個 **SM 內部**有一塊獨立的共享記憶體。 * 可供**該 SM 內的所有計算核心共同存取**。 * 速度非常快,用於 SM 內部的快速資料交換。 * **不同 SM 之間無法直接存取彼此的共享記憶體**。 * **全域記憶體 (Global Memory)**: * 這是 GPU 上的**主記憶體**,所有 SM 內的所有計算核心都能存取。 * 連接到外部,相對而言速度較慢。 * 資料會從 Global Memory 載入到 Shared Memory 或 Cache 以加速存取。 * **硬體管理 (Hardware Management)**: * GPU 內部有自己的硬體排程器,負責決定工作分配、資源排程 (執行緒、記憶體位置等)。 * Host 端將指令發送給 Device,但具體執行細節由 GPU 內部自行管理,CPU 的作業系統和程式設計師通常無法直接干預。 #### **程式設計模型 (Programming Model)** * 雖然 GPU 內部管理複雜,但像 CUDA 這樣的 API 提供了抽象層,讓程式設計師可以**控制記憶體位置** (例如指定資料存放在暫存器、共享記憶體還是全域記憶體) 以及**執行緒的分組和協調** (如 Block 和 Grid)。 * 程式設計師需要了解 GPU 的底層架構,才能透過這些抽象層有效地控制硬體,進而優化程式效能。 * 重要概念:Host, Device, Register, Shared Memory, Global Memory 這些是編寫 GPU 程式時必須牢記的關鍵架構元素。 #### **Stream Processor 內部細節與執行單位** * 一個 Stream Processor 包含計算單元 (ALU/FPU) 和暫存器檔案 (Register File)。 * **執行單位:Warp**: * GPU 並不是以單個核心為單位執行,而是以**某個數量執行緒為一組的 Warp** 執行。NVIDIA GPU 通常以 32 個執行緒為一組 Warp。 * 同一個 Warp 內的所有執行緒會**同時執行 (SIMD)**。 * **不同 Warp 之間則可能錯開時間執行**。 * 程式設計師需要自行加入**同步機制 (synchronization)**,以確保不同執行緒之間的正確協同工作。 #### **2025 NVIDIA GPU 產品線與應用場景** NVIDIA 將其 GPU 產品分為不同的系列,以應對不同的應用需求: 1. **Data Center GPUs (HPC / Data Center)**: * 主要用於**高效能計算 (HPC)**,如科學模擬、資料中心、AI 訓練和推論。 * 強調極致的計算效能和精確度。例如,H100 和 Blackwell 系列 (B100, B200) 提供高達 4 PFLOPS 的 FP4 推理效能。 * **高精度需求:**通常需要**雙精度浮點運算 (double precision, FP64)**,因為科學模擬對精確度要求極高。 2. **Quadro / RTX PRO (Professional Visualization)**: * 專業視覺化應用,如 CAD/CAM、電影製作、虛擬化工作站。 * 具備虛擬化功能,允許多個虛擬機共享顯卡資源。2025 年 RTX PRO 6000 Blackwell Server Edition GPU 針對企業級資料中心視覺化工作負載優化。 3. **GeForce (Gaming / Consumer)**: * 消費級顯示卡,主要用於遊戲或複雜的圖形渲染。 * 追求高速度和高幀率。2025 年 GeForce RTX 50 系列 (如 RTX 5090) 提供高達 3,352 TOPS 的 AI 計算能力和 2 倍於 RTX 4090 的效能。 * **低精度需求:**在**深度學習訓練中,通常只需要單精度浮點運算 (single precision, FP32)**,因為人眼對細微的數值差異不敏感。因此,消費級的 GeForce 顯卡因其高單精度性能和較低的成本,常被用於深度學習訓練。 4. **Jetson (AI at the Edge / Embedded Deep Learning)**: * 專為嵌入式深度學習應用設計,如自動駕駛、機器人、手機等邊緣設備。2025 年 NVIDIA Jetson AGX Thor 提供高達 2,000 TOPS 的 AI 效能,適用於機器人與自主系統。 * 主要用於**推論 (inference)**,即將訓練好的模型部署到終端設備進行預測。 * 通常記憶體容量較小,注重即時性、低功耗。 --- 其他課程連結 [平行程式1C~2B Introduction parallel programming](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/Syxh3H7Kxe) [平行程式3A~3D The Latest Developments and Applications Using Parallel Programming](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/HJh7QFVKle) [平行程式4A~4B IO Parallel IO and Program Analysis](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/HJLMsuHFgg) [平行程式5A~5B The Latest Developments and Applications Using Parallel Programming](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/SJh57hIFle) [平行程式6A~6B Communication Routines and Parallel Function Code](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/r1X9kX_Fle) [平行程式 6C~6D Communication Routines and Parallel Function Code](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/S1DPjoYFlx) [平行程式 7A~8A Pthread:Synchronization Problem & Tools](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/HJu-_0tKge) [平行程式 8B~8D Synchronization Tools & Open Multi-Processing(OpenMP)](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/H1ki4E2Fee) [平行程式 9A~9B Synchronization Construct](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/BJTYMrpKlx) [平行程式 10A~10B Synchronization Tools & Open Multi-Processing Synchronization Construct](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/B1cY6M1qee) [平行程式 10C~10D Synchronization Tools & Open Multi-Processing Synchronization Construct](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/BkgFaNg5gg) [平行程式 11A~11B Parallel Work Pool and Termination / Parallel Sorting](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/H1hfOw-5xl) [平行程式 12A~12B Parallel Sorting and Pipelined Computations](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/Symo-zQ9eg) [平行程式 12C~12D Parallel Sorting and Pipelined Computations](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/BJYNKDVceg) [平行程式 13A-13B Sychronous Parallelism](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/HJ2UJ2Bqex) [平行程式 14A~14B Heterogeneous Computing](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/BksS4yP5eg) [平行程式 14C~14D Heterogeneous Computing](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/BJrfTUd9xx) [平行程式 15A~15B Parallel Programming Model on GPU](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/ByWnl-t5gg) [平行程式 16A~16B What is Compute Unified Device Architecture(CUDA)?](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/HyYpsjcqgl) [平行程式 17A~18A 平行運算的CUDA](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/H1dUeBT5lg) [平行程式 18B~19A 記憶體層級 / CUDA的優化](https://hackmd.io/@JuitingChen/HyF44e1jge) [平行程式 19B~19D 記憶體層級 / CUDA的優化 ](https://hackmd.io/@JuitingChen/ryPEu4lieg) [平行程式 20A~20B CUDA優化全域和區域記憶體/共享記憶體](https://hackmd.io/@JuitingChen/r1X659Zoxl) [平行程式 21A~21B Parallel Reduction / Distributed Computing Framework](https://hackmd.io/@JuitingChen/HyiOpozjxl) [平行程式 NTHU-PP-Chap10-Big Data-Part1 ](https://hackmd.io/@JuitingChen/Hyc-e3Golx) [平行程式 NTHU-PP-Chap10-Big Data-Part2 ](https://hackmd.io/@JuitingChen/ryC_QTXoxl) [平行程式 NTHU-PP-Chap11-MapReduce](https://hackmd.io/@JuitingChen/HJgBXJOsge) [平行程式 NTHU-PP-Chap12-Distributed Training-Part1](https://hackmd.io/@JuitingChen/ryh5hBtsge) [平行程式 NTHU-PP-Chap12-Distributed Training-Part2](https://hackmd.io/@JuitingChen/rJ2G7kdjxg) [平行程式 NTHU-PP-Chap12-Distributed Training-Part3](https://hackmd.io/@JuitingChen/HkA471dilx) [平行程式 NTHU-PP-Chap13-UCX-Part1](https://hackmd.io/@JuitingChen/rJbq103ieg) [平行程式 NTHU-PP-Chap13-UCX-Part2](https://hackmd.io/@JuitingChen/SJpNmk_ixl) [平行程式 NTHU-PP-Chap13-UCX-Part3](https://hackmd.io/@JuitingChen/HkIUYa13xe)