《OPENCL 异构计算 第2版》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:BENEDICTR.GASTER,LEEHOWES,DAVIDR.KAELI著;张云泉,张先轶,贾海鹏等译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2013
  • ISBN:9787302333951
  • 页数:291 页
图书介绍:本书由AMD与美国东北大学的多位专业人士联合撰写,提供了OpenCL体验的第一手资料,详尽阐述了多核心处理器、GPU图形核心、APU融合处理器等多种设备的架构以及基础性并行算法等API,同时还提供了OpenCL在进行图像处理、Web插件、随机数生成、视频处理等各方面强大能力的详细实例。本书适合软件工程师,程序员,硬件工程师,本科高年级学生、研究生使用。

第1章 并行编程入门 1

引言 1

OpenCL 1

本书目标 2

并行思维 2

并发编程模型和并行编程模型 6

线程和共享内存 9

消息传递通信 9

不同粒度的并行 10

数据共享和同步 11

本书结构 11

参考文献 13

扩展阅读和相关网站 13

第2章 OpenCL简介 15

引言 15

OpenCL标准 15

OpenCL规范 15

kernel和OpenCL执行模型 16

平台和设备 19

主机-设备之间的交互 19

执行环境 22

上下文 22

命令队列 22

事件 23

内存对象 24

flush命令和finish命令 26

新建一个OpenCL程序对象 26

OpenCL的kernel 27

内存模型 29

写kemel 31

向量相加实例的完整代码 32

使用C++封装API实现向量相加 35

小结 38

参考文献 38

第3章 OpenCL设备架构 39

引言 39

硬件权衡 39

性能随频率的提升及其限制 41

超标量执行 42

VLIW 42

SIMD和向量处理 45

硬件多线程 46

多核架构 49

集成:片上系统和APU 51

高速缓存层次和内存系统 52

架构设计空间 53

CPU设计 55

GPU体系结构 58

APU和类APU的设计 60

小结 62

参考文献 63

第4章 OpenCL基本实例 65

引言 65

应用实例 65

简单的矩阵相乘 65

图像旋转实例 71

图像卷积实例 75

编译OpenCL主机端应用 82

小结 83

第5章 OpenCL的并发与执行模型 85

引言 85

kernel,workitem,workgroup和执行域 85

OpenCL同步:kernel,fence和barrier 88

队列与全局同步 92

OpenCL的内存一致性 94

事件 94

命令barrier与marker 106

主机端内存模型 107

buffer对象 108

image对象 111

设备端内存模型 113

设备端宽松的内存一致性 114

全局内存 115

本地内存 117

常量内存 119

私有内存 120

小结 120

第6章 OpenCL在CPU/GPU平台上的实现 121

引言 121

OpenCL在AMD BULLDOZER上的实现 121

OpenCL在AMD RADEON HD7970 GPU上的实现 126

多线程和内存系统 128

HD7970架构上的指令执行 130

VLIW执行的改进 134

资源分配 135

OpenCL的内存性能 136

OpenCL全局内存 136

本地内存——软件管理的缓存 140

小结 146

参考文献 146

第7章 数据管理 147

引言 147

内存管理 147

独立环境中(使用独立GPU)的数据传输 149

优化 149

缓存区 150

共享内存环境中的数据存储 151

本地内存 153

缓存的系统内存 154

非缓存系统内存 154

应用实例——workgroup归约 155

使用独立GPU设备 156

使用APU 158

参考文献 159

第8章 OpenCL案例学习:卷积 161

引言 161

计算卷积的kemel 161

选择合适的workgroup大小 161

将数据缓存到本地内存 164

执行卷积 170

小结 171

代码清单 172

主机端代码 172

kernel代码 176

参考文献 181

第9章 OpenCL案例学习:直方图 183

引言 183

选择适量的workgroup 183

选择最优的workgroup大小 184

全局内存访存优化 185

使用原子操作计算局部直方图 187

本地内存访存优化 188

局部直方图的归约 190

全局归约 191

完整的kernel代码 191

性能和小结 194

第10章 OpenCL案例学习:混合粒子模拟 195

引言 195

计算概览 196

GPU实现 198

创建buffer 198

构造加速结构 199

计算碰撞 199

合成 200

CPU实现 200

负载均衡 201

性能和小结 202

生成均匀网格的kernel代码 203

粒子模拟的kernel代码 204

第11章 OpenCL扩展 209

引言 209

扩展机制概览 209

设备拆分 212

双精度 223

参考文献 231

第12章 在其他语言中使用OpenCL 233

引言 233

C和C++之外 233

Haskell Opencl 235

模块结构 237

环境 237

引用计数 237

平台和设备 238

运行环境 239

小结 241

参考文献 242

第13章 OpenCL的性能剖析和调试 243

引言 243

基于事件的剖析 244

AMD APP Profiler 246

收集OpenCL程序轨迹 247

收集OpenCL GPU Kernel性能计数器 250

AMD APP KemelAnalyzer 251

演示AMD APP Profiler 253

启动AMD APP Profiler 253

使用应用程序的轨迹数据以发现性能瓶颈 253

使用GPU性能计数器发现kernel的性能瓶颈 255

调试OpenCL应用程序 256

gDEBugger概览 257

使用gDEBugger调试并行OpenCL应用程序 257

AMD printf扩展 259

小结 261

第14章 某图像分析应用的性能调优 263

引言 263

算法描述 264

CPU多线程实现的OpenCL移植 266

热点分析 267

kernel开发及静态分析 269

性能优化 270

Kernel Occupancy 271

workgroup大小的影响 275

向量寄存器(VGPR)和LDS的影响 281

能耗和性能分析 283

小结 284

参考文献 284

索引 285