OpenCL异构并行计算:原理、机制与优化实践课件_第1页
OpenCL异构并行计算:原理、机制与优化实践课件_第2页
OpenCL异构并行计算:原理、机制与优化实践课件_第3页
OpenCL异构并行计算:原理、机制与优化实践课件_第4页
OpenCL异构并行计算:原理、机制与优化实践课件_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、OpenCL异构并行计算:原理、机制与优化实践OpenCL异构并行计算:原理、机制与优化实践序一01序一01序一 序一 序二02序二02序二 序二 1 异构并行计算的过去、现状和未来031 异构并行计算的过去、现状和未来031 异构并行计算的过去、现状和未来1.1 单核标量处理器的困境1.2 多核并行计算与向量化的出现1.5 本章小结1.3 异构并行计算的崛起1.4 异构并行计算的未来(百花齐放)1 异构并行计算的过去、现状和未来1.1 单核标量处理器LOGOM.94275.CN1 异构并行计算的过去、现状和未来1.1 单核标量处理器的困境AB1.1.2 为什么单核标量处理器性能到达瓶颈1.1

2、.1 单核标量处理器如何提高性能LOGOM.94275.CN1 异构并行计算的过去、现状和1.2 多核并行计算与向量化的出现1 异构并行计算的过去、现状和未来1.2.2 为什么会有向量化1.2.4 多核和向量化的难点1.2.1 为什么会有多核1.2.3 如何利用多核和向量化的能力1.2 多核并行计算与向量化的出现1 异构并行计算的过去1 异构并行计算的过去、现状和未来1.3 异构并行计算的崛起CBA1.3.1 GPGPU的理念1.3.2 CUDA的崛起1.3.3 OpenCL横空出世1 异构并行计算的过去、现状和未来1.3 异构并行计算的2 OpenCL的基本介绍042 OpenCL的基本介绍

3、042 OpenCL的基本介绍2.1 什么是OpenCL2.2 OpenCL平台模型2.3 OpenCL执行模型2.6 OpenCL与CUDA2.5 OpenCL与OpenGL2.4 OpenCL存储器模型2 OpenCL的基本介绍2.1 什么是OpenCL2.2.7 本章小结2 OpenCL的基本介绍2.7 本章小结2 OpenCL的基本介绍2 OpenCL的基本介绍2.4 OpenCL存储器模型2.4.1 存储器区域2.4.2 存储器对象2.4.3 共享虚拟存储器2 OpenCL的基本介绍2.4 OpenCL存储器模型3 进入OpenCL的世界(矢量加法)053 进入OpenCL的世界(矢

4、量加法)053 进入OpenCL的世界(矢量加法)3.1 构建示例3.2 获得OpenCL平台和设备及其属性3.3 创建上下文和命令队列3.4 创建程序对象和内核对象3.5 程序对象3.6 内核对象3 进入OpenCL的世界(矢量加法)3.1 构建示例3 进入OpenCL的世界(矢量加法)3.1 构建示例3.1.1 Windows平台3.1.2 Linux平台3.1.3 OS X平台3.1.4 矢量加示例3 进入OpenCL的世界(矢量加法)3.1 构建示例3LOGOM.94275.CN3 进入OpenCL的世界(矢量加法)3.2 获得OpenCL平台和设备及其属性3.2.1 OpenCL平台

