加速MATLAB編程指南:CUDA實現

加速MATLAB編程指南:CUDA實現
定價:354
NT $ 280
  • 作者:趙地
  • 出版社:清華大學出版社
  • 出版日期:2018-08-01
  • 語言:簡體中文
  • ISBN10:7302493170
  • ISBN13:9787302493174
  • 裝訂:平裝 / 202頁 / 16k / 19 x 26 cm / 普通級 / 1-1
 

內容簡介

MATLAB是廣泛應用的演算法開發語言之一。然而,MATLAB簡單易用的特性與演算法複雜性的矛盾,造成了各個領域的MATLAB程式運行緩慢。本書總結了作者多年來在演算法開發工作中關於MATLAB程式加速的實戰經驗,系統地介紹了利用GPU計算能力和CUDA程式設計語言實現加速MATLAB程式設計的方法。


本書首先介紹了MATLAB程式的性能評估的方法,説明讀者找到制約MATLAB程式運行速度的“瓶頸”所在;接著循序漸進地介紹加速MATLAB程式設計的方法,包括基於多核處理器的MATLAB程式加速、基於大記憶體和向量化的MATLAB程式加速、基於平行計算工具箱和GPU計算的MATLAB加速、基於CUDA庫的MATLAB加速、基於CUDA語言的MATLAB加速等。同時,本書附帶了大量程式實例,包括深度學習及大資料分析領域的例子,深入淺出地示範各種基於CUDA語言的MATLAB程式加速的技巧。

本書可幫助讀者對所在領域的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公司Xeon Phi的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公司Xeon Phi的MATLAB程式加速

參考文獻
網路書店 類別 折扣 價格
  1. 新書
    79
    $280