編輯推薦
適讀人群 :工程技術人員、高等院校學生 除瞭仿真和算法開發,當前越來越多的研發人員使用MATLAB進行復雜計算領域的産品部署。用戶可以藉助圖像處理器分布式並行處理,提升MATLAB代碼的性能。由於提供瞭很多高層函數,MATLAB成功成為用於快速原型設計的齣色仿真工具。但麵對紛繁復雜的GPU細節和背景知識,MATLAB用戶在麵對GPU強大計算能力時,總是猶豫不決。本書為用戶提供瞭入門讀物,架起瞭MATLAB和GPU之間的橋梁。本書從零基礎開始,深入淺齣,如介紹MATLAB使用CUDA所需的設置(支持Windows、Linux和Mac OX等多種操作係統),引導用戶通過一個個的專題(如CDUA庫),逐步掌握GPU編程。作者還與讀者分享瞭在大數據計算領域的MATLAB、C++和GPU的編程經驗,展示瞭如何修改MATLAB代碼以更好地利用GPU的計算能力,以及如何將代碼整閤到商用軟件産品中。全書提供瞭大量的代碼示例,能夠作為用戶C-MEX和CUDA代碼的模闆。
內容簡介
本書介紹CPU和MATLAB的聯閤編程方法,包括首先介紹瞭不使用GPU實現MATLAB加速的方法;然後介紹瞭MATLAB和計算統一設備架(CUDA)配置通過分析進行zuiyou規劃,以及利用c-mex進行CUDA編程;接著介紹瞭MATLAB與並行計算工具箱和運用CUDA加速函數庫;zui後給齣計算機圖形實例和CUDA轉換實例。本書還通過大量的實例、圖示和代碼,深入淺齣地引導讀者進入GPU的殿堂,易於讀者理解和掌握。通過閱讀本書,讀者無需付齣很多的精力和時間,就可以學習使用GPU進行並行處理,實現MATLAB代碼的加速,提高工作效率,從而將更多的時間和精力用於創造性工作和其他事情。
本書可作為相關專業高年級本科生和研究生的教材,也可作為工程技術人員的參考書。
作者簡介
Jung W. Suh,美國KLA-Tencor(科天)公司的高級算法工程師和研究科學傢。2007年因其在3D醫學圖像處理領域的工作,從弗吉尼亞理工大學獲得博士學位。他參與瞭三星電子在MPEG-4和數字移動廣播(DMB)係統的研發工作。在任職KLA-Tencor公司前,他還擔任HeartFlow公司高級科學傢。研究領域包括生物圖像處理、模式識彆、機器學習和圖像/視頻壓縮。發錶30餘篇期刊和會議論文,並擁有6項專利。
Youngmin Kim,美國Life Technologies(生命科技)公司的高級軟件工程師,從事實時圖像獲取和高吞吐量圖像分析程序開發工作。他之前的工作還包括設計和開發自動顯微鏡和用於實時分析的集成成像算法軟件。先後從伊利諾伊大學(厄巴納-香檳校區)電子工程專業獲得學士和碩士學位。在加入Life Technologies公司前,他還在三星公司開發瞭3D圖像軟件,並在一傢創業公司領導軟件團隊。
目錄
前言
第1章 不使用GPU實現MATLAB加速
1.1 本章學習目標
1.2 嚮量化
1.2.1 元素運算
1.2.2 嚮量/矩陣運算
1.2.3 實用技巧
1.3 預分配
1.4 for-loop
1.5 考慮稀疏矩陣形式
1.6 其他技巧
1.6.1 盡量減少循環中的文件讀/寫
1.6.2 盡量減少動態改變路徑和改變變量類型
1.6.3 在代碼易讀性和優化間保持平衡
1.7 實例
第2章 MATLAB和CUDA配置
2.1 本章學習目標
2.2 配置MATLAB進行c-mex編程
2.2.1 備忘錄
2.2.2 編譯器的選擇
2.3 使用c-mex實現“Hello,mex!”
2.4 MATLAB中的CUDA配置
2.5 實例:使用CUDA實現簡單的嚮量加法
2.6 圖像捲積實例
2.6.1 MATLAB中捲積運算
2.6.2 用編寫的c-mex計算捲積
2.6.3 在編寫的c-mex中利用CUDA計算捲積
2.6.4 簡單的時間性能分析
2.7 總結
第3章 通過耗時分析進行最優規劃
3.1 本章學習目標
3.2 分析MATLAB代碼查找瓶頸
3.2.1 分析器的使用方法
3.2.2 針對多核CPU更精確的耗時分析
3.3 CUDA的c-mex代碼分析
3.3.1 利用Visual Studio進行CUDA分析
3.3.2 利用NVIDIA Visual Profiler進行CUDA分析
3.4 c-mex調試器的環境設置
第4章 利用c-mex進行CUDA編程
4.1 本章學習目標
4.2 c-mex中的存儲布局
4.2.1 按列存儲
4.2.2 按行存儲
4.2.3 c-mex中復數的存儲布局
4.3 邏輯編程模型
4.3.1 邏輯分組1
4.3.2 邏輯分組2
4.3.3 邏輯分組3
4.4 GPU簡單介紹
4.4.1 數據並行
4.4.2 流處理器
4.4.3 流處理器簇
4.4.4 綫程束
4.4.5 存儲器
4.5 第一種初級方法的分析
4.5.1 優化方案A:綫程塊
4.5.2 優化方案B
4.5.3 總結
第5章 MATLAB與並行計算工具箱
5.1 本章學習目標
5.2 GPU處理MATLAB內置函數
5.3 GPU處理非內置MATLAB函數
5.4 並行任務處理
5.4.1 MATLAB worker
5.4.2 parfor
5.5 並行數據處理
5.5.1 spmd
5.5.2 分布式數組與同分布數組
5.5.3 多個GPU時的worker
5.6 無需c-mex的CUDA文件直接使用
第6章 運用CUDA加速函數庫
6.1 本章學習目標
6.2 CUBLAS
6.2.1 CUBLAS函數
6.2.2 CUBLAS矩陣乘法
6.2.3 使用Visual Profiler進行CUBLAS分析
6.3 CUFFT
6.3.1 通過CUFFT進行二維FFT運算
6.3.2 用Visual Profiler進行CUFFT時間分析
6.4 Thrust
6.4.1 通過Thrust排序
6.4.2 采用Visual Profiler分析Thrust
第7章 計算機圖形學實例
7.1 本章學習目標
7.2 Marching-Cubes算法
7.3 MATLAB實現
7.3.1 步驟1
7.3.2 步驟2
7.3.3 步驟3
7.3.4 步驟4
7.3.5 步驟5
7.3.6 步驟6
7.3.7 步驟7
7.3.8 步驟8
7.3.9 步驟9
7.3.10 時間分析
7.4 采用CUDA和c-mex實現算法
7.4.1 步驟1
7.4.2 步驟2
7.4.3 時間分析
7.5 用c-mex函數和GPU實現
7.5.1 步驟1
7.5.2 步驟2
7.5.3 步驟3
7.5.4 步驟4
7.5.5 步驟5
7.5.6 時間分析
7.6 總結
第8章 CUDA 轉換實例:3D圖像處理
8.1 本章學習目標
8.2 基於Atlas分割方法的MATLAB代碼
8.2.1 基於Atlas分割背景知識
8.2.2 用於分割的MATLAB代碼
8.3 通過分析進行CUDA最優設計
8.3.1 分析MATLAB代碼
8.3.2 概要結果分析和CUDA最優設計
8.4 CUDA轉換1——正則化
8.5 CUDA轉換2——圖像配準
8.6 CUDA轉換結果
8.7 結論
附錄
附錄A 下載和安裝CUDA庫
A.1 CUDA工具箱下載
A.2 安裝
A.3 確認
附錄B 安裝NVIDIA Nsight到Visual Studio
前言/序言
MATLAB是廣泛應用於快速原型設計和算法開發的仿真工具,功能強大,簡單易用。許多實驗室和研究機構都迫切地希望MATLAB代碼能夠更快地運行,以滿足大運算量項目的需要。由於MATLAB采用嚮量/矩陣的數據形式,適閤於並行處理,因此采用圖形處理單元(Graphics Processing Unit,GPU)對提升MATLAB運行速度大有裨益。
本書主要麵嚮工程、科學、技術等專業領域,需要利用MATLAB進行海量數據處理的師生和科研人員。MATLAB用戶可能來自各個領域,不一定都具有豐富的程序開發經驗。對於那些沒有程序開發基礎的讀者,利用GPU加速MATLAB需要對他們的算法進行移植,會引入一些不必要的麻煩,甚至還需要設定環境。本書麵嚮具有一定或較多MATLAB編程經驗,但對C語言和計算機並行架構不是很瞭解的讀者,以幫助讀者將精力集中在他們的研究工作上,從而避免因使用GPU和CUDA而對MATLAB程序而非算法本身進行大量調整。
作為入門讀物,本書從基礎知識開始,首先介紹如何設置MATLAB運行CUDA(在Windows和Mac OSX),創建c-mex和m文件;接著引導讀者進入專業級彆的主題,如第三方CUDA庫。本書還提供瞭許多修改用戶MATLAB代碼的實用方法,以更好地利用GPU強大的計算能力。
本書將指導讀者使用NVIDIA的GPU顯著提升MATLAB的運行速度。NVIDIA的CUDA作為一種並行計算架構,最早用於計算機遊戲設計,但由於其高效的大規模計算能力,在基礎科學和工程領域也聲譽日隆。通過本書,讀者無需付齣很多的精力和時間,就可以利用GPU的並行處理和豐富的CUDA科學庫,實現MATLAB代碼的加速,從而提升讀者的科研工作水平。
通過閱讀本書,讀者很快就能體會到MATLAB代碼運行速度驚人的提升,而且通過使用開源CUDA資源,可以更好地進行科學研究。支持Windows和Mac操作係統也是本書的特點之一。
GPU與MATLAB混閤編程 下載 mobi epub pdf txt 電子書 格式