opencl是第一個面向異構(gòu)系統(tǒng)通用目的并行編程的開放式、免費標(biāo)準(zhǔn),也是一個統(tǒng)一的編程環(huán)境,便于軟件開發(fā)人員為高性能計算服務(wù)器、桌面計算系統(tǒng)、手持設(shè)備編寫高效輕便的代碼。
本次小編將給大家?guī)?strong>opencl編程指南,它是由OpenCL核心設(shè)計人員親自執(zhí)筆,不僅全面而深刻地解讀了OpenCL規(guī)范和編程模型,而且通過大量案例和代碼演示了基于OpenCL編寫并行程序和實現(xiàn)各種并行算法的原理、方法、流程和最佳實踐,以及如何對OpenCL進行性能優(yōu)化,如何對硬件進行探測和調(diào)整。
目錄介紹
第一部分 OpenCL 1.1語言與API
第1章 OpenCL介紹2
1.1 什么是OpenCL,或者為什么需要這本書2
1.2 多核的未來:異構(gòu)平臺2
1.3 多核世界中的軟件4
1.4 OpenCL的概念基礎(chǔ)7
1.4.1 平臺模型7
1.4.2 執(zhí)行模型8
1.4.3 內(nèi)存模型13
1.4.4 編程模型15
1.5 OpenCL與圖形18
1.6 OpenCL的內(nèi)容19
1.6.1 平臺API19
1.6.2 運行時API20
1.6.3 內(nèi)核編程語言20
1.6.4 OpenCL小結(jié)22
1.7 嵌入式簡檔22
1.8 學(xué)習(xí)OpenCL23
第2章 HelloWorld:一個OpenCL例子24
2.1 構(gòu)建示例24
2.1.1 必備條件25
2.1.2 Mac OS X與Code::Blocks25
2.1.3 Microsoft Windows與Visual Studio26
2.1.4 Linux與Eclipse28
2.2 HelloWorld示例29
2.2.1 選擇OpenCL平臺并創(chuàng)建一個上下文31
2.2.2 選擇設(shè)備并創(chuàng)建命令隊列33
2.2.3 創(chuàng)建和構(gòu)建程序?qū)ο?4
2.2.4 創(chuàng)建內(nèi)核和內(nèi)存對象36
2.2.5 執(zhí)行內(nèi)核37
2.3 檢查OpenCL中的錯誤39
第3章 平臺、上下文和設(shè)備41
3.1 OpenCL平臺41
3.2 OpenCL設(shè)備44
3.3 OpenCL上下文53
第4章 OpenCL C編程64
4.1 使用OpenCL C編寫數(shù)據(jù)并行內(nèi)核64
4.2 標(biāo)量數(shù)據(jù)類型65
4.3 矢量數(shù)據(jù)類型67
4.3.1 矢量字面量68
4.3.2 矢量分量69
4.4 其他數(shù)據(jù)類型71
4.5 衍生類型71
4.6 隱式類型轉(zhuǎn)換72
4.7 顯式強制類型轉(zhuǎn)換76
4.8 顯式轉(zhuǎn)換77
4.9 將數(shù)據(jù)重新解釋為另一種類型80
4.10 矢量操作符82
4.10.1 算術(shù)操作符83
4.10.2 關(guān)系和相等操作符84
4.10.3 位操作符85
4.10.4 邏輯操作符85
4.10.5 條件操作符86
4.10.6 移位操作符86
4.10.7 一元操作符87
4.10.8 賦值操作符88
4.11 限定符89
4.11.1 函數(shù)限定符89
4.11.2 內(nèi)核屬性限定符90
4.11.3 地址空間限定符91
4.11.4 訪問限定符94
4.11.5 類型限定符95
4.12 關(guān)鍵字95
4.13 預(yù)處理器指令和宏96
4.13.1 pragma指令97
4.13.2 宏98
4.14 限制99
第5章 OpenCL C內(nèi)置函數(shù)101
5.1 工作項函數(shù)101
5.2 數(shù)學(xué)函數(shù)103
5.2.1 浮點pragma107
5.2.2 浮點常量108
5.2.3 相對誤差作為ulp108
5.3 整數(shù)函數(shù)111
5.4 公共函數(shù)113
5.5 幾何函數(shù)115
5.6 關(guān)系函數(shù)116
5.7 矢量數(shù)據(jù)加載和存儲函數(shù)119
5.8 同步函數(shù)124
5.9 異步復(fù)制和預(yù)取函數(shù)125
5.10 原子函數(shù)127
5.11 雜項矢量函數(shù)130
5.12 圖像讀、寫函數(shù)131
5.12.1 讀圖像132
5.12.2 采樣器134
5.12.3 確定邊界顏色137
5.12.4 寫圖像137
5.12.5 查詢圖像信息138
第6章 程序與內(nèi)核140
6.1 程序和內(nèi)核對象概述140
6.2 程序?qū)ο?40
6.2.1 創(chuàng)建和構(gòu)建程序141
6.2.2 程序構(gòu)建選項143
6.2.3 由二進制碼創(chuàng)建程序145
6.2.4 管理和查詢程序153
6.3 內(nèi)核對象153
6.3.1 創(chuàng)建內(nèi)核對象和設(shè)置內(nèi)核參數(shù)153
6.3.2 線程安全性156
6.3.3 管理和查詢內(nèi)核157
第7章 緩沖區(qū)和子緩沖區(qū)159
7.1 內(nèi)存對象、緩沖區(qū)和子緩沖區(qū)概述159
7.2 創(chuàng)建緩沖區(qū)和子緩沖區(qū)160
7.3 查詢緩沖區(qū)和子緩沖區(qū)166
7.4 讀、寫和復(fù)制緩沖區(qū)和子緩沖區(qū)167
7.5 映射緩沖區(qū)和子緩沖區(qū)180
第8章 圖像和采樣器183
8.1 圖像和采樣器對象183
8.2 創(chuàng)建圖像對象184
8.2.1 圖像格式187
8.2.2 查詢圖像支持189
8.3 創(chuàng)建采樣器對象189
8.4 處理圖像的OpenCL C函數(shù)192
8.5 傳輸圖像對象194
第9章 事件201
9.1 命令、隊列和事件概述201
9.2 事件和命令隊列202
9.3 事件對象206
9.4 宿主機上生成事件208
9.5 影響宿主機上執(zhí)行的事件209
9.6 使用事件完成評測212
9.7 內(nèi)核中的事件216
9.8 OpenCL外部的事件217
第10章 與OpenGL的互操作218
10.1 OpenCL/OpenGL共享概述218
10.2 查詢OpenGL共享擴展218
10.3 初始化OpenCL上下文實現(xiàn)OpenGL互操作220
10.4 從OpenGL緩沖區(qū)創(chuàng)建OpenCL緩沖區(qū)221
10.5 由OpenGL紋理創(chuàng)建OpenCL圖像對象225
10.6 查詢OpenGL對象的信息226
10.7 OpenGL和OpenCL之間的同步227
第11章 與Direct3D的互操作230
11.1 Direct3D/OpenCL共享概述230
11.2 初始化OpenCL上下文實現(xiàn)Direct3D互操作230
11.3 從Direct3D緩沖區(qū)和紋理創(chuàng)建OpenCL內(nèi)存對象233
11.4 OpenCL中獲取和釋放Direct3D對象236
11.5 OpenCL中處理Direct3D紋理237
11.6 OpenCL中處理D3D頂點數(shù)據(jù)240
第12章 C++包裝器API242
12.1 C++包裝器API概述242
12.2 C++包裝器API異常244
12.3 使用C++包裝器API的矢量相加示例246
2.3.1 選擇OpenCL平臺并創(chuàng)建一個上下文246
12.3.2 選擇一個設(shè)備并創(chuàng)建命令隊列246
12.3.3 創(chuàng)建和構(gòu)建程序?qū)ο?47
12.3.4 創(chuàng)建內(nèi)核和內(nèi)存對象248
12.3.5 執(zhí)行矢量相加內(nèi)核248
第13章 OpenCL嵌入式簡檔253
13.1 OpenCL簡檔概述253
13.2 64位整數(shù)254
13.3 圖像255
13.4 內(nèi)置原子函數(shù)256
13.5 強制最小單精度數(shù)浮點能力256
13.6 OpenCL C程序中確定設(shè)備支持的簡檔258
二部分 OpenCL 1.1案例研究
第14章 圖像直方圖260
14.1 計算圖像直方圖260
14.2 并行實現(xiàn)圖像直方圖261
14.3 對并行圖像直方圖的優(yōu)化266
14.4 每個通道使用半浮點或浮點值計算直方圖268
第15章 Sobel邊界檢測過濾器272
15.1 什么是Sobel邊界檢測過濾器272
15.2 實現(xiàn)Sobel過濾器作為OpenCL內(nèi)核272
第16章 并行實現(xiàn)Dijkstra單源最短路徑圖算法276
16.1 圖數(shù)據(jù)結(jié)構(gòu)276
16.2 內(nèi)核278
16.3 利用多個計算設(shè)備281
第17章 Bullet Physics SDK中的布模擬286
17.1 布模擬介紹286
17.2 模擬柔軟物體288
17.3 CPU上執(zhí)行模擬290
17.4 實現(xiàn)基本GPU執(zhí)行所需要的修改291
17.5 兩層分批296
17.6 SIMD計算和局部內(nèi)存優(yōu)化298
17.7 增加OpenGL互操作302
第18章 用快速傅里葉變換模擬海洋305
18.1 Ocean應(yīng)用程序概述305
18.2 Phillips頻譜生成308
18.3 OpenCL離散傅里葉變換311
18.3.1 確定2D分解311
18.3.2 使用局部內(nèi)存312
18.3.3 確定子變換大小313
18.3.4 確定工作組大小314
18.3.5 得到旋轉(zhuǎn)因子314
18.3.6 確定需要多少局部內(nèi)存314
18.3.7 避免局部內(nèi)存庫沖突315
18.3.8 使用圖像315
18.4 詳細分析FFT內(nèi)核315
18.5 詳細分析轉(zhuǎn)置內(nèi)核318
第19章 光流320
19.1 光流問題概述320
19.2 用硬件線性插值提供亞像素精度328
19.3 紋理緩存的應(yīng)用329
19.4 使用局部內(nèi)存329
19.5 提前退出和硬件調(diào)度331
19.6 利用OpenGL互操作實現(xiàn)高效可視化331
19.7 性能332
第20章 用PyOpenCL使用OpenCL333
20.1 PyOpenCL介紹333
20.2 運行PyImageFilter2D示例333
20.3 PyImageFilter2D代碼334
20.4 上下文和命令隊列創(chuàng)建337
20.5 加載到圖像對象338
20.6 創(chuàng)建和構(gòu)建程序339
20.7 設(shè)置內(nèi)核參數(shù)和執(zhí)行內(nèi)核340
20.8 讀取結(jié)果340
第21章 使用OpenCL完成矩陣乘法342
21.1 基本矩陣乘法算法342
1.2 直接轉(zhuǎn)換到OpenCL343
21.3 增加每個內(nèi)核的工作量347
21.4 優(yōu)化內(nèi)存移動:局部內(nèi)存350
21.5 性能結(jié)果和優(yōu)化原來的CPU代碼352
第22章 稀疏矩陣矢量乘法354
22.1 稀疏矩陣矢量乘法算法354
22.2 實現(xiàn)描述355
22.3 分塊和分組稀疏矩陣表示357
22.4 首部結(jié)構(gòu)359
22.5 分塊分組稀疏矩陣設(shè)計考慮359
22.6 可選的組信息360
22.7 測試的硬件設(shè)備和結(jié)果360
22.8 其他優(yōu)化領(lǐng)域372
附錄A OpenCL 1.1小結(jié)373
- 下載地址
發(fā)表評論
0條評論軟件排行榜
熱門推薦
- 有柿電腦版 v11.6.284.23M / 簡體中文
- 網(wǎng)易新聞電腦版 v113.197.68M / 簡體中文
- 數(shù)據(jù)挖掘?qū)д?官方版61.61M / 簡體中文
- 吉利博瑞用戶手冊 pdf高清版57.89M / 簡體中文
- 未公開的Oracle數(shù)據(jù)庫秘密 迪貝斯pdf掃描版34.69M / 簡體中文
- PHP語言精粹電子書 pdf掃描版25.72M / 簡體中文
- linux常用命令大全 chm版1.48M / 簡體中文
- 本草綱目 5.34M / 簡體中文
- Scala程序設(shè)計第二版 pdf高清完整版15.83M / 簡體中文
- C++黑客編程揭秘與防范第2版 冀云pdf掃描版54.58M / 簡體中文