OpenCL异构并行计算:原理、机制与优化实践

副标题:无

作   者:刘文志,陈轶,吴长江 著

分类号:

ISBN:9787111519348

微信扫一扫,移动浏览光盘

简介

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

目录

目  录 Contents
序一
序二
前言
1章 异构并行计算的过去、现状和未来 1
1.1
 单核标量处理器的困境 3
1.1.1
 单核标量处理器如何提高性能4
1.1.2
 为什么单核标量处理器性能到达瓶颈6
1.2
 多核并行计算与向量化的出现7
1.2.1
 为什么会有多核 7
1.2.2
 为什么会有向量化 7
1.2.3
 如何利用多核和向量化的能力8
1.2.4
 多核和向量化的难点8
1.3
 异构并行计算的崛起 9
1.3.1
 GPGPU的理念 9
1.3.2
 CUDA的崛起 10
1.3.3
 OpenCL横空出世 10
1.4
 异构并行计算的未来(百花齐放)11
1.5
 本章小结 13
2章 OpenCL的基本介绍 14
2.1
 什么是OpenCL 14
2.2
 OpenCL 平台模型 15
2.3
 OpenCL 执行模型 15
2.3.1
 上下文 16
2.3.2
 命令队列 17
2.3.3
 内核在OpenCL设备上执行 18
2.4
 OpenCL存储器模型 19
2.4.1
 存储器区域 19
2.4.2
 存储器对象 21
2.4.3
 共享虚拟存储器 21
2.5
 OpenCLOpenGL 22
2.6
 OpenCLCUDA 23
2.7
 本章小结 23
3章 进入OpenCL的世界(矢量加法) 25
3.1
 构建示例 25
3.1.1
 Windows平台 26
3.1.2
 Linux平台 28
3.1.3
 OS X平台 28
3.1.4
 矢量加示例 29
3.2
 获得OpenCL平台和设备及其属性 36
3.2.1
 OpenCL平台 36
3.2.2
 OpenCL设备 40
3.3
 创建上下文和命令队列51
3.3.1
 创建OpenCL上下文 51
3.3.2
 创建命令队列 56
3.4
 创建程序对象和内核对象58
3.5
 程序对象 59
3.5.1
 创建程序对象 59
3.5.2
 构建程序对象 61
3.5.3
 查询和管理程序对象66
3.6
 内核对象 69
3.6.1
 创建内核对象 69
3.6.2
 设置内核参数 70
3.6.3
 查询和管理内核对象73
3.7
 执行内核 75
3.8
 编写内核代码 76
3.9
 OpenCL错误处理 78
3.10
 本章小结 81
4章 OpenCL C语言 82
4.1
 修饰符 82
4.1.1
 地址空间修饰符 82
4.1.2
 函数修饰符 86
4.1.3
 对象访问修饰符 88
4.2
 标量数据类型 88
4.3
 矢量数据类型 91
4.3.1
 为什么要有矢量数据类型92
4.3.2
 矢量数据的使用 93
4.4
 运算符 96
4.5
 工作项布局函数 99
4.5.1
 维度和工作项 100
4.5.2
 工作组 101
4.6
 数据拷贝操作 102
4.6.1
 矢量数据拷贝 102
4.6.2
 异步拷贝和预取104
4.7
 浮点函数 105
4.7.1
 数学函数 106
4.7.2
 公共函数 109
4.7.3
 几何函数 110
4.8
 整数函数 110
4.9
 关系函数 112
4.10
 杂项矢量函数 115
4.11
 同步函数 117
4.12
 原子函数 119
4.13
 图像读/写函数 122
4.13.1
 内建图像读函数122
4.13.2
 内建无采样器图像读 函数126
4.13.3
 内建图像写函数129
4.13.4
 内建图像查询函数131
4.14
 工作组函数 132
4.15
 管道函数 134
4.15.1
 内建管道读/写函数 135
4.15.2
 内建工作组管道读/写函数 139
4.15.3
 内建管道查询函数140
4.16
 设备队列 140
4.16.1
 Blocks语法 142
4.16.2
 设备队列相关函数143
4.16.3
 子内核存储器可见性147
4.16.4
 设备队列的使用示例148
