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