您好,欢迎来到聚文网。 登录 免费注册
异构处理器OpenCL编程导论

异构处理器OpenCL编程导论

  • 装帧: 平装
  • 出版社: 机械工业出版社
  • 作者: 邓仰东,朱茂华,刘春峰 编著
  • 出版日期: 2016-08-01
  • 商品条码: 9787111543305
  • 版次: 1
  • 开本: 16开
  • 页数: 238
  • 出版年份: 2016
定价:¥69 销售价:登录后查看价格  ¥{{selectedSku?.salePrice}} 
库存: {{selectedSku?.stock}} 库存充足
{{item.title}}:
{{its.name}}
精选
内容简介
本书系统讲解了GPU体系结构和OpenCL编程。全书分为14章:靠前~3章主要讲解GPU的体系结构与编程;第4~7章主要讲解OpenCL的语法与常用的API;第8~13章主要用实例的方式讲解OpenCL编程;靠前4章则从案例出发,以项目的方式讲解HSA的实现。
目录
推荐序
前言
第1章GPU计算的发展历程
1.1计算机图形学的发展
1.2图形流水线
1.3GPU的发展过程
1.4GPU通用计算的发展历程
参考文献
第2章现代图形处理器的体系结构
2.1计算机体系结构基础
2.2GPU的设计思想
2.3NVIDIA图形处理器
2.3.1总体体系结构
2.3.2流多处理器
2.3.3流多处理器的扩展
2.3.4存储器
2.4AMDGraphicsCoreNext图形处理器体系结构
2.4.1GCN计算单元
2.4.2GCN缓存
2.4.3GCNGPU
2.5ImaginationPowerVR移动图形处理器体系结构
参考文献
第3章异构系统体系结构和融合处理器
3.1HSA基本概念
3.2异构系统体系结构存储器模型
3.2.1虚拟存储器的地址空间
3.2.2缓存一致性
3.2.3内存一致性
3.3异构任务队列式调度机制
3.4任务抢占和内容切换
3.5HSA中间语言
3.6AMD的HSA硬件
习题
参考文献
第4章OpenCL基本概念
4.1OpenCL程序的工作流程
4.2OpenCL平台与设备
4.3上下文、命令队列、kernel函数
4.4存储对象
4.5HelloWorld例程
习题
参考文献
第5章OpenCL并行编程基础
……
第6章OpenCL事件和队列
第7章OpenCL2.0高级特征
第8章并行程序设计方法
第9章N体问题
第10章归约问题
第11章快速傅里叶变换
第12章稀疏矩阵——向量积
第13章直方图
第14章光线追踪算法的OpenCL实现
参考文献
摘要
这是一本关于图形处理器计算的书,也是一本为图形处理器程序员编写的书,但不是一本关于图形程序的书。图形处理器本来是专门处理图形显示的处理器,所以GPU总是与图形程序还有图形编程语言OpenGL联系在一起,但是本书提到的“计算”和“程序”就是每个程序设计初学者所说的“计算”和“程序”,与图形完全没有任何关系。
    本书使用的语言是OpenCL,是使用GPU进行通用计算的编程语言。、这里所说的“通用”,其实就是“图形之外”的意思。那么,为什么要使用图形处理器做通用汁算呢?第1章会深入讨论这个问题,这里我们只需要记住简单答案:①图形处理器可以同时支持大l并行任务,其峰值处理能力超过当前所有其他处理器;②如果应用程序具备足够的并行性,则图形处理器比当前所有其他处理器的计算速度都要快。
    这里用到了“并行”的概念。计算机科学中的“并行处理”定义是:南若干处理单元协作完成某一计算任务,并且这些动作的完成过程一般在时间上有所重叠。并行处理其实是Fi然界最常见的现象。我们所生活的世界本质上就是并行的,大家只要想象高速公路-l -的车流就可以获得直观的感觉。如果从公路角度看,公路就是处理车流的装置。苒‘先,公路分成多个车道,相当于提供了多个并行处理单元,这是空间的并行;其次,一条车道1-也可以同时行驶多辆汽车,只是这些车辆在空间上是顺序分布的,这是时间上的并行,类似T CPU内部的流水线。公路上的汽车在统一行为协议(即交通驾驶规则)下以协作和竞争并存的方式分享资源。我们不仅拥有并行的外部世界,人脑也是并行_丁作的。人类思维和意识的基本单元是神经元,它们能够通过电化学反应对周围的刺激产生响应。人脑中的100亿N 150亿个神经元细胞可联结为异常复杂的网络,思维活动被映射到这个网络并进行高度并行处理。
    虽然并行现象无处不在,人类制造的计算机却从顺序处理机制起步。在计算机技术的甲.期发展阶段,硬件成本昂贵,没有足够资源去采用并行结构。随着集成电路技术的发展,硬件资源越来越多,从20世纪八九十年代开始发展起来的流水线、超标量计算机和超长指令字等技术为CPU引入了并行执行硬件,但是在编程上仍然沿用顺序语言,由硬件或编译器寻找指令间的并行性。这种隐含并行模型其实是绝好的硬件“封装”方法,程序无需任何修改就可以在更新一代的处理器上获得更好的性能。2000年以后,随着指令间并行性的逐渐饱和,计算机体系结构发生了重大转变,普遍的做法是在处理器芯片上部署多个指令执行内核,从而利用仍在不断增长的集成电路资源。换言之,未来不会有更快的处理器内核,但是能够使用的内核数量会越来越多。这一趋势的意义极为深远:首先,我们并不了解兼顾性能、功耗和可编程性的最佳并行处理器体系结构,因此未来的并行处理器必然会出现一个群雄并起的阶段;其次,目前的处理器能够提供任务级、数据级、线程级等多种并行方式,然而,自动并行化技术远未成熟,只能由程序员指定具体的并行方式,以最大限度地发挥并行处理器的能力,所以众多崭新的并行编程语言必然应运而生;最后,主流计算平台要求从算法设计到代码执行的全面并行化,这还是人类文明史上的第一次,我们将不可逆转地走向并行计算之路。
    在当前众多的新兴并行处理器和编程模型中,GPU通用计算具有独到的特色和优势。经历30年的发展,GPU已经拥有成熟的体系结构、完备的工具链和庞大的用户规模。GPU的最初设计目的是高速图形显示,该任务具有先天的高度并行性,因此GPU体系结构始终是为支持海量并行处理而设计的,而人类对视觉效果的无尽追求使得GPU发展成为高度优化的硬件平台。随着众多研究人员意识到GPU在通用计算方面的潜力,NVIDIA首先推出了图形处理器通用编程技术,从而在高性能计算领域占据了一定的市场份额。随着众多GPU制造商的纷纷跟进,大家开始意识到兼容性问题。GPU市场仍然处于“战国”时代,桌面GPU市场由Intel、NVIDIA和AMD三家公司分享,后两者主导高端GPU。而移动GPU的竞争者更多,Imagination、ARM、NVIDIA、Qualcomm、Samsung等公司也都有自己的产品。
    为了借鉴OpenGL的成功经验,使得基于不同硬件体系结构的GPU能够在源代码级实现兼容,各大GPU及其下游产品制造商合作制定了OpenCL图形处理器通用计算语言标准,并由Khronos集团发布和维护。作为OpenGL的姊妹语言,OpenCL也是跨平台兼容的标准化语言。实际上,任何处理器只要提供相应编译器、驱动和动态运行时( runtime)环境,就可以执行OpenCL程序,著名的可编程芯片制造商Altera甚至可以将OpenCL编译到硬件上执行。当然,OpenCL的语法和语义是针对图形处理器硬件设计的,只有具有相应结构的硬件才能高效执行OpenCL代码。
    OpenCL和CUDA也经常被称为异构编程语言,这是因为相应代码总是使用CPU和GPU这两种在硬件体系结构和代码执行方式上有很大区别的计算资源。一方面,目前的GPU还不能运行操作系统,所以GPU通用计算程序总是在CPU上启动;另一方面,在GPU通用计算程序中也允许使用C/C++语言编写在CPU上执行的代码。从目前的技术看,CPU和GPU分别适应不同的计算结构,双方在应用角度上的互补关系远大于竞争关系,这种定位在可预见的未来并不会发生改变,因此异构计算代表了未来的方向。大部分异构平台一般采用CPU处理器芯片+GPU处理器芯片的形式,而对于在软件层面整合两种计算资源,唯有AMD公司迈出了关键一步,通过定义异构系统体系结构(Heterogeneous SystemArchitecture,HSA)实现了CPU和GPU的紧密耦合,使两种处理器集成在同一芯片上并共享片外存储器。
    介绍到这里,本书的舞台就已经搭建好了。本书共有14章,第1~3章从图形处理器的历史开始,依次讨论GPU硬件体系结构和HSA,以及具有代表性的HSA处理器。
    第4~7章介绍OpenCL编程,包括基本语法、并行组织方式、事件和任务队列,以及OpenCL 2.0引入的高级特征。第8~13章用一组实例由浅人深地讲述并行程序设计和编程技巧。第14章介绍了一个比较复杂的应用实例——光线追踪图形渲染,总结了OpenCL程序设计技术。
    设计简洁、高效的代码从而最大限度地发挥并行硬件的能力,是每一位严肃对待工作的程序员发自心底的愿望。谨以此书献给严肃的程序员们。

蜀ICP备2024047804号

Copyright 版权所有 © jvwen.com 聚文网