4.17
 本章小结 153
5章 OpenCL存储器对象 154
5.1
 缓冲区 154
5.1.1
 分配缓冲区对象154
5.1.2
 创建子缓冲区对象157
5.2
 图像对象和采样器对象160
5.2.1
 图像对象 160
5.2.2
 采样器对象 166
5.2.3
 图像旋转示例 171
5.3
 管道 175
5.3.1
 创建管道对象 175
5.3.2
 管道对象查询 175
5.4
 存储器对象数据传输176
5.4.1
 主机与设备间数据传输176
5.4.2
 存储器对象数据填充181
5.4.3
 存储器对象间数据传输184
5.4.4
 存储器对象映射187
5.5
 共享虚拟存储器 192
5.5.1
 SVM缓冲操作 192
5.5.2
 SVM类型和特性 197
5.5.3
 相关示例 204
5.6
 存储器一致性模型 208
5.6.1
 存储器次序规则214
5.6.2
 原子操作的存储器次序规则217
5.6.3
 栅栏操作的存储器次序规则219
5.6.4
 工作组函数的存储器次序规则220
5.6.5
 主机端与设备端命令的存储器次序规则221
5.6.6
 关于存储器次序在实际OpenCL计算设备中的实现 223
5.7
 本章小结 230
6章 OpenCL同步及事件机制 231
6.1
 主机端的OpenCL同步 232
6.2
 OpenCL 事件机制 235
6.2.1
 对OpenCL事件的标记和栅栏 244
6.2.2
 内核程序中的同步244
6.2.3
 工作组内同步 245
6.3
 原子操作 249
6.3.1
 OpenCL 1.2中的原子操作 249
6.3.2
 OpenCL 2.0中的原子操作 256
6.4
 局部存储器与全局存储器间的异步拷贝268
6.5
 工作组间同步 272
6.6
 本章小结 280
7章 OpenCLOpenGL互操作281
7.1
 从一个OpenGL上下文来创建OpenCL上下文 282
7.2
 OpenCL使用OpenGL共享的缓存对象 283
7.3
 OpenCL使用OpenGL纹理数据 295
7.4
 OpenCL共享OpenGL渲染缓存 308
7.5
 从一个OpenCL存储器对象查询OpenGL对象信息 314
7.6
 访问共享对象的OpenCLOpenGL之间的同步 315
7.7
 本章小结 320
8章 OpenCL到主流GPU处理器的映射321
8.1
 AMD家族GPU 321
8.1.1
 AMD Cayman架构GPU 321
8.1.2
 AMD GCN架构的GPU 326
8.2
 NVIDIA CUDA兼容的GPU 333
8.2.1
 NVIDIA GPU架构的执行模型 334
8.2.2
 NVIDIA GPU的全局存储器 335
8.2.3
 NVIDIA GPU的局部存储器 336
8.3
 ARM Mali GPU架构 336
8.3.1
 硬件架构 337
8.3.2
 存储器层次 337
8.3.3
 OpenCL映射 337
8.4
 本章小结 338
9章 OpenCL计算二维卷积 339
9.1
 测试平台信息 340
9.2
 AMD X86 CPU串行实现 341
9.2.1
 简单实现 341
9.2.2
 循环展开优化实现342
9.2.3
 AVX指令集优化 344
9.2.4
 OpenMP 345
9.3
 简单OpenCL实现 347
9.4
 使用常量存储器优化349
9.5
 使用局部存储器优化351
9.6
 一个工作项同时计算多个输出353
9.7
 本章小结 355
10章 OpenCL计算矩阵乘法 356
10.1
 串行实现 357
10.1.1
 初次实现 357
10.1.2
 缓存友好的实现357
10.1.3
 使用AVX指令集实现 358
10.2
 简单OpenCL实现 359
10.3
 使用局部存储器优化361
10.4
 使用向量加载指令363
10.5
 一个工作项同时计算多个输出365
10.6
 优化流水线性能 368
10.7
 本章小结 371
附录A OpenCL Query实例 372
附录B 其他主流异构并行计算编程环境简介 376

<

已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

OpenCL异构并行计算:原理、机制与优化实践
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon