科技
类型
可以朗读
语音朗读
386千字
字数
2015-11-01
发行日期
展开全部
主编推荐语
详细描述了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 其他主流异构并行计算编程环境简介
展开全部
出版方
机械工业出版社有限公司
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。