圖書信息,內容介紹,作者介紹,
圖書信息
加速MATLAB編程指南——CUDA實現
作者:趙地
定價:59元
印次:1-1
ISBN:9787302493174
出版日期:2018.08.01
印刷日期:2018.07.06
定價:59元
印次:1-1
ISBN:9787302493174
出版日期:2018.08.01
印刷日期:2018.07.06
內容介紹
MATLAB是廣泛套用的算法開發語言之一。然而,MATLAB簡單易用的特性與算法複雜性的矛盾,造成了各個領域的MATLAB程式運行緩慢。本書總結了作者多年來在算法開發工作中關於MATLAB程式加速的實戰經驗,系統地介紹了利用GPU計算能力和CUDA程式語言實現加速MATLAB編程的方法。本書首先介紹了MATLAB程式的性能評估的方法,幫助讀者找到制約MATLAB程式運行速度的“瓶頸”所在; 接著循序漸進地介紹加速MATLAB編程的方法,包括基於多核處理器的MATLAB程式加速、基於大記憶體和向量化的MATLAB程式加速、基於並行計算工具箱和GPU計算的MATLAB加速、基於CUDA庫的MATLAB加速、基於CUDA語言的MATLAB加速等。同時,本書附帶了大量程式實例,包括深度學習及大數據分析領域的例子
作者介紹
趙地獲得美國路易斯安娜理工大學(Louisiana Tech University)計算機與套用數學專業博士學位,曾在美國哥倫比亞大學(Columbia University)和美國俄亥俄州立大學(The Ohio State University)從事博士後研究工作。
趙地博士在GPU計算方面具有豐富的研究經驗,發表了多篇學術論文和會議論文。現任CNIC-英偉達公司GPU研究中心(GPU Research Center, GRC)、CNIC-英偉達公司GPU教育中心(GPU Education Center, GEC)和CNIC-英偉達公司“智慧醫療”聯合實驗室負責人;中國圖象圖形學學會視覺大數據專業委員會委員,CCF會員。
目錄
第1章緒論
1.1MATLAB程式的加速
1.2MATLAB程式加速的可能途徑
1.2.1基於多核CPU的MATLAB程式加速
1.2.2基於大記憶體的MATLAB程式加速
1.2.3基於英偉達公司GPU的MATLAB程式加速
1.2.4基於AMD公司GPU的MATLAB程式加速
1.2.5基於Intel公司XeonPhi的MATLAB程式加速
1.3MATLAB程式加速的度量
1.4基於GPU計算的MATLAB程式的編制
1.4.1並行計算工具箱簡介
1.4.2CUDA庫
1.4.3CUDA編程
第2章MATLAB程式的性能評估
2.1bench()函式
2.2tic()函式/toc()函式
2.3timeit()函式
2.4cputime()函式
2.5clock()函式和etime()函式
2.6gputimeit()函式
2.7MATLAB探查器
第3章基於多核處理器的MATLAB程式加速
3.1MATLAB矩陣及運算符
3.1.1MATLAB矩陣的創建
3.1.2矩陣的性質的檢驗
3.1.3MATLAB矩陣的操作
3.2MATLAB函式
3.2.1MATLAB函式的定義
3.2.2MATLAB函式的執行
3.3語句與代碼
3.3.1分支結構
3.3.2循環結構
3.4MATLAB代碼
3.5MATLAB並行設定
3.6基於並行for循環(parfor循環)的MATLAB程式加速
第4章基於大記憶體的MATLAB程式的加速
4.1記憶體條的選擇與安裝
4.2記憶體預分配
4.2.1已知數組大小
4.2.2未知數組大小
4.3MATLAB向量化簡介
4.4MATLAB矩陣運算的向量化
4.4.1創建MATLAB矩陣的函式
4.4.2數據複製
4.4.3MATLAB的矩陣變換函式
4.4.4索引
4.4.5矩陣操作的向量化
4.4.6符合條件的元素總數
4.5MATLAB函式的向量化
4.5.1基於arrayfun()函式、bsxfun()函式、cellfun()函式、
spfun()函式和structfun()函式的向量化
4.5.2基於pagefun()函式的向量化
4.6MATLAB語句的向量化
第5章基於並行計算工具箱的MATLAB加速
5.1GPU卡的選擇與安裝
5.1.1GPU卡的選擇
5.1.2電源功率
5.1.3散熱問題
5.2基於並行計算工具箱的GPU計算簡介
5.3基於並行計算工具箱的矩陣運算
5.3.1在設備端(GPU端)直接創建MATLAB矩陣
5.3.2在設備端(GPU端)生成隨機數矩陣
5.3.3設備端(GPU端)的稀疏矩陣
5.3.4設備端(GPU端)矩陣的數據類型
5.3.5設備端(GPU端)矩陣的檢驗
5.3.6設備端(GPU端)矩陣的操作
5.4基於並行計算工具箱的設備端(GPU端)函式
5.4.1設備端(GPU端)函式的定義
5.4.2設備端(GPU端)函式的執行
5.5基於設備端(GPU端)大記憶體的MATLAB程式的加速
5.6例子
5.6.1卷積神經網路前向傳播的卷積層
5.6.2卷積神經網路前向傳播的激活函式
5.6.3卷積神經網路前向傳播的降採樣層
5.6.4卷積神經網路後向傳播的升採樣層
5.6.5卷積神經網路後向傳播的卷積層
5.6.6卷積神經網路後向傳播中的梯度計算
第6章MATLAB與C/C++的接口
6.1MEX庫API
6.1.1MEX相關的函式
6.1.2從MEX中調用MATLAB函式
6.1.3mexGet()函式
6.1.4MEX庫API與輸入輸出相關的函式
6.1.5MEX庫API與鎖定相關的函式
6.2MATLAB的C/C++矩陣庫API
6.2.1定義MEX函式的數據類型
6.2.2創建數組、分配記憶體和釋放記憶體
6.2.3數據類型校驗:數組的數據類型和性質
6.2.4數據存取:從數組讀取和寫入數據
6.2.5數據類型轉換:將字元串數組和結構數組轉換成對象數組
6.3MEX函式編譯器
6.3.1MEX介紹
6.3.2編譯MEX
6.3.3MEX檔案的查錯
第7章基於CUDA庫的MATLAB加速
7.1基於CUDA庫的MATLAB加速簡介
7.2基於ArrayFire庫的MATLAB加速簡介
7.2.1ArrayFire簡介
7.2.2ArrayFire數組
7.2.3ArrayFire函式
7.2.4CUDA的混合編程
7.2.5實例
7.3基於其他CUDA庫的MATLAB加速簡介
第8章GPU計算簡介
8.1晶片技術的發展與摩爾定律
8.2每秒浮點運算次數
8.3GPU計算加速的度量
8.3.1GPU程式的加速比
8.3.2阿姆達爾定律和古斯塔夫森定律
8.3.3並行程式的並行狀況
8.4並行計算部件
8.4.1張量處理器
8.4.2現場可程式門陣列
8.4.3類腦處理器
8.4.4視覺處理器
8.4.5物理處理器
8.4.6圖形處理器
8.5英偉達公司GPU簡介
8.5.1計算單元
8.5.2GPU記憶體
8.5.3計算能力
8.5.4GPU當前狀態的檢測
8.5.5GPU集群設定
8.5.6集群管理軟體
第9章CUDA編程簡介
9.1CUDA核
9.2CUDA執行緒與執行緒塊
9.2.1CUDA執行緒
9.2.2CUDA執行緒塊
9.3記憶體結構與管理
9.3.1全局記憶體
9.3.2共享記憶體
9.3.3鎖頁記憶體
9.3.4紋理記憶體和表面記憶體
9.4並行管理
9.4.1非同步並行執行
9.4.2流和事件
9.4.3同步調用
9.5CUDA流
9.5.1CUDA流的創建和結束
9.5.2默認CUDA流
9.5.3顯式同步
9.5.4隱式同步
9.5.5重疊行為
9.5.6回調函式
9.5.7CUDA流的優先權
9.6CUDA事件
9.6.1CUDA事件的創建與清除
9.6.2CUDA事件的運行
9.7多設備系統
9.7.1多設備系統的初始化
9.7.2多設備系統的設備計數
9.7.3多設備系統的設備選擇
9.7.4多設備系統的CUDA流和CUDA事件
9.7.5不通過統一虛擬地址的多設備系統的設備間的記憶體複製
9.7.6通過統一虛擬地址的多設備系統的設備間的記憶體複製
9.8動態並行
9.8.1動態並行簡介
9.8.2動態並行的編程模型
9.8.3動態並行的環境配置
9.8.4動態並行的記憶體管理
9.8.5動態並行的嵌套深度
9.9統一虛擬地址空間
9.9.1統一虛擬地址空間簡介
9.9.2統一記憶體編程的優點
9.9.3統一記憶體分配
9.9.4統一記憶體的連續性與並行性
9.9.5統一記憶體的檢驗
9.9.6統一記憶體的性能最佳化
9.10CUDA的編譯
9.10.1CUDA編譯工作流
9.11CUDA程式實例
9.11.1序列蒙特卡羅的類別分布隨機數
9.11.2哈爾變換
第10章CUDA程式最佳化
10.1CUDA程式最佳化的策略
10.2指令級別的最佳化
10.2.1算術指令吞吐量最大化
10.2.2控制流指令
10.2.3同步指令
10.3執行緒和執行緒塊級別的最佳化
10.3.1warp簡介
10.3.2CUDA執行緒塊的warp數量
10.3.3CUDA占用率
10.3.4執行緒warp對設備端(GPU端)記憶體讀寫
10.4CUDA核級別的最佳化
10.4.1最佳化CUDA核參數
10.4.2減少記憶體同步
10.4.3減少暫存器總量
10.4.4提高指令層次的並行度
10.5CUDA程式級別的最佳化
第11章基於CUDA的MATLAB加速
11.1基於CUDAKernel的MATLAB加速
11.2基於MEX函式的MATLAB加速
11.3多GPU編程
11.4例子
11.4.1基於MEX函式的多GPU矩陣相加
11.4.2基於MEX函式的多GPU的LSE函式
第12章總結
12.1加速MATLAB編程方法的比較
12.2進一步加速MATLAB
12.2.1多路多核處理器的MATLAB程式加速
12.2.2基於AMD公司GPU的MATLAB程式加速
12.2.3基於Intel公司XeonPhi的MATLAB程式加速
參考文獻