标题：OpenCL异构计算
基本信息
原书名：Heterogeneous Computing with OpenCL  [1]
原出版社： Elsevier 
作者： Benedict R. Gaster Lee Howes David R. Kaeli Perhaad Mistry Dana Schaa [作译者介绍] 
译者： 张云泉 张先轶 龙国平 姚继锋 
出版社：清华大学出版社 
上架时间：2012-5-17
出版日期：2012 年6月
开本：16开
页码：271
版次：1-1
所属分类： 计算机 > 程序设计 > OpenCL
作者简介
Benedict R. Gaster是一位致力于研究下一代异构处理器编程模型的软件架构师，具体研究新一代处理器(同时包含CPU和GPU加速器)进行并行编程的高层次抽象。他对OpenCL的设计做出了广泛的贡献，并在Khronos Group(科纳斯组织)的开放标准联盟中代表AMD。他因为类型系统的可扩展标记和变量的研究成果而获得计算机科学博士学位。
Lee Howes已经在AMD工作两年多，目前的研究集中于未来异构计算的编程模型。他的研究举在于如何以声明方式表示迭代域到数据的映射，用通俗易懂的方式向开发人员说明复杂的架构概念和优化技术，这两者都通过编程模型的改进和教育来实现。他因为这一领域的研究成果而获得伦敦帝国学院计算机科学的博士学位。
David Kaeli获得罗格斯大学电气工程专业的学士和博士学位，雪城大学计算机工程专业的硕士学位。他是东北大学工程学院本科课程的副院长兼欧洲经委会学院的全职教授，东北大学计算机系统结构研究实验室主管(NUCAR负责人)。在1993年加入东北大学之前，他曾在IBM工作12年。在这12年当中，后7年在T. J. Watson研究中心(位于纽约市Yorktown Heights)工作。作为合著者发表了200多篇经过严格评审的文献。他的研究范围很广，包括微架构到后端编译器和软件工程。他指导了GPU计算领域方面的很多研究项目。目前，他担任计算机系统结构IEEE技术委员会主席。他是IEEE会士和ACM成员。
Perhaad Mistry目前在东北大学攻读博士学位。他获得孟买大学电子工程专业学士学位和东北大学计算机工程专业硕士学位。他目前是东北大学计算机系统结构实验室的一员，导师是David Kaeli。他做过很多并行计算项目。他曾为GPGPU平台的物理模拟设计了可扩展数据结构，还针对异构设备实施了医疗重建算法。目前的研究重点在于异构计算分析工具的设计。他正在研究采用诸如OpenCL之类的标准是否能够用于构建出合适的工具来简化当下跨大量异构设备运行的并行编程和性能分析。
Dana Schaa拥有加州理工大学圣路易奥比斯波分校计算机工程学士和东北大学电气和计算机工程的硕士学位，他目前也在东北大学攻读博士学位。他的研究兴趣包括并行编程模型和抽象，特别针对GPU架构。他已经开发了基于GPU实现的几个医疗成像研究项目，从实时可视化到分布式异构环境的图像重建。他在2010年娶了一位出色的妻子Jenny，他们与他们可爱的猫一起生活在波士顿。 [2]
内容简介
计算机书籍
《opencl异构计算》提供opencl的第一手资料，详尽阐述了如何在异构环境下进行并行编程。第1章首先介绍如何在并行系统下编程，定义异构编程需要理解的概念。第2～4章循序渐进地介绍opencl的基本架构。第5章和第6章对这些概念加以扩展，旨在帮助读者更好地理解。第7~10章提供4个更复杂的案例学习，让读者理解到opencl具有广泛的应用。第11~13章锁定高级主题展开讨论。
本书可帮助学生和研究人员更好地理解通用异构计算(尤其是opencl提供的解决方案)，尤其是适合不同经验水平的学生，可以作为opencl课程的教材或其他课程的参考，例如并行编程课程和高级课程。 
作译者回到顶部↑本书提供作译者介绍
Benedict R. Gaster是一位致力于研究下一代异构处理器编程模型的软件架构师，具体研究新一代处理器(同时包含CPU和GPU加速器)进行并行编程的高层次抽象。他对OpenCL的设计做出了广泛的贡献，并在Khronos Group(科纳斯组织)的开放标准联盟中代表AMD。他因为类型系统的可扩展标记和变量的研究成果而获得计算机科学博士学位。
Lee Howes已经在AMD工作两年多，目前的研究集中于未来异构计算的编程模型。他的研究举在于如何以声明方式表示迭代域到数据的映射，用通俗易懂的方式向开发人员说明复
目录
《opencl异构计算》 
第1章 并行编程入门 1 
引言 1 
opencl 1 
本书目标 2 
并行思维 2 
并发编程模型和并行编程模型 6 
线程和共享内存 9 
消息传递通信 9 
不同的并行粒度 10 
数据共享和同步 11 
本书结构 11 
参考文献 12 
扩展阅读和相关网站 13 
第2章 opencl简介 15 
引言 15 
opencl标准 15 
opencl 规范 15 
kernel和opencl执行模型 16 
平台和设备 19 
.主机-设备交互 19 
执行环境 21 
上下文 22 
命令队列 22 
事件 23 
内存对象 23 
flush命令和finish命令 26 
新建一个opencl程序对象 26 
opencl的kernel 27 
内存模型 29 
编写kernel 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 ii 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