人工智慧的基礎
深度學習的基石
了解GPGPU,加速您的想像力!!
當今科技快速發展,人工智慧、機器學習和資料分析等領域的運用已經深入到生活中。作為這些技術的重要基石,GPGPU(General Purpose Graphics Processing Unit,通用圖形處理器)技術在硬體設計和軟體開發中扮演著關鍵角色,也使得掌握GPGPU技術及其架構,對於了解與推動相關領域的進一步發展十分重要。
本書試圖從架構的方式,讓讀者理解 GPGPU 的系統特點,並思考其架構設計的重點與發展方向。不僅有軟體部分,也包含硬體架構的介紹、相關工具以及如何增進效率的技術討論。而每篇還有論文的引用、分析、討論、介紹,並於每章節附加參考文獻,幫助讀者有方向額外研究。
【章節簡介】
■ 第 1 章GPGPU 概述:
著重介紹GPGPU 與CPU 系統結構上的差異和現代GPGPU 產品的特點。
■ 第 2 章GPGPU 程式設計模型:
介紹GPGPU 程式設計模型的核心概念,勾勒出GPGPU 異質計算的設計要點。
■ 第 3 章GPGPU 控制核心架構:
對GPGPU 指令管線和關鍵控制元件的原理進行分析和介紹,並深入探討GPGPU 架構的瓶頸問題和最佳化方法。
■ 第 4 章GPGPU 儲存架構:
對GPGPU 多樣的層次化記憶體介紹,重點探討單晶片記憶體的設計和最佳化方法。
■ 第 5 章GPGPU 運算單元架構:
介紹數值表示和通用運算核心的設計。
■ 第 6 章GPGPU 張量核心架構:
對專門為人工智慧加速而設計的張量核心架構展開分析與介紹,揭示GPGPU 對深度學習進行硬體加速的基本原理。在先前架構原理、設計方法的探討中,本書還著重介紹國際前端的研究成果,力圖解釋設計背後的挑戰,促讓讀者更深入地思考GPGPU 架構設計的核心要素問題。
■ 第 7 章複習與展望:
對全書內容進行複習,並對GPGPU 發展進行展望。
【本書適合讀者】
.資工、資訊科學,或電腦相關科系的大學生、研究生。
.相關領域的工程師、研究人員。
.想要了解 GPGPU 如何運作者。
作者簡介:
景乃鋒
上海交通大學電子資訊與電氣工程學院的副研究員和博士生導師。他的主要研究方向是電腦體系結構、積體電路晶片設計和軟硬體協同設計。他已經發表了80多篇學術論文,其中在GPGPU 體系結構領域發表多篇高水準學術論文。他還主持和研究多項中國國家級重大科研項目和課題,申請中國國家發明專利40餘項,獲授權6項。
柯晶
上海交通大學電子資訊與電氣工程學院的助理研究員和碩士生導師,澳大利亞新南威爾士大學電腦學院聯席講師。她曾在著名GPU廠商S3 Graphics和AMD任軟體架構工程師數年,目前主要研究領域是電腦輔助大規模醫學圖像診斷。她以第一作者和通訊作者在重要國際期刊和會議上發表了30多篇論文,並主持和參與多項中國國家級科研專案。
梁曉嶢
上海交通大學電子資訊與電氣工程學院的教授、博士生導師和學科帶頭人。他畢業於美國哈佛大學並獲得博士學位。他的研究方向包括電腦體系結構、積體電路設計、通用圖形處理器和人工智慧晶片架構等。他已經發表了百餘篇學術論文,包括在國際學術會議ISCA、MICRO、HPCA、ISSCC、DAC、ICCAD等上的文章。其中2篇入選計算機體系結構年度最佳論文(IEEE MICRO TOP PICKS)。
作者序
隨著人工智慧的高速發展,現代資訊社會中資料就是生產要素,算力就是生產力。如何構築未來大算力的基礎設施,滿足人們對通用大算力無止境的追求,成為促進人工智慧和資訊產業持續健康發展的重要因素。
在當前許多算力晶片的不同形態中,源於圖形處理器的通用圖形處理器(General Purpose Graphics Processing Unit,GPGPU) 脫穎而出,在許多產業和多個領域中獲得了充分的驗證,廣泛賦能圖形/ 遊戲、高性能計算、人工智慧、數位貨幣及多種產業應用的巨量資料處理。得益於其大算力和高度可程式化特性,GPGPU 身為通用加速器已經成為未來算力建設的基礎性元件。正值本書撰稿之時,在人工智慧、算力基礎建設等多種因素的推動下,GPGPU 產業發展和創業熱潮也正呈現出前所未有的熱度。
GPGPU 的歷史並不長。人們對GPGPU 的了解並沒有像通用處理器CPU 那樣深入,也沒有達到深度學習專用加速器近年來高漲的熱度。這導致無論GPGPU 的產業發展還是學術研究都面臨著較高的門檻。
不積跬步,無以至千里。我們嘗試著去填補這個空白,邁出深入GPGPU 系統結構的一小步。本書並不是一本GPGPU 應用程式開發指南,也不是一本GPGPU 程式設計語法手冊,更不是特有產品的推廣或是複雜晶片的工程實作,因為在這些方面已經有了大量很好的教材和參考書可以提供豐富充實的案例與完整準確的說明。
我們希望的是讓讀者以架構的角度,去理解GPGPU 系統結構的特點,去思考GPGPU 晶片設計的方式。我們更希望透過本書能夠啟發更多的讀者去理解晶片設計的特點,思索計算的本質,進而能夠把握未來高性能通用計算架構的發展方向。我們也希望透過本書與同行一起探討和分享GPGPU 架構和晶片設計的研究成果,推動高階通用處理器晶片和人工智慧產業的進一步發展。
本書共分為7 章,內容涵蓋GPGPU 概述、程式設計模型、控制核心架構、儲存架構、運算單元架構、張量核心架構及複習與展望。其中,第1 章GPGPU 概述,著重介紹GPGPU 與CPU 系統結構上的差異和現代GPGPU 產品的特點。第2 章GPGPU 程式設計模型,介紹GPGPU 程式設計模型的核心概念,勾勒出GPGPU 異質計算的設計要點。第3 章GPGPU 控制核心架構,對GPGPU 指令管線和關鍵控制元件的原理進行分析和介紹,並深入探討GPGPU 架構的瓶頸問題和最佳化方法。第4 章GPGPU 儲存架構,對GPGPU 多樣的層次化記憶體介紹,重點探討單晶片記憶體的設計和最佳化方法。第5 章GPGPU 運算單元架構,介紹數值表示和通用運算核心的設計。第6 章GPGPU 張量核心架構,對專門為人工智慧加速而設計的張量核心架構展開分析與介紹,揭示GPGPU 對深度學習進行硬體加速的基本原理。在上述架構原理、設計方法的探討中,本書還著重介紹國際前端的研究成果,力圖解釋設計背後的挑戰,促讓讀者更深入地思考GPGPU 架構設計的核心要素問題。第7 章複習與展望,對全書內容進行複習,並對GPGPU 發展進行展望。
這本書的出版,凝聚了許多老師、同學和業界同行的努力和心血。感謝上海交通大學的博士研究所學生李興、劉學淵、王旭航及碩士研究所學生官惠澤、王雅潔、王玨在本書資料搜集、整理工作中做出的巨大貢獻。感謝上海交通大學的主管和同事在本書寫作過程中給予的支持。感謝壁仞科技董事長張文在本書寫作過程中提供的支持,也特別感謝壁仞科技王海川、陳龍、唐衫博士等對本書內容的建議和補充。感謝清華大學出版社盛東亮和崔彤等在本書的編校工作中所做出的貢獻。雖然我們在本書編撰過程中精益求精,但由於時間倉促和編者水準有限,書中難免有疏漏和不足之處,懇請讀者批評指正!
編者
隨著人工智慧的高速發展,現代資訊社會中資料就是生產要素,算力就是生產力。如何構築未來大算力的基礎設施,滿足人們對通用大算力無止境的追求,成為促進人工智慧和資訊產業持續健康發展的重要因素。
在當前許多算力晶片的不同形態中,源於圖形處理器的通用圖形處理器(General Purpose Graphics Processing Unit,GPGPU) 脫穎而出,在許多產業和多個領域中獲得了充分的驗證,廣泛賦能圖形/ 遊戲、高性能計算、人工智慧、數位貨幣及多種產業應用的巨量資料處理。得益於其大算力和高度可程式化特性,GPGPU 身為通用加速器已經成為未來算...
目錄
Chapter 01 GPGPU 概述
1.1 GPGPU 與平行電腦
1.2 GPGPU 發展概述
1.3 現代GPGPU 產品
參考文獻
Chapter 02 GPGPU 程式設計模型
2.1 計算模型
2.2 執行緒模型
2.3 儲存模型
2.4 執行緒同步與通訊模型
2.5 CUDA 指令集概述
參考文獻
Chapter 03 GPGPU 控制核心架構
3.1 GPGPU 架構概述
3.2 GPGPU 指令管線
3.3 執行緒分支
3.4 執行緒束排程
3.5 記分板
3.6 執行緒區塊分配與排程
參考文獻
Chapter 04 GPGPU 儲存架構
4.1 GPGPU 儲存系統概述
4.2 暫存器檔案
4.3 可程式化多處理器內的儲存系統
4.4 可程式化多處理器外的儲存系統
4.5 儲存架構的最佳化設計
參考文獻
Chapter 05 GPGPU 運算單元架構
5.1 數值的表示
5.2 GPGPU 的運算單元
5.3 GPGPU 的運算單元架構
參考文獻
Chapter 06 GPGPU 張量核心架構
6.1 深度神經網路的計算
6.2 張量核心架構
6.3 神經網路計算的軟體支援
6.4 深度學習評價基準— MLPerf
參考文獻
Chapter 07 複習與展望
7.1 本書內容複習
7.2 GPGPU 發展展望
Chapter 01 GPGPU 概述
1.1 GPGPU 與平行電腦
1.2 GPGPU 發展概述
1.3 現代GPGPU 產品
參考文獻
Chapter 02 GPGPU 程式設計模型
2.1 計算模型
2.2 執行緒模型
2.3 儲存模型
2.4 執行緒同步與通訊模型
2.5 CUDA 指令集概述
參考文獻
Chapter 03 GPGPU 控制核心架構
3.1 GPGPU 架構概述
3.2 GPGPU 指令管線
3.3 執行緒分支
3.4 執行緒束排程
3.5 記分板
3.6 執行緒區塊分配與排程
參考文獻
Chapter 04 GPGPU 儲存架構
4.1 GPGPU 儲存系統概述
4.2 暫存器檔案
4.3 可程式化多處理器內的儲存系統
4.4 可程式化...