沐曦異構(gòu)并行計算軟件棧——MXMACA C/C++程序設(shè)計入門教程
定 價:128 元
叢書名:沐曦GPU技術(shù)系列叢書
- 作者:楊建 等
- 出版時間:2024/7/1
- ISBN:9787121484704
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP311.11
- 頁碼:
- 紙張:
- 版次:
- 開本:16開
MACA全稱是MetaX Advanced Compute Architecture,是由沐曦(MetaX)公司推出的一種采用通用并行計算架構(gòu)解決復(fù)雜計算問題的異構(gòu)計算平臺,它包含了沐曦自研指令集架構(gòu)(ISA)、GPU并行計算硬件引擎和GPU軟件開發(fā)平臺。本書深入淺出,層層遞進,構(gòu)建了一個系統(tǒng)全面的知識結(jié)構(gòu),全面介紹了異構(gòu)并行計算和GPU編程的基礎(chǔ)知識與高級應(yīng)用。本書的內(nèi)容覆蓋基礎(chǔ)理論、實際應(yīng)用、編程模型到內(nèi)存管理、性能優(yōu)化等多個層面。本書不僅詳盡闡述了MXMACA C/C++編程語言的特性和應(yīng)用,還通過豐富的示例代碼展示了在沐曦高性能GPU平臺上開發(fā)計算加速應(yīng)用程序的全過程。本書不僅為讀者提供了深入學(xué)習(xí)GPU編程和異構(gòu)計算的資料,也為科學(xué)計算、大數(shù)據(jù)分析、人工智能等領(lǐng)域的專業(yè)人士提供了寶貴的技術(shù)資源。無論是相關(guān)專業(yè)的老師和學(xué)生,還是對并行計算感興趣的研究人員和工程師,都能從這本書中獲得實用的指導(dǎo)。
楊建,浙江大學(xué)博士,沐曦聯(lián)合創(chuàng)始人、CTO兼首席軟件架構(gòu)師,三維圖形與高性能計算生態(tài)專家,擁有多項發(fā)明專利,具有超過20年的GPU軟件研發(fā)經(jīng)驗。楊建博士曾任職于華為海思和AMD,曾任華為海思GPU首席架構(gòu)師,是AMD大中華區(qū)首位華人科學(xué)家。嚴(yán)德政,浙江大學(xué)碩士,沐曦公司軟件總監(jiān)和GPU產(chǎn)品驅(qū)動架構(gòu)師,浙江電子工程高級工程師,資深技術(shù)專家,擁有深厚的軟硬件產(chǎn)品架構(gòu)設(shè)計和開發(fā)管理經(jīng)驗,精通C/C++、Python、Java、JavaScript等多種編程語言。詹源,浙江大學(xué)碩士,沐曦公司工程師,從事嵌入式、AI系統(tǒng)工程軟件開發(fā)工作,目前主要聚焦AI計算庫的研發(fā),負(fù)責(zé)大語言模型訓(xùn)練和推理相關(guān)的算子優(yōu)化工作。王沛,南京航空航天大學(xué)碩士,沐曦公司軟件專家,主要從事編譯器方向的相關(guān)研究,負(fù)責(zé)公司的傳統(tǒng)編譯器和AI編譯器的架構(gòu)和編碼工作。
第1章 MXMACA編程簡介
1.1 本書寫給誰
1.2 學(xué)習(xí)MXMACA編程的基礎(chǔ)
1.3 本書結(jié)構(gòu)
1.4 相關(guān)的背景知識
1.4.1 計算機體系結(jié)構(gòu)和摩爾定律
1.4.2 摩爾定律碰到了三堵墻
1.4.3 并行計算
1.4.4 計算平臺的分類
1.4.5 GPU和CPU體系結(jié)構(gòu)對比
1.4.6 GPU異構(gòu)編程
第2章 MXMACA編程環(huán)境
2.1 MXMACA云端編程環(huán)境
2.2 MXMACA本機編程環(huán)境
2.2.1 下載MXMACA安裝工具包
2.2.2 安裝MXMACA編程環(huán)境
2.2.3 配置MXMACA編程環(huán)境
2.3 用MXMACA打印“Hello World”
2.3.1 過程概述和代碼示例
2.3.2 習(xí)題和思考
第3章 MXMACA編程模型
3.1 硬件平臺
3.2 程序結(jié)構(gòu)
3.3 內(nèi)存管理
3.4 線程管理
3.5 核函數(shù)
3.6 向量加法示例
3.6.1 用傳統(tǒng)的CPU編程完成向量相加
3.6.2 用MXMACA異構(gòu)編程完成向量相加
3.6.3 向量加法實測結(jié)果比較
3.6.4 習(xí)題和思考
第4章 MXMACA編程API
4.1 基本語法
4.2 數(shù)據(jù)類型
4.2.1 C++語言基礎(chǔ)類型
4.2.2 half類型
4.2.3 bfloat類型
4.3 MXMACA C++語言擴展集
4.3.1 擴展的Token
4.3.2 函數(shù)執(zhí)行空間限定符
4.3.3 變量存儲空間限定符
4.3.4 內(nèi)置向量類型
4.3.5 內(nèi)置變量
4.3.6 向量運算單元
第5章 MXMACA執(zhí)行模型
5.1 沐曦GPU并行架構(gòu)
5.1.1 設(shè)備線程架構(gòu)信息查詢
5.1.2 核函數(shù)的并發(fā)執(zhí)行和串并行執(zhí)行
5.1.3 核函數(shù)的啟動方式
5.2 線程束執(zhí)行的本質(zhì)
5.2.1 線程束和線程塊
5.2.2 線程束分化
5.2.3 資源分配
5.2.4 延遲隱藏
5.2.5 占用率
5.2.6 同步機制
5.2.7 協(xié)作組編程
5.2.8 可擴展性
5.2.9 CPU線程和GPU線程的區(qū)別
5.2.10 習(xí)題和思考
5.3 MXMACA流和并發(fā)執(zhí)行
5.3.1 什么是流
5.3.2 基于流的并行
5.3.3 默認(rèn)流與隱式同步
5.3.4 用戶自定義流
5.3.5 流編程
5.3.6 用API啟動核函數(shù)
5.3.7 MXMACA流管理函數(shù)匯總
5.4 MXMACA動態(tài)并行
5.4.1 動態(tài)并行的執(zhí)行模型
5.4.2 動態(tài)并行的內(nèi)存模型
5.4.3 在GPU上嵌套打印“Hello World”
5.4.4 使用動態(tài)并行計算Mandelbrot集合圖像
5.5 MXMACA事件
5.5.1 使用事件同步
5.5.2 MXMACA事件管理函數(shù)匯總
5.6 MXMACA核函數(shù)計時
第6章 MXMACA內(nèi)存模型和內(nèi)存管理
6.1 計算機存儲器分級模型
6.1.1 存儲器的層次結(jié)構(gòu)
6.1.2 GPU內(nèi)存的層次結(jié)構(gòu)
6.1.3 Linux的內(nèi)存管理
6.2 MXMACA內(nèi)存層次模型
6.2.1 GPU寄存器
6.2.2 GPU私有內(nèi)存
6.2.3 GPU工作組共享內(nèi)存
6.2.4 GPU常量內(nèi)存
6.2.5 GPU全局內(nèi)存
6.2.6 GPU緩存
6.3 MXMACA內(nèi)存管理
6.3.1 常規(guī)內(nèi)存管理
6.3.2 零復(fù)制內(nèi)存
6.3.3 統(tǒng)一虛擬尋址技術(shù)
6.3.4 統(tǒng)一尋址內(nèi)存技術(shù)
6.3.5 虛擬內(nèi)存管理API
6.3.6 流序內(nèi)存分配器
6.3.7 MXMACA編程內(nèi)存相關(guān)的知識匯總
6.3.8 MXMACA內(nèi)存管理函數(shù)的分類及特點
6.3.9 部分MXMACA內(nèi)存管理函數(shù)的行為總結(jié)
6.3.10 習(xí)題和思考
第7章 MXMACA程序的編譯、運行和調(diào)試
7.1 MXMACA代碼的編譯和運行
7.1.1 離線編譯和靜態(tài)運行
7.1.2 運行時編譯和動態(tài)加載
7.1.3 二進制緩存
7.1.4 重編譯
7.2 MXMACA程序的調(diào)試
7.2.1 異構(gòu)計算系統(tǒng)的分析和調(diào)試
7.2.2 GPU核函數(shù)的功能調(diào)試
7.2.3 GPU核函數(shù)的性能調(diào)試
7.3 常見問題及其解決方案
7.3.1 MXMACA編程API使用錯誤
7.3.2 并行編程錯誤
7.3.3 算法錯誤
7.3.4 查找并避免錯誤
第8章 MXMACA程序優(yōu)化
8.1 MXMACA程序優(yōu)化概述
8.1.1 MXMACA程序優(yōu)化的目標(biāo)
8.1.2 MXMACA程序性能評估
8.2 MXMACA程序優(yōu)化的一般流程
8.2.1 程序設(shè)計開發(fā)階段
8.2.2 程序優(yōu)化階段
8.2.3 優(yōu)化策略總結(jié)
8.3 MXMACA程序優(yōu)化的主要內(nèi)容
8.3.1 內(nèi)存訪問優(yōu)化
8.3.2 數(shù)據(jù)傳輸優(yōu)化
8.3.3 執(zhí)行并行度優(yōu)化
8.3.4 適配GPU的硬件行為
8.3.5 算術(shù)運算密度優(yōu)化
8.3.6 一些常見的編譯器優(yōu)化方法
8.4 MXMACA程序優(yōu)化總結(jié)
8.4.1 最大化利用率
8.4.2 最大化存儲吞吐量
8.4.3 最大化指令吞吐量
8.4.4 最小化內(nèi)存抖動
第9章 MXMACA圖編程
9.1 從有向無環(huán)圖說起
9.2 圖編程介紹
9.3 圖編程API
9.3.1 MXMACA任務(wù)圖的結(jié)構(gòu)
9.3.2 任務(wù)圖的圖節(jié)點類型
9.3.3 創(chuàng)建MXMACA任務(wù)圖
9.3.4 顯式圖編程API
9.3.5 流捕獲圖編程API
9.3.6 將任務(wù)圖實例化、加載到GPU并啟動執(zhí)行
9.3.7 MXMACA任務(wù)圖的生命周期管理
9.3.8 更新實例化圖
9.3.9 圖編程的調(diào)試API
9.4 圖編程加速
9.4.1 實踐示例
9.4.2 習(xí)題和思考
第10章 MXMACA人工智能和計算加速庫
10.1 mcBLAS庫
10.1.1 數(shù)據(jù)排布
10.1.2 mcBLAS API介紹
10.2 mcDNN庫
10.2.1 數(shù)據(jù)格式和類型
10.2.2 卷積神經(jīng)網(wǎng)絡(luò)
10.2.3 循環(huán)神經(jīng)網(wǎng)絡(luò)
10.3 mcSPARSE庫
10.3.1 稀疏矩陣存儲格式
10.3.2 mcSPARSE庫的工作流程
10.4 mcSOLVER庫
10.4.1 mcSOLVER庫的工作流程
10.4.2 相關(guān)注意事項
10.5 mcFFT庫
10.5.1 快速傅里葉變換
10.5.2 mcFFT庫的工作流程
10.5.3 FFT變換類型
10.5.4 數(shù)據(jù)類型和數(shù)據(jù)布局
10.5.5 多維變換
10.6 其他加速庫
10.6.1 Thrust庫
10.6.2 mcRAND
10.7 應(yīng)用示例
10.7.1 使用mcBLAS庫求解矩陣乘法
10.7.2 使用mcDNN庫求解深度神經(jīng)網(wǎng)絡(luò)卷積計算
第11章 MXMACA多GPU編程
11.1 單節(jié)點多卡:多設(shè)備服務(wù)器系統(tǒng)
11.1.1 多設(shè)備管理
11.1.2 多設(shè)備系統(tǒng)編程
11.2 多節(jié)點多卡:多GPU集群部署
11.2.1 RDMA技術(shù)
11.2.2 GPU Direct RDMA技術(shù)
11.2.3 多GPU編程的底層通信庫
11.3 多GPU編程示例
11.3.1 用于聲學(xué)數(shù)值模擬的多GPU編程
11.3.2 GPU加速異構(gòu)集群編程
附錄A MXMACA編程技術(shù)術(shù)語
附錄B 本書相關(guān)縮略語