目錄
第1章 MXMACA編程簡介
1.1 本書寫給誰
1.2 學習MXMACA編程的基礎
1.3 本書結構
1.4 相關的背景知識
1.4.1 電腦體系結構和摩爾定律
1.4.2 摩爾定律碰到了三堵牆
1.4.3 並行計算
1.4.4 計算平台的分類
1.4.5 GPU和CPU體系結構對比
1.4.6 GPU異構編程
第2章 MXMACA編程環境
2.1 MXMACA雲端編程環境
2.2 MXMACA本機編程環境
2.2.1 下載MXMACA安裝工具包
2.2.2 安裝MXMACA編程環境
2.2.3 配置MXMACA編程環境
2.3 用MXMACA列印「Hello World」
2.3.1 過程概述和代碼示例
2.3.2 習題和思考
第3章 MXMACA編程模型
3.1 硬體平台
3.2 程序結構
3.3 內存管理
3.4 線程管理
3.5 核函數
3.6 向量加法示例
3.6.1 用傳統的CPU編程完成向量相加
3.6.2 用MXMACA異構編程完成向量相加
3.6.3 向量加法實測結果比較
3.6.4 習題和思考
第4章 MXMACA編程API
4.1 基本語法
4.2 數據類型
4.2.1 C++語言基礎類型
4.2.2 half類型
4.2.3 bfloat類型
4.3 MXMACA C++語言擴展集
4.3.1 擴展的Token
4.3.2 函數執行空間限定符
4.3.3 變數存儲空間限定符
4.3.4 內置向量類型
4.3.5 內置變數
4.3.6 向量運算單元
第5章 MXMACA執行模型
5.1 沐曦GPU並行架構
5.1.1 設備線程架構信息查詢
5.1.2 核函數的併發執行和串並行執行
5.1.3 核函數的啟動方式
5.2 線程束執行的本質
5.2.1 線程束和線程塊
5.2.2 線程束分化
5.2.3 資源分配
5.2.4 延遲隱藏
5.2.5 佔用率
5.2.6 同步機制
5.2.7 協作組編程
5.2.8 可擴展性
5.2.9 CPU線程和GPU線程的區別
5.2.10 習題和思考
5.3 MXMACA流和併發執行
5.3.1 什麼是流
5.3.2 基於流的並行
5.3.3 默認流與隱式同步
5.3.4 用戶自定義流
5.3.5 流編程
5.3.6 用API啟動核函數
5.3.7 MXMACA流管理函數匯總
5.4 MXMACA動態並行
5.4.1 動態並行的執行模型
5.4.2 動態並行的內存模型
5.4.3 在GPU上嵌套列印「Hello World」
5.4.4 使用動態並行計算Mandelbrot集合圖像
5.5 MXMACA事件
5.5.1 使用事件同步
5.5.2 MXMACA事件管理函數匯總
5.6 MXMACA核函數計時
第6章 MXMACA內存模型和內存管理
6.1 電腦存儲器分級模型
6.1.1 存儲器的層次結構
6.1.2 GPU內存的層次結構
6.1.3 Linux的內存管理
6.2 MXMACA內存層次模型
6.2.1 GPU寄存器
6.2.2 GPU私有內存
6.2.3 GPU工作組共享內存
6.2.4 GPU常量內存
6.2.5 GPU全局內存
6.2.6 GPU緩存
6.3 MXMACA內存管理
6.3.1 常規內存管理
6.3.2 零複製內存
6.3.3 統一虛擬定址技術
6.3.4 統一定址內存技術
6.3.5 虛擬內存管理API
6.3.6 流序內存分配器
6.3.7 MXMACA編程內存相關的知識匯總
6.3.8 MXMACA內存管理函數的分類及特點
6.3.9 部分MXMACA內存管理函數的行為總結
6.3.10 習題和思考
第7章 MXMACA程序的編譯、運行和調試
7.1 MXMACA代碼的編譯和運行
7.1.1 離線編譯和靜態運行
7.1.2 運行時編譯和動態載入
7.1.3 二進位緩存
7.1.4 重編譯
7.2 MXMACA程序的調試
7.2.1 異構計算系統的分析和調試
7.2.2 GPU核函數的功能調試
7.2.3 GPU核函數的性能調試
7.3 常見問題及其解決方案
7.3.1 MXMACA編程API使用錯誤
7.3.2 並行編程錯誤
7.3.3 演算法錯誤
7.3.4 查找並避免錯誤
第8章 MXMACA程序優化
8.1 MXMACA程序優化概述
8.1.1 MXMACA程序優化的目標
8.1.2 MXMACA程序性能評估
8.2 MXMACA程序優化的一般流程
8.2.1 程序設計開發階段
8.2.2 程序優化階段
8.2.3 優化策略總結
8.3 MXMACA程序優化的主要內容
8.3.1 內存訪問優化
8.3.2 數據傳輸優化
8.3.3 執行並行度優化
8.3.4 適配GPU的硬體行為
8.3.5 算術運算密度優化
8.3.6 一些常見的編譯器優化方法
8.4 MXMACA程序優化總結
8.4.1 化利用率
8.4.2 化存儲吞吐量
8.4.3 化指令吞吐量
8.4.4 最小化內存抖動
第9章 MXMACA圖編程
9.1 從有向無環圖說起
9.2 圖編程介紹
9.3 圖編程API
9.3.1 MXMACA任務圖的結構
9.3.2 任務圖的圖節點類型
9.3.3 創建MXMACA任務圖
9.3.4 顯式圖編程API
9.3.5 流捕獲圖編程API
9.3.6 將任務圖實例化、載入到GPU並啟動執行
9.3.7 MXMACA任務圖的生命周期管理
9.3.8 更新實例化圖
9.3.9 圖編程的調試API
9.4 圖編程加速
9.4.1 實踐示例
9.4.2 習題和思考
第10章 MXMACA人工智慧和計算加速庫
10.1 mcBLAS庫
10.1.1 數據排布
10.1.2 mcBLAS API介紹
10.2 mcDNN庫
10.2.1 數據格式和類型
10.2.2 卷積神經網路
10.2.3 循環神經網路
10.3 mcSPARSE庫
10.3.1 稀疏矩陣存儲格式
10.3.2 mcSPARSE庫的工作流程
10.4 mcSOLVER庫
10.4.1 mcSOLVER庫的工作流程
10.4.2 相關注意事項
10.5 mcFFT庫
10.5.1 快速傅里葉變換
10.5.2 mcFFT庫的工作流程
10.5.3 FFT變換類型
10.5.4 數據類型和數據布局
10.5.5 多維變換
10.6 其他加速庫
10.6.1 Thrust庫
10.6.2 mcRAND
10.7 應用示例
10.7.1 使用mcBLAS庫求解矩陣乘法
10.7.2 使用mcDNN庫求解深度神經網路卷積計算
第11章 MXMACA多GPU編程
11.1 單節點多卡:多設備伺服器系統
11.1.1 多設備管理
11.1.2 多設備系統編程
&nb