发表于2024-12-14
异构处理器OpenCL编程导论 pdf epub mobi txt 电子书 下载
由AMD和清华大学专家联袂推出的异构计算扛鼎之作。
本书结合了作者的*新科研成果,对于光线追踪和稀疏矩阵算法的应用进行全面剖析。本书立足实战和应用,案例丰富,可操作性强
图形处理器已经成为机器学习、图形显示和科学计算等领域的核心计算工具,本书系统地讲述具有跨平台兼容能力的图形处理器通用计算编程语言—OpenCL。在介绍图形处理器体系结构和编程思想的基础上,提供一组经典计算问题的编程实例,帮助读者快速提高针对图形处理器通用计算的编程能力,并且养成并行思维习惯。
本书适用于具有计算机编程基础的初学者、准备开展图形处理器计算的程序员和计算机、软件工程以及相关专业的高年级本科生与研究生。
本书特色:
本书结合硬件,系统诠释了异构计算的概念。
本书提供一组针对常见数据的并行计算模式代表性算法,读者可以使用这些模型编写复杂异构计算应用程序。
本书给出结合高性能计算和物理真实渲染的光线追踪应用程序,淋漓尽致地展现了图形处理器的运算潜力。
本书系统讲解了GPU体系结构和OpenCL编程。全书分为14章:第1~3章主要讲解GPU的体系结构与编程;第4~7章主要讲解OpenCL的语法与常用的API;第8~13章主要用实例的方式讲解OpenCL编程;第14章则从案例出发,以项目的方式讲解HSA的实现。
邓仰东 2006年获得卡内基·梅隆大学计算机工程博士学位,现在是清华大学软件学院副教授,知名集成电路计算机辅助设计和图形处理器通用计算专家,被誉为“GPU通用计算技术的先行者”。
朱茂华 加州大学圣塔芭芭拉分校计算机科学系博士候选人,研究方向包括计算机体系结构和机器学习算法。
刘春峰 慕尼黑工业大学电机和计算机工程系博士候选人,研究方向包括生物芯片和计算机辅助设计。
推荐序
前言
第1章GPU计算的发展历程 l
1.1计算机图形学的发展 2
1.2图形流水线 6
1.3 GPU的发展过程 8
1.4 GPU通用计算的发展历程 15
参考文献 18
第2章现代图形处理器的体系结构 20
2.1计算机体系结构基础 2l
2.2 GPU的设计思想 23
2.3 NVIDIA图形处理器 25
2.3.1总体体系结构 _26
2.3.2流多处理器 29
2.3.3流多处理器的扩展 31
2.3.4存储器 34
2-4 AMD Graphics Core Next图形
处理器体系结构 37
2.4.1 GCN计算单元 38
2.4.2 GCN缓存 40
2.4.3 GCN GPU 41
2.5 ImaginationPowerVR移动图形
处理器体系结构 一42
参考文献 _44
第3章异构系统体系结构和
融合处理器 45
3.1 HSA基本概念 47
3.2异构系统体系结构存储器
模型 50
3.2.1虚拟存储器的地址空间 ‘51
3.2.2缓存一致性 52
3.2.3内存一致性 53
3.3异构任务队列式调度
机制 54
3.4任务抢占和内容切换 57
3.5 HSA中间语言 57
3.6 AMD的HSA硬件 一60
习题 62
参考文献 63
第4章OpenCL基本概念 64
4.1 0penCL程序的工作流程 64
4.2 0penCL平台与设备 65
4.3上下文、命令队列、kernel
函数 70
4.4存储对象 72
4.5 Hello World例程 73
习题 82
参考文献 82
第5章0penCL并行编程基础83
第6章0penCL事件和队列108
第7章0penCL2.0高级特征119
第8章并行程序设计方法134
第9章N体问题152
第10章归约问题165
第11章快速傅里叶变换178
第12章稀疏矩阵---向量积191
第13章直方图208
第14章光线追踪算法的0penCL实现214
参考文献237
这是一本关于图形处理器计算的书,也是一本为图形处理器程序员编写的书,但不是一本关于图形程序的书。图形处理器本来是专门处理图形显示的处理器,所以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程序设计技术。
设计简洁、高效的代码从而最大限度地发挥并行硬件的能力,是每一位严肃对待工作的程序员发自心底的愿望。谨以此书献给严肃的程序员们。
这个价格太划算了,双十一买得值!!!
评分本书使用的语言是OpenCL,是使用GPU进行通用计算的编程语言。、这里所说的“通用”,其实就是“图形之外”的意思。那么,为什么要使用图形处理器做通用汁算呢?第1章会深入讨论这个问题,这里我们只需要记住简单答案:①图形处理器可以同时支持大l并行任务,其峰值处理能力超过当前所有其他处理器;②如果应用程序具备足够的并行性,则图形处理器比当前所有其他处理器的计算速度都要快。
评分很好
评分这是一本关于图形处理器计算的书,也是一本为图形处理器程序员编写的书,但不是一本关于图形程序的书。图形处理器本来是专门处理图形显示的处理器,所以GPU总是与图形程序还有图形编程语言OpenGL联系在一起,但是本书提到的“计算”和“程序”就是每个程序设计初学者所说的“计算”和“程序”,与图形完全没有任何关系。
评分书还不错 活动很便宜
评分盆友介绍的,正在看,感觉还不错。说的比较容易懂。
评分是正品,很不错,比电子书看着好啊
评分这是一本关于图形处理器计算的书,也是一本为图形处理器程序员编写的书,但不是一本关于图形程序的书。图形处理器本来是专门处理图形显示的处理器,所以GPU总是与图形程序还有图形编程语言OpenGL联系在一起,但是本书提到的“计算”和“程序”就是每个程序设计初学者所说的“计算”和“程序”,与图形完全没有任何关系。
评分书还不错 活动很便宜
异构处理器OpenCL编程导论 pdf epub mobi txt 电子书 下载