首 頁
手機版

opencl編程指南 PDF高清版

opencl是第一個面向異構系統(tǒng)通用目的并行編程的開放式、免費標準,也是一個統(tǒng)一的編程環(huán)境,便于軟件開發(fā)人員為高性能計算服務器、桌面計算系統(tǒng)、手持設備編寫高效輕便的代碼。

本次小編將給大家?guī)?strong>opencl編程指南,它是由OpenCL核心設計人員親自執(zhí)筆,不僅全面而深刻地解讀了OpenCL規(guī)范和編程模型,而且通過大量案例和代碼演示了基于OpenCL編寫并行程序和實現(xiàn)各種并行算法的原理、方法、流程和最佳實踐,以及如何對OpenCL進行性能優(yōu)化,如何對硬件進行探測和調(diào)整。

opencl編程指南

目錄介紹

第一部分 OpenCL 1.1語言與API

第1章 OpenCL介紹2

1.1 什么是OpenCL,或者為什么需要這本書2

1.2 多核的未來:異構平臺2

1.3 多核世界中的軟件4

1.4 OpenCL的概念基礎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小結22

1.7 嵌入式簡檔22

1.8 學習OpenCL23

第2章 HelloWorld:一個OpenCL例子24

2.1 構建示例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 選擇設備并創(chuàng)建命令隊列33

2.2.3 創(chuàng)建和構建程序對象34

2.2.4 創(chuàng)建內(nèi)核和內(nèi)存對象36

2.2.5 執(zhí)行內(nèi)核37

2.3 檢查OpenCL中的錯誤39

第3章 平臺、上下文和設備41

3.1 OpenCL平臺41

3.2 OpenCL設備44

3.3 OpenCL上下文53

第4章 OpenCL C編程64

4.1 使用OpenCL C編寫數(shù)據(jù)并行內(nèi)核64

4.2 標量數(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 隱式類型轉換72

4.7 顯式強制類型轉換76

4.8 顯式轉換77

4.9 將數(shù)據(jù)重新解釋為另一種類型80

4.10 矢量操作符82

4.10.1 算術操作符83

4.10.2 關系和相等操作符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 關鍵字95

4.13 預處理器指令和宏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ù)學函數(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 關系函數(shù)116

5.7 矢量數(shù)據(jù)加載和存儲函數(shù)119

5.8 同步函數(shù)124

5.9 異步復制和預取函數(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 程序對象140

6.2.1 創(chuàng)建和構建程序141

6.2.2 程序構建選項143

6.2.3 由二進制碼創(chuàng)建程序145

6.2.4 管理和查詢程序153

6.3 內(nèi)核對象153

6.3.1 創(chuàng)建內(nèi)核對象和設置內(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 讀、寫和復制緩沖區(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 選擇一個設備并創(chuàng)建命令隊列246

12.3.3 創(chuàng)建和構建程序對象247

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程序中確定設備支持的簡檔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ù)結構276

16.2 內(nèi)核278

16.3 利用多個計算設備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應用程序概述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 得到旋轉因子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 詳細分析轉置內(nèi)核318

第19章 光流320

19.1 光流問題概述320

19.2 用硬件線性插值提供亞像素精度328

19.3 紋理緩存的應用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)建和構建程序339

20.7 設置內(nèi)核參數(shù)和執(zhí)行內(nèi)核340

20.8 讀取結果340

第21章 使用OpenCL完成矩陣乘法342

21.1 基本矩陣乘法算法342

1.2 直接轉換到OpenCL343

21.3 增加每個內(nèi)核的工作量347

21.4 優(yōu)化內(nèi)存移動:局部內(nèi)存350

21.5 性能結果和優(yōu)化原來的CPU代碼352

第22章 稀疏矩陣矢量乘法354

22.1 稀疏矩陣矢量乘法算法354

22.2 實現(xiàn)描述355

22.3 分塊和分組稀疏矩陣表示357

22.4 首部結構359

22.5 分塊分組稀疏矩陣設計考慮359

22.6 可選的組信息360

22.7 測試的硬件設備和結果360

22.8 其他優(yōu)化領域372

附錄A OpenCL 1.1小結373

收起介紹展開介紹
  • 下載地址
opencl編程指南 PDF高清版

有問題? 點此報錯

發(fā)表評論

0條評論