相關主題
商品描述
MACA全稱是MetaX Advanced Compute Architecture,是由沐曦(MetaX)公司推出的一種採用通用並行計算架構解決復雜計算問題的異構計算平臺,它包含了沐曦自研指令集架構(ISA)、GPU並行計算硬件引擎和GPU軟件開發平臺。本書深入淺出,層層遞進,構建了一個系統全面的知識結構,全面介紹了異構並行計算和GPU編程的基礎知識與高級應用。本書的內容覆蓋基礎理論、實際應用、編程模型到內存管理、性能優化等多個層面。本書不僅詳盡闡述了MXMACA C/C++編程語言的特性和應用,還通過豐富的示例代碼展示了在沐曦高性能GPU平臺上開發計算加速應用程序的全過程。本書不僅為讀者提供了深入學習GPU編程和異構計算的資料,也為科學計算、大數據分析、人工智能等領域的專業人士提供了寶貴的技術資源。無論是相關專業的老師和學生,還是對並行計算感興趣的研究人員和工程師,都能從這本書中獲得實用的指導。
目錄大綱
第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 多設備系統編程
11.2 多節點多卡:多GPU集群部署
11.2.1 RDMA技術
11.2.2 GPU Direct RDMA技術
11.2.3 多GPU編程的底層通信庫
11.3 多GPU編程示例
11.3.1 用於聲學數值模擬的多GPU編程
11.3.2 GPU加速異構集群編程
附錄A MXMACA編程技術術語
附錄B 本書相關縮略語