5、013.2.2 OpenCL设备02LOGOM.94275.CN3 进入OpenCL的世界(矢LOGOM.94275.CN3 进入OpenCL的世界(矢量加法)3.3 创建上下文和命令队列A3.3.1 创建OpenCL上下文3.3.2 创建命令队列BLOGOM.94275.CN3 进入OpenCL的世界(矢3.5 程序对象3 进入OpenCL的世界(矢量加法)3.5.2 构建程序对象3.5.1 创建程序对象3.5.3 查询和管理程序对象3.5 程序对象3 进入OpenCL的世界(矢量加法)33.6 内核对象3 进入OpenCL的世界(矢量加法)3.6.2 设置内核参数3.6.1 创建内核对象3

6、.6.3 查询和管理内核对象3.6 内核对象3 进入OpenCL的世界(矢量加法)34 OpenCL C语言064 OpenCL C语言064 OpenCL C语言4.1 修饰符4.2 标量数据类型4.3 矢量数据类型4.6 数据拷贝操作4.5 工作项布局函数4.4 运算符4 OpenCL C语言4.1 修饰符4.2 标量数据4 OpenCL C语言A4.7 浮点函数B4.8 整数函数C4.9 关系函数D4.10 杂项矢量函数E4.11 同步函数F4.12 原子函数4 OpenCL C语言A4.7 浮点函数B4.8 整4 OpenCL C语言DCBA4.13 图像读/写函数4.14 工作组函数

7、4.15 管道函数4.16 设备队列E4.17 本章小结4 OpenCL C语言DCBA4.13 图像读/写函数4 OpenCL C语言4.1 修饰符CBA4.1.1 地址空间修饰符4.1.2 函数修饰符4.1.3 对象访问修饰符4 OpenCL C语言4.1 修饰符CBA4.1.1 4 OpenCL C语言4.3 矢量数据类型A4.3.1 为什么要有矢量数据类型4.3.2 矢量数据的使用B4 OpenCL C语言4.3 矢量数据类型A 工作项布局函数4 OpenCL C语言4.5.1 维度和工作项4.5.2 工作组4.5 工作项布局函数4 OpenCL C语言4.5.14 O

8、penCL C语言4.6 数据拷贝操作A4.6.1 矢量数据拷贝4.6.2 异步拷贝和预取B4 OpenCL C语言4.6 数据拷贝操作A4.6.14 OpenCL C语言4.7 浮点函数4.7.1 数学函数4.7.2 公共函数4.7.3 几何函数4 OpenCL C语言4.7 浮点函数4.7.1 数4 OpenCL C语言4.13 图像读/写函数14.13.1 内建图像读函数24.13.2 内建无采样器图像读函数34.13.3 内建图像写函数44.13.4 内建图像查询函数4 OpenCL C语言4.13 图像读/写函数14.14.15 管道函数4 OpenCL C语言4.15.2 内建工作

9、组管道读/写函数4.15.1 内建管道读/写函数4.15.3 内建管道查询函数4.15 管道函数4 OpenCL C语言4.15.2 4.16 设备队列4 OpenCL C语言4.16.1 Blocks语法4.16.2 设备队列相关函数4.16.3 子内核存储器可见性4.16.4 设备队列的使用示例DCAB4.16 设备队列4 OpenCL C语言4.16.1 5 OpenCL存储器对象075 OpenCL存储器对象075 OpenCL存储器对象5.2 图像对象和采样器对象5.4 存储器对象数据传输5.6 存储器一致性模型5.1 缓冲区5.3 管道5.5 共享虚拟存储器5 OpenCL存储器对

10、象5.2 图像对象和采样器对象55 OpenCL存储器对象5.7 本章小结5 OpenCL存储器对象5.7 本章小结5 OpenCL存储器对象5.1 缓冲区5.1.1 分配缓冲区对象5.1.2 创建子缓冲区对象5 OpenCL存储器对象5.1 缓冲区5.1.1 分LOGOM.94275.CN5 OpenCL存储器对象5.2 图像对象和采样器对象5.2.1 图像对象5.2.2 采样器对象5.2.3 图像旋转示例LOGOM.94275.CN5 OpenCL存储器对象5.5 OpenCL存储器对象5.3 管道5.3.1 创建管道对象15.3.2 管道对象查询25 OpenCL存储器对象5.3 管道5

11、.3.1 创建5 OpenCL存储器对象5.4 存储器对象数据传输15.4.1 主机与设备间数据传输25.4.2 存储器对象数据填充35.4.3 存储器对象间数据传输45.4.4 存储器对象映射5 OpenCL存储器对象5.4 存储器对象数据传输15LOGOM.94275.CN5 OpenCL存储器对象5.5 共享虚拟存储器5.5.1 SVM缓冲操作5.5.2 SVM类型和特性5.5.3 相关示例LOGOM.94275.CN5 OpenCL存储器对象5.LOGOM.94275.CN5 OpenCL存储器对象5.6 存储器一致性模型15.6.1 存储器次序规则35.6.3 栅栏操作的存储器次序规

12、则55.6.5 主机端与设备端命令的存储器次序规则25.6.2 原子操作的存储器次序规则45.6.4 工作组函数的存储器次序规则65.6.6 关于存储器次序在实际OpenCL计算设备中的实现LOGOM.94275.CN5 OpenCL存储器对象5.6 OpenCL同步及事件机制086 OpenCL同步及事件机制086 OpenCL同步及事件机制AEDFBC6.2 OpenCL事件机制6.3 原子操作6.5 工作组间同步6.4 局部存储器与全局存储器间的异步拷贝6.6 本章小结6.1 主机端的OpenCL同步6 OpenCL同步及事件机制AEDFBC6.2 Ope6.2 OpenCL事件机制6

13、OpenCL同步及事件机制6.2.2 内核程序中的同步6.2.1 对OpenCL事件的标记和栅栏6.2.3 工作组内同步6.2 OpenCL事件机制6 OpenCL同步及事件机6 OpenCL同步及事件机制6.3 原子操作AB6.3.2 OpenCL 2.0中的原子操作6.3.1 OpenCL 1.2中的原子操作6 OpenCL同步及事件机制6.3 原子操作AB6.37 OpenCL与OpenGL互操作097 OpenCL与OpenGL互操作097 OpenCL与OpenGL互操作7.1 从一个OpenGL上下文来创建OpenCL上下文7.2 OpenCL使用OpenGL共享的缓存对象7.3

14、OpenCL使用OpenGL纹理数据7.4 OpenCL共享OpenGL渲染缓存7.5 从一个OpenCL存储器对象查询OpenGL对象信息7.6 访问共享对象的OpenCL与OpenGL之间的同步7 OpenCL与OpenGL互操作7.1 从一个Ope7 OpenCL与OpenGL互操作7.7 本章小结7 OpenCL与OpenGL互操作7.7 本章小结8 OpenCL到主流GPU处理器的映射108 OpenCL到主流GPU处理器的映射108 OpenCL到主流GPU处理器的映射8.1 AMD家族GPU8.2 NVIDIA CUDA兼容的GPU8.3 ARM Mali GPU架构8.4 本章

15、小结8 OpenCL到主流GPU处理器的映射8.1 AMD家8 OpenCL到主流GPU处理器的映射8.1 AMD家族GPU8.1.1 AMD Cayman架构GPU8.1.2 AMD GCN架构的GPU8 OpenCL到主流GPU处理器的映射8.1 AMD家LOGOM.94275.CN8 OpenCL到主流GPU处理器的映射8.2 NVIDIA CUDA兼容的GPU8.2.1 NVIDIA GPU架构的执行模型8.2.2 NVIDIA GPU的全局存储器8.2.3 NVIDIA GPU的局部存储器LOGOM.94275.CN8 OpenCL到主流GPU处LOGOM.94275.CN8 Ope

16、nCL到主流GPU处理器的映射8.3 ARM Mali GPU架构8.3.1 硬件架构018.3.3 OpenCL映射038.3.2 存储器层次02LOGOM.94275.CN8 OpenCL到主流GPU处9 OpenCL计算二维卷积119 OpenCL计算二维卷积119 OpenCL计算二维卷积9.6 一个工作项同时计算多个输出9.5 使用局部存储器优化9.4 使用常量存储器优化9.3 简单OpenCL实现9.2 AMD X86 CPU串行实现9.1 测试平台信息9 OpenCL计算二维卷积9.6 一个工作项同时计算多9 OpenCL计算二维卷积9.7 本章小结9 OpenCL计算二维卷积9

17、.7 本章小结9 OpenCL计算二维卷积9.2 AMD X86 CPU串行实现9.2.1 简单实现019.2.3 AVX指令集优化039.2.2 循环展开优化实现029.2.4 OpenMP049 OpenCL计算二维卷积9.2 AMD X86 CP10 OpenCL计算矩阵乘法1210 OpenCL计算矩阵乘法1210 OpenCL计算矩阵乘法10.2 简单OpenCL实现10.4 使用向量加载指令10.6 优化流水线性能10.1 串行实现10.3 使用局部存储器优化10.5 一个工作项同时计算多个输出10 OpenCL计算矩阵乘法10.2 简单OpenCL10 OpenCL计算矩阵乘法10.7 本章小结10 OpenCL计算矩阵乘法10.7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论