第1章 并行编程入门 1
引言 1
OpenCL 1
本书目标 2
并行思维 2
并发编程模型和并行编程模型 6
线程和共享内存 9
消息传递通信 9
不同的并行粒度 10
数据共享和同步 11
本书结构 11
参考文献 12
扩展阅读和相关网站 13
第2章OpenCL简介 15
引言 15
OpenCL标准 15
OpenCL规范 15
kemel和OpenCL执行模型 16
平台和设备 19
主机-设备交互 19
执行环境 21
上下文 22
命令队列 22
事件 23
内存对象 23
flush命令和finish命令 26
新建一个OpenCL程序对象 26
OpenCL的kernel 27
内存模型 29
编写kemel 31
向量相加实例的完整代码 32
小结 39
参考文献 39
第3章OpenCL设备架构 41
引言 41
硬件权衡 41
性能随频率的提升及其限制 43
超标量执行 44
VLIW 44
SIMD和向量处理 47
硬件多线程 48
多核架构 51
集成:片上系统和APU 53
高速缓存层次和内存系统 54
架构设计空间 55
CPU设计 56
GPU体系结构 60
APU和类APU的设计 63
小结 64
参考文献 65
第4章OpenCL基本实例 67
引言 67
应用实例 67
简单的矩阵相乘 67
图像卷积实例 77
小结 85
第5章OpenCL的并发与执行模型 87
引言 87
kernel, work_item, workgroup和执行域 87
OpenCL同步:kernel, fence和barrier 90
队列与全局同步 94
OpenCL内存一致性 96
事件 96
命令barrier与marker 108
主机端内存模型 109
buffer对象 110
image刘象 113
设备端内存模型 115
设备端宽松的内存一致性 116
全局内存 117
本地内存 119
常量内存 121
私有内存 122
小结 122
第6章OpenCL在CPU/GPU平台上的实现 123
引言 123
OpenCL在AMD PHENOM Ⅱ X6上的实现 123
OpenCL在AMD RADEON HD6970 GPU上的实现 128
多线程和内存系统 130
基于clause的SIMD执行 132
资源分配 137
OpenCL的内存性能 139
OpenCL全局内存 139
本地内存——软件管理的cache 142
小结 148
参考文献 149
第7章OpenCL案例学习1:卷积 151
引言 151
计算卷积的kernel 151
选择合适的workgroup大小 151
将数据缓存到本地内存 154
执行卷积 160
小结 161
代码清单 162
主机端代码 162
kernel代码 166
参考文献 171
第8章OpenCL案例学习2:视频处理 173
引言 173
获得视频帧 173
CPU上的解码 174
在GPU上解码视频 175
在OpenCL中处理一个视频 179
在多个视频上处理多个不同effect 180
事件链 180
最终输出显示到屏幕 181
OpenCL/OpenGL协同工作能力 181
小结 184
第9章OpenCL案例学习3:直方图 185
引言 185
选择适量的work-group 185
选择最优的work-group大小 186
全局内存访存优化 187
使用原子操作计算局部直方图 189
本地内存访存优化 190
局部直方图的规约 192
全局规约 193
完整的kernel代码 193
性能和小结 196
第10章OpenCL案例学习4:混合粒子模拟 197
引言 197
计算概览 197
GPU实现 200
创建buffer 200
构造加速结构 201
计算碰撞 201
合成 202
CPU实现 202
负载均衡 203
性能和小结 204
生成均匀网格的kernel代码 205
粒子模拟的kernel代码 206
第11章OpenCL扩展 211
引言 211
扩展机制概览 211
设备拆分 214
双精度 225
参考文献 233
第12章OpenCL的性能剖析和调试 235
引言 235
基于事件的剖析 236
AMD APP Profiler 238
收集OpenCL程序轨迹 239
收集OpenCL GPU Kernel性能计数器 242
AMD APP KernelAnalyzer 243
演示AMD APP Profiler 245
启动AMD APP Profiler 245
使用应用程序的轨迹数据以发现性能瓶颈 245
使用GPU性能计数器发现kernel的性能瓶颈 247
调试OpenCL应用程序 248
gDEBugger概览 249
使用gDEBugger调试并行OpenCL应用程序 249
AMD printf扩展 251
小结 253
第13章WebCL 255
引言 255
框架设计 256
WebCL实验性实现 257
Firefox扩展 257
连接JavaScript和OpenCL 258
WebCL动手练习 260
Web照片编辑器 264
讨论 266
小结 268
参考文献 268
扩展阅读和相关网站 269
索引 271