目录目录 序言第1章 简介异构计算 1.1 关于异构计算1.2 本书目的1.3 并行思想1.4 并发和并行编程模型1.5 线程和共享内存1.6 消息通讯机制1.7 并行性的粒度1.8 使用OpenCL进行异构计算1.9 本书结构 第2章 设备架构 2.1 介绍2.2 硬件的权衡2.3 架构设计空间2.4 本章总结 第3章 介绍OpenCL 3.1 简介OpenCL3.2 OpenCL平台模型3.3 OpenCL执行模型3.4 内核和OpenCL编程模型3.5 OpenCL内存模型3.6 OpenCL运行时(例子)3.7 OpenCL C++ Wapper向量加法3.8 CUDA编程者使用OpenCL的注意事项 第4章 OpenCL案例 4.1 OpenCL实例4.2 直方图4.3 图像旋转4.4 图像卷积4.5 生产者-消费者4.6 基本功能函数4.7 本章总结 第5章 OpenCL运行时和并发模型 5.1 命令和排队模型5.2 多命令队列5.3 内核执行域:工作项、工作组和NDRange5.4 原生和内置内核5.5 设备端排队5.6 本章总结 第6章 OpenCL主机端内存模型 6.1 内存对象6.2 内存管理6.3 共享虚拟内存6.4 本章总结 第7章 OpenCL设备端内存模型 7.1 同步和交互7.2 全局内存7.3 常量内存7.4 局部内存7.5 私有内存7.6 统一地址空间7.7 内存序7.8 本章总结 第8章 异构系统下解析OpenCL 8.1 AMD FX-8350 CPU8.2 AMD RADEON R9 290X CPU8.3 OpenCL内存性能的考量8.4 本章总结 第9章 案例分析:图像聚类 9.1 图像聚类简介9.2 直方图的特性——CPU实现9.3 OpenCL实现9.4 性能分析9.5 本章总结 第10章 OpenCL的分析和调试 10.1 设置本章的原因10.2 使用事件分析OpenCL代码10.3 AMD CodeXL10.4 如何使用AMD CodeXL10.5 使用CodeXL分析内核10.6 使用CodeXL调试OpenCL内核10.7 使用printf调试10.8 本章总结 第11章 高级语言映射到OpenCL2.0 —— 从编译器作者的角度 11.1 简要介绍现状11.2 简单介绍C++ AMP11.3 编译器的目标 —— OpenCL 2.011.4 C++ AMP与OpenCL对比11.5 C++ AMP的编译流11.6 编译之后的C++ AMP代码11.7 OpenCL 2.0提出共享虚拟内存的原因11.8 编译器怎样支持C++ AMP的线程块划分11.9 地址空间的推断11.10 优化数据搬运11.11 完整例子:二项式11.12 初步结果11.13 本章总结 第12章 WebCL:使用OpenCL加速Web应用 12.1 介绍WebCL12.2 如何使用WebCL编程12.3 同步机制12.4 WebCL的交互性12.5 应用实例12.6 增强安全性12.7 服务器端使用WebCL12.8 WebCL的状态和特性 第13章 其他高级语言中OpenCL的使用 13.1 本章简介13.2 越过C和C++13.3 Haskell中使用OpenCL13.4 本章总结