展开全部

主编推荐语

详细描述了OpenCL的各种概念和特性,通过由浅入深的一系列实际应用案例,帮助读者掌握这个令人激动的新编程模型。

内容简介

本书一共分为4个部分:第1章介绍并行计算的沿革与现状。第2章介绍了OpenCL C语言的相关语法。第3章到第5章讲解了OpenCL运行时接口及其功能。第6章讲解了OpenCL更底层的工作机制,并结合当前主流的GPGPU做详细分析。第7章到第11章则是以四个实际常用算法来介绍如何用OpenCL做加速并行计算。通过阅读本书,读者不仅能全面掌握OpenCL的常规用法,而且还能深入了解OpenCL的运作机制,如何将计算设备的性能发挥到极致。这样就可以充分利用硬件特性来调整算法,使得计算速度能达到峰值。

目录

  • 版权信息
  • 序一
  • 序二
  • 前言
  • 第1章 异构并行计算的过去、现状和未来
  • 1.1 单核标量处理器的困境
  • 1.1.1 单核标量处理器如何提高性能
  • 1.1.2 为什么单核标量处理器性能到达瓶颈
  • 1.2 多核并行计算与向量化的出现
  • 1.2.1 为什么会有多核
  • 1.2.2 为什么会有向量化
  • 1.2.3 如何利用多核和向量化的能力
  • 1.2.4 多核和向量化的难点
  • 1.3 异构并行计算的崛起
  • 1.3.1 GPGPU的理念
  • 1.3.2 CUDA的崛起
  • 1.3.3 OpenCL横空出世
  • 1.4 异构并行计算的未来(百花齐放)
  • 1.5 本章小结
  • 第2章 OpenCL的基本介绍
  • 2.1 什么是OpenCL
  • 2.2 OpenCL平台模型
  • 2.3 OpenCL执行模型
  • 2.3.1 上下文
  • 2.3.2 命令队列
  • 2.3.3 内核在OpenCL设备上执行
  • 2.4 OpenCL存储器模型
  • 2.4.1 存储器区域
  • 2.4.2 存储器对象
  • 2.4.3 共享虚拟存储器
  • 2.5 OpenCL与OpenGL
  • 2.6 OpenCL与CUDA
  • 2.7 本章小结
  • 第3章 进入OpenCL的世界(矢量加法)
  • 3.1 构建示例
  • 3.1.1 Windows平台
  • 3.1.2 Linux平台
  • 3.1.3 OS X平台
  • 3.1.4 矢量加示例
  • 3.2 获得OpenCL平台和设备及其属性
  • 3.2.1 OpenCL平台
  • 3.2.2 OpenCL设备
  • 3.3 创建上下文和命令队列
  • 3.3.1 创建OpenCL上下文
  • 3.3.2 创建命令队列
  • 3.4 创建程序对象和内核对象
  • 3.5 程序对象
  • 3.5.1 创建程序对象
  • 3.5.2 构建程序对象
  • 3.5.3 查询和管理程序对象
  • 3.6 内核对象
  • 3.6.1 创建内核对象
  • 3.6.2 设置内核参数
  • 3.6.3 查询和管理内核对象
  • 3.7 执行内核
  • 3.8 编写内核代码
  • 3.9 OpenCL错误处理
  • 3.10 本章小结
  • 第4章 OpenCL C语言
  • 4.1 修饰符
  • 4.1.1 地址空间修饰符
  • 4.1.2 函数修饰符
  • 4.1.3 对象访问修饰符
  • 4.2 标量数据类型
  • 4.3 矢量数据类型
  • 4.3.1 为什么要有矢量数据类型
  • 4.3.2 矢量数据的使用
  • 4.4 运算符
  • 4.5 工作项布局函数
  • 4.5.1 维度和工作项
  • 4.5.2 工作组
  • 4.6 数据拷贝操作
  • 4.6.1 矢量数据拷贝
  • 4.6.2 异步拷贝和预取
  • 4.7 浮点函数
  • 4.7.1 数学函数
  • 4.7.2 公共函数
  • 4.7.3 几何函数
  • 4.8 整数函数
  • 4.9 关系函数
  • 4.10 杂项矢量函数
  • 4.11 同步函数
  • 4.12 原子函数
  • 4.13 图像读/写函数
  • 4.13.1 内建图像读函数
  • 4.13.2 内建无采样器图像读函数
  • 4.13.3 内建图像写函数
  • 4.13.4 内建图像查询函数
  • 4.14 工作组函数
  • 4.15 管道函数
  • 4.15.1 内建管道读/写函数
  • 4.15.2 内建工作组管道读/写函数
  • 4.15.3 内建管道查询函数
  • 4.16 设备队列
  • 4.16.1 Blocks语法
  • 4.16.2 设备队列相关函数
  • 4.16.3 子内核存储器可见性
  • 4.16.4 设备队列的使用示例
  • 4.17 本章小结
  • 第5章 OpenCL存储器对象
  • 5.1 缓冲区
  • 5.1.1 分配缓冲区对象
  • 5.1.2 创建子缓冲区对象
  • 5.2 图像对象和采样器对象
  • 5.2.1 图像对象
  • 5.2.2 采样器对象
  • 5.2.3 图像旋转示例
  • 5.3 管道
  • 5.3.1 创建管道对象
  • 5.3.2 管道对象查询
  • 5.4 存储器对象数据传输
  • 5.4.1 主机与设备间数据传输
  • 5.4.2 存储器对象数据填充
  • 5.4.3 存储器对象间数据传输
  • 5.4.4 存储器对象映射
  • 5.5 共享虚拟存储器
  • 5.5.1 SVM缓冲操作
  • 5.5.2 SVM类型和特性
  • 5.5.3 相关示例
  • 5.6 存储器一致性模型
  • 5.6.1 存储器次序规则
  • 5.6.2 原子操作的存储器次序规则
  • 5.6.3 栅栏操作的存储器次序规则
  • 5.6.4 工作组函数的存储器次序规则
  • 5.6.5 主机端与设备端命令的存储器次序规则
  • 5.6.6 关于存储器次序在实际OpenCL计算设备中的实现
  • 5.7 本章小结
  • 第6章 OpenCL同步及事件机制
  • 6.1 主机端的OpenCL同步
  • 6.2 OpenCL事件机制
  • 6.2.1 对OpenCL事件的标记和栅栏
  • 6.2.2 内核程序中的同步
  • 6.2.3 工作组内同步
  • 6.3 原子操作
  • 6.3.1 OpenCL 1.2中的原子操作
  • 6.3.2 OpenCL 2.0中的原子操作
  • 6.4 局部存储器与全局存储器间的异步拷贝
  • 6.5 工作组间同步
  • 6.6 本章小结
  • 第7章 OpenCL与OpenGL互操作
  • 7.1 从一个OpenGL上下文来创建OpenCL上下文
  • 7.2 OpenCL使用OpenGL共享的缓存对象
  • 7.3 OpenCL使用OpenGL纹理数据
  • 7.4 OpenCL共享OpenGL渲染缓存
  • 7.5 从一个OpenCL存储器对象查询OpenGL对象信息
  • 7.6 访问共享对象的OpenCL与OpenGL之间的同步
  • 7.7 本章小结
  • 第8章 OpenCL到主流GPU处理器的映射
  • 8.1 AMD家族GPU
  • 8.1.1 AMD Cayman架构GPU
  • 8.1.2 AMD GCN架构的GPU
  • 8.2 NVIDIA CUDA兼容的GPU
  • 8.2.1 NVIDIA GPU架构的执行模型
  • 8.2.2 NVIDIA GPU的全局存储器
  • 8.2.3 NVIDIA GPU的局部存储器
  • 8.3 ARM Mali GPU架构
  • 8.3.1 硬件架构
  • 8.3.2 存储器层次
  • 8.3.3 OpenCL映射
  • 8.4 本章小结
  • 第9章 OpenCL计算二维卷积
  • 9.1 测试平台信息
  • 9.2 AMD X86 CPU串行实现
  • 9.2.1 简单实现
  • 9.2.2 循环展开优化实现
  • 9.2.3 AVX指令集优化
  • 9.2.4 OpenMP
  • 9.3 简单OpenCL实现
  • 9.4 使用常量存储器优化
  • 9.5 使用局部存储器优化
  • 9.6 一个工作项同时计算多个输出
  • 9.7 本章小结
  • 第10章 OpenCL计算矩阵乘法
  • 10.1 串行实现
  • 10.1.1 初次实现
  • 10.1.2 缓存友好的实现
  • 10.1.3 使用AVX指令集实现
  • 10.2 简单OpenCL实现
  • 10.3 使用局部存储器优化
  • 10.4 使用向量加载指令
  • 10.5 一个工作项同时计算多个输出
  • 10.6 优化流水线性能
  • 10.7 本章小结
  • 附录A OpenCL Query实例
  • 附录B 其他主流异构并行计算编程环境简介
展开全部

评分及书评

评分不足
1个评分

出版方

机械工业出版社有限公司

机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。