当前位置:主页 > 书籍配套资源 > OpenCL配套资源
《OpenCL异构并行计算:原理、机制与优化实践》源代码

《OpenCL异构并行计算:原理、机制与优化实践》源代码

  • 更新:2022-04-01
  • 大小:27.17 MB
  • 类别:OpenCL
  • 作者:刘文志、陈轶、吴长江
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

全书一共分为4个部分:第2章介绍了OpenCL C语言的相关语法。第3章到第5章讲解了OpenCL运行时接口及其功能。第6章讲解了OpenCL更底层的工作机制,并结合当前主流的GPGPU做详细分析。第7章到第10章则是以四个实际常用算法来介绍如何用OpenCL做加速并行计算。

通过阅读本书,读者不仅能全面掌握OpenCL的常规用法,而且还能深入了解OpenCL的运作机制,如何将计算设备的性能发挥到极致。这样就可以充分利用硬件特性来调整算法,使得计算速度能达到峰值。

封面图

目录

  • 序一
  • 序二
  • 前言
  • 第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.1GPGPU的理念9
  • 1.3.2CUDA的崛起10
  • 1.3.3OpenCL横空出世10
  • 1.4异构并行计算的未来(百花齐放)11
  • 1.5本章小结13
  • 第2章OpenCL的基本介绍14
  • 2.1什么是OpenCL14
  • 2.2OpenCL 平台模型15
  • 2.3OpenCL 执行模型15
  • 2.3.1上下文16
  • 2.3.2命令队列17
  • 2.3.3内核在OpenCL设备上执行18
  • 2.4OpenCL存储器模型19
  • 2.4.1存储器区域19
  • 2.4.2存储器对象21
  • 2.4.3共享虚拟存储器21
  • 2.5OpenCL与OpenGL22
  • 2.6OpenCL与CUDA23
  • 2.7本章小结23
  • 第3章进入OpenCL的世界(矢量加法)25
  • 3.1构建示例25
  • 3.1.1Windows平台26
  • 3.1.2Linux平台28
  • 3.1.3OS X平台28
  • 3.1.4矢量加示例29
  • 3.2获得OpenCL平台和设备及其属性36
  • 3.2.1OpenCL平台36
  • 3.2.2OpenCL设备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.9OpenCL错误处理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.1Blocks语法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.1SVM缓冲操作192
  • 5.5.2SVM类型和特性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.2OpenCL 事件机制235
  • 6.2.1对OpenCL事件的标记和栅栏244
  • 6.2.2内核程序中的同步244
  • 6.2.3工作组内同步245
  • 6.3原子操作249
  • 6.3.1OpenCL 1.2中的原子操作249
  • 6.3.2OpenCL 2.0中的原子操作256
  • 6.4局部存储器与全局存储器间的异步拷贝268
  • 6.5工作组间同步272
  • 6.6本章小结280
  • 第7章OpenCL与OpenGL互操作281
  • 7.1从一个OpenGL上下文来创建OpenCL上下文282
  • 7.2OpenCL使用OpenGL共享的缓存对象283
  • 7.3OpenCL使用OpenGL纹理数据295
  • 7.4OpenCL共享OpenGL渲染缓存308
  • 7.5从一个OpenCL存储器对象查询OpenGL对象信息314
  • 7.6访问共享对象的OpenCL与OpenGL之间的同步315
  • 7.7本章小结320
  • 第8章OpenCL到主流GPU处理器的映射321
  • 8.1AMD家族GPU321
  • 8.1.1AMD Cayman架构GPU321
  • 8.1.2AMD GCN架构的GPU326
  • 8.2NVIDIA CUDA兼容的GPU333
  • 8.2.1NVIDIA GPU架构的执行模型334
  • 8.2.2NVIDIA GPU的全局存储器335
  • 8.2.3NVIDIA GPU的局部存储器336
  • 8.3ARM Mali GPU架构336
  • 8.3.1硬件架构337
  • 8.3.2存储器层次337
  • 8.3.3OpenCL映射337
  • 8.4本章小结338
  • 第9章OpenCL计算二维卷积339
  • 9.1测试平台信息340
  • 9.2AMD X86 CPU串行实现341
  • 9.2.1简单实现341
  • 9.2.2循环展开优化实现342
  • 9.2.3AVX指令集优化344
  • 9.2.4OpenMP345
  • 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
  • 附录AOpenCL Query实例372
  • 附录B其他主流异构并行计算编程环境简介376

资源下载

资源下载地址1:https://pan.baidu.com/s/1PwCwJ4f8z6E9K7NeMSbUKA

网友留言