注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術(shù)計算機/網(wǎng)絡(luò)行業(yè)軟件及應(yīng)用OpenCL實戰(zhàn)

OpenCL實戰(zhàn)

OpenCL實戰(zhàn)

定 價:¥89.00

作 者: (美)Matthew,Scarpino 著,陳睿 譯
出版社: 人民郵電出版社
叢編項:
標 簽: 計算機與互聯(lián)網(wǎng) 專用軟件

ISBN: 9787115347343 出版時間: 2014-06-01 包裝: 平裝
開本: 16開 頁數(shù): 406 字數(shù):  

內(nèi)容簡介

  OpenCL(Open Computing Language)是第一個面向異構(gòu)系統(tǒng)通用目的并行編程的開放式、免費標準,也是一個統(tǒng)一的編程環(huán)境。OpenCL當前已經(jīng)廣泛應(yīng)用于各種并行環(huán)境和不同行業(yè)領(lǐng)域?!禣penCL實戰(zhàn)》是OpenCL編程的實踐指南,旨在介紹如何在實際的應(yīng)用程序中使用OpenGL解決問題。全書共16章和4個附錄。正文可以分為3個部分。第一部分是第1~10章,主要討論的是OpenCL語言及其各項功能。第二部分是第11~14章,展示如何用OpenCL來處理高性能計算領(lǐng)域會經(jīng)常碰到的大規(guī)模任務(wù)。最后一部分,包括15章和16章,展示如何用OpenCL來加速OpenGL應(yīng)用程序的執(zhí)行。附錄A介紹了SDK并演示如何安裝AMD和Nvidia所提供的SDK。附錄B討論了OpenGL和著色器程序開發(fā)的基礎(chǔ)知識。附錄C介紹如何安裝和使用MinGW。附錄D討論了嵌入式OpenCL標準?! 禣penCL實戰(zhàn)》適合于需要在異構(gòu)平臺和并發(fā)環(huán)境下進行開發(fā)的專業(yè)人士閱讀,要求讀者有一定的C語言基礎(chǔ)?!禣penCL實戰(zhàn)》也適合對OpenCL和高性能計算感興趣的讀者參考。

作者簡介

暫缺《OpenCL實戰(zhàn)》作者簡介

圖書目錄

目 錄
第一部分 OpenCL編程基礎(chǔ)
第1章 OpenCL簡介 3
1.1 OpenCL的來臨 4
1.2 為什么是OpenCL 5
1.2.1 可移植性 5
1.2.2 標準化的向量處理 6
1.2.3 并行編程 7
1.3 類比:OpenCL處理和紙牌游戲 8
1.4 OpenCL應(yīng)用程序的第一印象 10
1.5 OpenCL標準和擴展 13
1.6 框架和SDK 13
1.7 小結(jié) 14
第2章 主機編程:基本的數(shù)據(jù)結(jié)構(gòu) 15
2.1 基本數(shù)據(jù)類型 16
2.2 獲取平臺信息 17
2.2.1 創(chuàng)建平臺結(jié)構(gòu) 17
2.2.2 獲取平臺信息 18
2.2.3 示例代碼:測試平臺的擴展 19
2.3 訪問安裝設(shè)備 20
2.3.1 創(chuàng)建設(shè)備結(jié)構(gòu) 21
2.3.2 獲取設(shè)備信息 22
2.3.3 示例代碼:測試設(shè)備擴展 22
2.4 通過上下文管理設(shè)備 24
2.4.1 創(chuàng)建上下文 25
2.4.2 獲取上下文信息 26
2.4.3 上下文和引用計數(shù) 27
2.4.4 示例代碼:檢查上下文的引用計數(shù) 27
2.5 將設(shè)備代碼保存在程序中 28
2.5.1 創(chuàng)建程序 29
2.5.2 編譯程序 30
2.5.3 獲取程序信息 31
2.5.4 示例代碼:構(gòu)建來自多個源文件的程序 33
2.6 將函數(shù)打包為內(nèi)核 34
2.6.1 創(chuàng)建內(nèi)核 35
2.6.2 獲取內(nèi)核信息 35
2.6.3 示例代碼:獲取內(nèi)核信息 36
2.7 用命令隊列保存內(nèi)核 37
2.7.1 創(chuàng)建命令隊列 38
2.7.2 入列內(nèi)核執(zhí)行命令 38
2.8 小結(jié) 39
第3章 主機編程:數(shù)據(jù)傳輸和數(shù)據(jù)劃分 41
3.1 設(shè)置內(nèi)核參數(shù) 42
3.2 緩存對象 42
3.2.1 分配緩存對象 43
3.2.2 創(chuàng)建子緩存對象 45
3.3 圖像對象 46
3.3.1 創(chuàng)建圖像對象 46
3.3.2 獲取圖像對象的相關(guān)信息 49
3.4 獲取緩存對象的相關(guān)信息 49
3.5 內(nèi)存對象的傳輸命令 51
3.5.1 讀/寫數(shù)據(jù)傳輸 52
3.5.2 映射內(nèi)存對象 55
3.5.3 內(nèi)存對象間的數(shù)據(jù)復(fù)制 57
3.6 數(shù)據(jù)劃分 59
3.6.1 循環(huán)和工作項 60
3.6.2 工作項的大小和偏移量 61
3.6.3 一個簡單的一維例子 62
3.6.4 工作組和計算單元 63
3.7 小結(jié) 64
第4章 內(nèi)核編程:數(shù)據(jù)類型和設(shè)備內(nèi)存 66
4.1 內(nèi)核編程簡介 67
4.2 標量數(shù)據(jù)類型 68
4.2.1 訪問雙精度數(shù)據(jù)類型 69
4.2.2 字節(jié)順序 70
4.3 浮點計算 71
4.3.1 浮點數(shù)據(jù)類型 71
4.3.2 雙轉(zhuǎn)度數(shù)據(jù)類型 72
4.3.3 half數(shù)據(jù)類型 73
4.3.4 檢查IEEE-754的兼容性 73
4.4 向量數(shù)據(jù)類型 75
4.4.1 首選向量寬度 76
4.4.2 初始化向量 78
4.4.3 讀取和修改向量分量 78
4.4.4 字節(jié)順序和內(nèi)存訪問 81
4.5 OpenCL設(shè)備模型 83
4.5.1 內(nèi)核模型類比的第一部分:學校中學數(shù)學的學生 83
4.5.2 設(shè)備模型類比的第二部分:設(shè)備上的工作項 84
4.5.3 程序中的地址空間 86
4.5.4 內(nèi)存對齊 88
4.6 局部和私有內(nèi)核參數(shù) 88
4.6.1 局部參數(shù) 89
4.6.2 私有參數(shù) 89
4.7 小結(jié) 90
第5章 內(nèi)核編程:運算符和函數(shù) 92
5.1 運算符 93
5.2 工作組和工作項函數(shù) 95
5.2.1 維度和工作項 96
5.2.2 工作組 97
5.2.3 示例應(yīng)用 97
5.3 數(shù)據(jù)傳輸操作 98
5.3.1 加載和保存同類型的數(shù)據(jù) 98
5.3.2 將標量數(shù)組加載保存到向量中 99
5.3.3 將向量保存到標量數(shù)組中 100
5.4 浮點型函數(shù) 100
5.4.1 算術(shù)運算函數(shù)和取舍函數(shù) 100
5.4.2 比較函數(shù) 102
5.4.3 指數(shù)函數(shù)和對數(shù)函數(shù) 103
5.4.4 三角函數(shù) 103
5.4.5 其他類型的浮點函數(shù) 105
5.5 整數(shù)函數(shù) 106
5.5.1 加法函數(shù)和減法函數(shù) 106
5.5.2 乘法運算 108
5.5.3 其他類型的整數(shù)函數(shù) 109
5.6 混洗和選擇函數(shù) 111
5.6.1 混洗函數(shù) 111
5.6.2 選擇函數(shù) 113
5.7 向量測試函數(shù) 115
5.8 幾何函數(shù) 116
5.9 小結(jié) 118
第6章 圖像處理 120
6.1 圖像對象和采樣器 121
6.1.1 主機上的圖像對象:cl_mem 121
6.1.2 主機上的采樣器;cl_sampler 122
6.1.3 設(shè)備上的圖像對象:image2d_t和image3d_t 125
6.1.4 設(shè)備上的采樣器:sampler_t 126
6.2 圖像處理函數(shù) 126
6.2.1 圖像讀取函數(shù) 127
6.2.2 寫圖像函數(shù) 128
6.2.3 圖像信息函數(shù) 129
6.2.4 一個簡單的例子 130
6.3 圖像放縮和插值 131
6.3.1 最鄰近插值 131
6.3.2 雙線性插值 132
6.3.3 用OpenCL編程放大圖像 134
6.4 小結(jié) 135
第7章 事件、性能分析及同步化 136
7.1 主機提醒事件 137
7.1.1 將事件和命令關(guān)聯(lián) 137
7.1.2 將事件和回調(diào)函數(shù)作關(guān)聯(lián) 138
7.1.3 主機提醒的例子 139
7.2 命令同步事件 140
7.2.1 等待列表和命令事件 141
7.2.2 等待列表和用戶事件 142
7.2.3 額外的命令同步函數(shù) 144
7.2.4 獲取和事件關(guān)聯(lián)的數(shù)據(jù) 146
7.3 性能分析事件 149
7.3.1 配置性能分析命令 149
7.3.2 對數(shù)據(jù)傳輸進行性能分析 151
7.3.3 對數(shù)據(jù)劃分進行分析 152
7.4 工作項同步化 154
7.4.1 障礙和柵欄 155
7.4.2 原子操作 156
7.4.3 原子命令和互斥 158
7.4.4 異步數(shù)據(jù)傳輸 160
7.5 小結(jié) 161
第8章 用C++開發(fā) 163
8.1 初步了解 164
8.1.1 向量和字符串 164
8.1.2 異?!?65
8.2 創(chuàng)建內(nèi)核 166
8.2.1 平臺、設(shè)備以及上下文 166
8.2.2 程序和內(nèi)核 169
8.3 內(nèi)核參數(shù)和內(nèi)存對象 172
8.3.1 內(nèi)存對象 173
8.3.2 通用數(shù)據(jù)參數(shù) 177
8.3.3 局部內(nèi)存參數(shù) 178
8.4 命令隊列 179
8.4.1 創(chuàng)建CommandQueue對象 179
8.4.2 入列內(nèi)核執(zhí)行命令 179
8.4.3 讀寫命令 181
8.4.4 內(nèi)存映射和復(fù)制命令 183
8.5 事件處理 185
8.5.1 主機提醒 185
8.5.2 命令同步化 187
8.5.3 性能分析事件 188
8.5.4 另外的事件函數(shù) 189
8.6 小結(jié) 190
第9章 用Java和Python來開發(fā) 192
9.1 Aparapi 193
9.1.1 Aparapi安裝 193
9.1.2 Kernel類 194
9.1.3 工作項和工作組 195
9.2 JavaCL 197
9.2.1 JavaCL安裝 198
9.2.2 JavaCL開發(fā)概述 198
9.2.3 用JavaCL來創(chuàng)建內(nèi)核 199
9.2.4 設(shè)定內(nèi)核參數(shù)以及入列命令 202
9.3 PyOpenCL 206
9.3.1 PyOpenCL安裝和許可 206
9.3.2 PyOpenCL開發(fā)概述 207
9.3.3 用PyOpenCL創(chuàng)建內(nèi)核 207
9.3.4 設(shè)置參數(shù)和執(zhí)行內(nèi)核 211
9.4 小結(jié) 215
第10章 通用編程原則 217
10.1 全局大小和局部大小 218
10.1.1 找出工作組大小的上限值 218
10.1.2 測試內(nèi)核和設(shè)備 220
10.2 數(shù)值歸并 221
10.2.1 OpenCL的歸并算法 221
10.2.2 使用向量提升歸并運算的速度 224
10.3 工作組間的同步化 225
10.4 設(shè)計高性能內(nèi)核的10條技巧 227
10.5 小結(jié) 229
第二部分 用OpenCL來編程實現(xiàn)實際的算法
第11章 歸并與排序 233
11.1 MapReduce 234
11.1.1 MapReduce簡介 234
11.1.2 MapReduce和OpenCL 236
11.1.3 MapReduce例子:字符串查找 238
11.2 雙調(diào)排序 240
11.2.1 理解雙調(diào)排序算法 240
11.2.2 用OpenCL來實現(xiàn)雙調(diào)排序 243
11.3 基數(shù)排序 249
11.3.1 理解基數(shù)排序 250
11.3.2 用向量實現(xiàn)基數(shù)排序 250
11.4 小結(jié) 252
第12章 矩陣和QR分解 253
12.1 矩陣轉(zhuǎn)置 254
12.1.1 矩陣簡介 254
12.1.2 矩陣轉(zhuǎn)置的理論和實現(xiàn) 254
12.2 矩陣乘法 257
12.2.1 矩陣乘法理論 257
12.2.2 用OpenCL編程實現(xiàn)矩陣乘法 258
12.3 Householder變換 259
12.3.1 向量投影 260
12.3.2 向量反射 261
12.3.3 外積和Householder矩陣 262
12.3.4 用OpenCL編程實現(xiàn)向量反射 263
12.4 QR分解 264
12.4.1 計算Householder向量和R矩陣 265
12.4.2 計算Householder矩陣和矩陣Q 266
12.4.3 用OpenCL編程實現(xiàn)QR分解 267
12.5 小結(jié) 270
第13章 稀疏矩陣 272
13.1 差分方程和稀疏矩陣 273
13.2 稀疏矩陣的存儲以及Harwell-Boeing數(shù)據(jù)集 274
13.2.1 Harwell-Boeing數(shù)據(jù)集簡介 274
13.2.2 訪問Matrix Market文件中的數(shù)據(jù) 275
13.3 最速下降法 278
13.3.1 正定矩陣 279
13.3.2 最速下降法理論 279
13.3.3 用OpenCL編程實現(xiàn)SD算法 281
13.4 共軛梯度法 283
13.4.1 正交化和共軛 283
13.4.2 正交化和GRAM-SCHMIDT法 283
13.4.3 共軛梯度法 285
13.5 小結(jié) 287
第14章 信號處理和快速傅里葉變換 289
14.1 頻率分析簡介 289
14.2 離散傅里葉變換 291
14.2.1 DFT背后的理論 292
14.2.2 OpenCL和DFT 298
14.3 快速傅里葉變換 299
14.3.1 DFT的三條性質(zhì) 299
14.3.2 構(gòu)建快速傅里葉變換 302
14.3.3 用OpenCL來實現(xiàn)FFT 306
14.4 小結(jié) 311
第三部分 用OpenCL來加速OpenGL
第15章 將OpenCL和OpenGL結(jié)合 315
15.1 在OpenGL和OpenCL之間共享數(shù)據(jù) 316
15.1.1 創(chuàng)建OpenCL上下文 317
15.1.2 在OpenGL和OpenCL之間共享數(shù)據(jù) 319
15.1.3 同步化對共享數(shù)據(jù)的訪問 322
15.2 獲取信息 323
15.2.1 獲取OpenGL對象和紋理信息 323
15.2.2 獲取OpenGL上下文的相關(guān)信息 324
15.3 基本的互操作例子 325
15.3.1 初始化OpenGL操作 325
15.3.2 初始化OpenCL操作 326
15.3.3 創(chuàng)建數(shù)據(jù)對象 327
15.3.4 執(zhí)行內(nèi)核 327
15.3.5 渲染圖形 328
15.4 互操作和動畫 329
15.4.1 確定頂點數(shù)據(jù) 329
15.4.2 動畫和顯示 330
15.4.3 執(zhí)行內(nèi)核 331
15.5 小結(jié) 332
第16章 紋理和渲染緩存 334
16.1 圖像濾波 335
16.1.1 高斯模糊 337
16.1.2 圖像銳化 337
16.1.3 圖像浮雕化 338
16.2 用OpenCL來對紋理濾波 339
16.2.1 init_gl函數(shù) 339
16.2.2 init_cl函數(shù) 339
16.2.3 configure_shared_data函數(shù) 340
16.2.4 execute_kernel函數(shù) 341
16.2.5 display函數(shù) 342
16.3 小結(jié) 343
附錄A 安裝和使用軟件開發(fā)包 344
A.1 了解OpenCL SDK 344
A.1.1 檢查設(shè)備的兼容性 344
A.1.2 OpenCL頭文件和庫文件 345
A.2 Windows上的OpenCL 347
A.2.1 在Windows上安裝AMD顯卡驅(qū)動 347
A.2.2 用AMD顯卡來編譯Windows應(yīng)用程序 349
A.2.3 在Windows上安裝Nvidia的顯卡驅(qū)動 349
A.2.4 用Nvidia顯卡來編譯Windows應(yīng)用程序 351
A.3 Linux上的OpenCL 351
A.3.1 在Linux上安裝AMD的顯卡驅(qū)動 351
A.3.2 在Linux上安裝Nvidia顯卡驅(qū)動 352
A.3.3 在Linux上編譯OpenCL應(yīng)用程序 354
A.4 在Mac OS上安裝OpenCL 355
A.5 小結(jié) 356
附錄B 用OpenGL作實時渲染 357
B.1 安裝OpenGL 358
B.1.1 在Windows上安裝OpenGL 359
B.1.2 在Linux上安裝OpenGL 359
B.1.3 在Mac OS上安裝OpenGL 360
B.2 在主機上開發(fā)OpenGL應(yīng)用程序 360
B.2.1 將數(shù)據(jù)放到頂點緩存對象(VBO)之中 361
B.2.2 配置頂點屬性 363
B.2.3 編譯和部署著色器 365
B.2.4 啟動渲染過程 367
B.3 開發(fā)著色器程序 369
B.3.1 著色器編程簡介 370
B.3.2 頂點著色器 373
B.3.3 片段著色器 374
B.4 用GLUT來創(chuàng)建OpenGL窗口 375
B.4.1 配置和創(chuàng)建窗口 375
B.4.2 事件處理 376
B.4.3 顯示窗口 377
B.5 將OpenGL和GLUT結(jié)合 379
B.5.1 GLUT/OpenGL初始化 379
B.5.2 設(shè)置視窗(viewport) 381
B.5.3 渲染模型 381
B.6 添加紋理 382
B.6.1 在主機應(yīng)用程序中創(chuàng)建紋理 383
B.6.2 頂點著色器中的紋理映射 386
B.6.3 在片段著色器中使用紋理 387
B.7 小結(jié) 388
附錄C 面向Windows和OpenCL的最簡GNU 390
C.1 在Windows下安裝MinGW 390
C.1.1 獲取并運行圖形安裝工具 391
C.1.2 在MinGW下安裝新工具 393
C.2 編譯MinGW可執(zhí)行程序 394
C.2.1 用MinGW編譯HelloWorld! 394
C.2.2 GNU編譯器 395
C.3 Makefiles 396
C.3.1 GNU makefile的結(jié)構(gòu) 396
C.3.2 目標和偽目標 399
C.3.3 簡單的makefile例子 401
C.4 編譯OpenCL應(yīng)用程序 401
C.5 小結(jié) 403
附錄D Appendix D移動設(shè)備上的OpenCL 404
D.1 數(shù)值處理 404
D.2 圖像處理 405
D.3 小結(jié) 406

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號