版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
./异构计算〔Heterogeneouscomputing摘要异构计算〔Heterogeneouscomputing技术从80年代中期产生,由于它能经济有效地获取高性能计算能力、可扩展性好、计算资源利用率高、发展潜力巨大,目前已成为并行/分布计算领域中的研究热点之一。本文主要介绍了CPU+GPU基础知识及其异构系统体系结构〔CUDA和基于OpenCL的异构系统,并且总结了两种结构的特点,从而对异构计算有了更深的理解。关键词:异构计算CUDAOpenCL1、引言异构计算主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。常见的计算单元类别包括CPU、GPU等协处理器、DSP、ASIC、FPGA等。我们常说的并行计算正是异构计算中的重要组成部分异构计算近年来得到更多关注,主要是因为通过提升CPU时钟频率和内核数量而提高计算能力的传统方式遇到了散热和能耗瓶颈。而与此同时,GPU等专用计算单元虽然工作频率较低,具有更多的内核数和并行计算能力,总体性能/芯片面积的比和性能/功耗比都很高,却远远没有得到充分利用。CPU的设计让其比较擅长于处理不规则数据结构和不可预测的存取模式,以及递归算法、分支密集型代码和单线程程序。这类程序任务拥有复杂的指令调度、循环、分支、逻辑判断以及执行等步骤。而GPU擅于处理规则数据结构和可预测存取模式。而APU的设计理念则正是让CPU和GPU完美合作,集合两者的长处,用异构计算来达到整体性能的最佳化。目前,已经有50款领先的应用能够利用AMDAPU进行加速,而后续的应用也将陆续到来——异构计算普及的一刻应该是近在咫尺了。1.1CPU和GPU的本质区别<1>CPU特点a>CPU的目标是快速执行单一指令流;b>CPU将其用于乱序执行、寄存器重命名、分支预测以及巨大的cache上,这些设计都是为了加速单一线程的执行速度c>CPU利用cache来降低内存访问延迟d>CPU通过大量的cache和分支预测来降低延迟,这些机制消耗了大量的晶体管的电能;e>CPU每个核心支持1~2个线程;f>CPU切换线程的代价是数百个时钟周期;g>CPU通过SIMD〔单指令多数据来处理矢量数据;h>Intel的CPU没有集成内存控制器〔2GPU特点a>GPU的目标是快速执行大量的并行指令流。b>GPU将晶体管用于处理器阵列、多线程管理、共享内存、内存控制器,这些设计并不着眼于提高单一线程的执行速度,而是为了使GPU可以同时执行成千上万的线程,实现线程间通信,并提供极高的内存带宽。c>GPU使用cache来放大内存带宽d>GPU通过同时运行上千个线程来隐藏延迟,等待内存访问的线程会被切换掉,e>GPU切换线程不耗时间。f>对于支持CUDA的GPU,每个流处理器可以同时处理1024个线程。g>GPU切换线程的代价是0,事实上GPU通常每个时钟周期都切换线程。h>GPU则使用SIMT〔单指令多线程,SIMT的好处是无需开发者费力把数据凑成合适的矢量长度,并且SIMT允许每个线程有不同的分支。j>支持CUDA的GPU集成有8个内存控制器,GPU的内存带宽通常是CPU的十倍1.2GPU计算模型内核是执行模型的核心,能在设备上执行。当一个内核执行之前,需要指定一个N-维的范围〔NDRange。一个NDRange是一个一维、二维或三维的索引空间。还需要指定全局工作节点的数目,工作组中节点的数目。如图NDRange所示,全局工作节点的范围为{12,12},工作组的节点范围为{4,4},总共有9个工作组。如果定义向量为1024维,特别地,我们可以定义全局工作节点为1024,工作组中节点为128,则总共有8个组。定义工作组主要是为有些仅需在组内交换数据的程序提供方便。当然工作节点数目的多少要受到设备的限制。如果一个设备有1024个处理节点,则1024维的向量,每个节点计算一次就能完成。而如果一个设备仅有128个处理节点,那么每个节点需要计算8次。合理设置节点数目,工作组数目能提高程序的并行度。图1.GPU计算模型CPU的长项是整数计算,GPU的优势则是浮点计算。对于整机性能而言,CPU和GPU都是性能的保障,合理的搭配才是重中之重,才能给用户带来最强的综合性能。1.3异构计算分类及发展方向目前的趋势,增加并行的性能,而不是时钟频率。我们的重点是在一个节点,几乎是充分利用指令级并行性。这意味着,提高性能,必须来自多芯片,多核或多上下文并行。Flynn的分类法在硬件定义了四个级别的并行:〔1单指令单数据〔SISD〔2单指令多数据流〔SIMD〔3多指令单数据〔MISD〔4多指令多数据〔MIMD此外,两个细分MIMD单程序多数据〔SPMD,以及多个程序多数据〔MPMD,我们使用这些术语来描述架构。图2.架构单芯片CBEA,如图所示〔a,由一个传统的CPU核心和8个SIMD加速器核心。这是一个非常灵活的架构,每个核心可以运行单独MPMD时尚和沟通方案,快速通过片上总线。其主要设计标准得到了最大限度降低消耗的功率。图中〔b显示了多线程SIMD加速器结合一个标准的多核CPU核心的GPU。GPU具有优异的带宽和计算性能,对很少或根本没有同步运行的SPMD方案进行了优化。它是专为高性能的图形,其中的数据吞吐量是关键。最后,图中〔c显示了FPGA逻辑块阵列组成和一个标准的多核心CPU的组合。FPGA的片上,也可以纳入正规的CPU核心,使得它本身就是一个异构芯片。FPGA可视为用户定义的应用程序的专用集成电路〔ASIC的可重构。他们提供充分确定性的表现,是专为高吞吐量,例如,在电信方面的应用。目前异构并行计算向着以下几个方向发展:〔1集群计算。这是传统高性能计算的领域。但是今天高性能计算已经演变成了异构并行计算的一部分,越来越多的高性能计算集群使用GPU、MIC、FPGA等。〔2单机计算。推动单机计算向异构并行计算发展的主要动力是游戏、计算机辅助设计等,而主要表现是GPU+CPU的异构计算。〔3移动计算。近几年发展表明,人们对手机的需求比对PC的需求更大。目前几乎所有的移动芯片解决方案都是异构的,除了有CPU、GPU之外,还有视频编解码单元、音频处理单元。倾向于把更多工作内容转移到手机上,但是为了保证续航时间,移动处理器的设计一开始就不是以高性能为目标,这使得要在移动处理器上获取高性能是比较困难的。〔4嵌入式计算。在一些恶劣工作环境下,只有DSP和FPGA能够满足要求。2、异构计算系统2.1CPU+GPU异构系统体系结构计算机系统一般都配置了CPU和GPU,GPU传统上只负责图形渲染,大部分的仸务都由CPU来完成。随着图形渲染的数据量越来越大、计算也越来越复杂,GPU的可编程性和幵行性也随之增强。目前,主流GPU的计算能力、存储带宽、性价比与同期的CPU相比更具竞争力。下面以支持CUDA<ComputingUnifiedDeviceArchitecture>的GPU为例来说明CPU+GPU异构计算系统的体系结构。支持CUDA的GPU通常由数个线程处理器簇。TPC<ThreadProcessorCluster>组成,如:NVIDIAGeForce9800GX2由2个TPC组成双核GPU;NVIDIAGeForce9800GTX只含有一个TPC。每个TPC由若干流多处理器SM<StreamingMulti-processor>组成,一个SM包含8个线程处理器TP<threadedprocessor>和一定大小的共享存储空间<SharedMemory>,另外,GPU还提供了全局的存储器<GlobalMemoryorVideoMemory>和一定数量的全局只读的纹理缓存<TextureCache>和常缓存<ConstantCache>。GPU与CPU间的数据传输通过PCIE通道来完成,该数据传输通道可能成为性能瓶颈。CPU+GPU异构系统的整体结构如下图所示。图3.CPU+GPU异构系统体系结构2.1.2CUDA执行模型CUDA源程序由运行于host〔CPU上的控制程序和运行于device〔GPU上的计算核心<kernel>两部分组成。每一个kernel由一组相同大小的线程块〔threadblock来幵行执行,同一线程块里面的线程通过共享存储空间来协作完成计算,线程块间是相互独立的。运行时,每一个线程块会被分派到一个流多处理器SM上运行,它们共享大小为16KB的共享存储空间。为了管理运行各种不同程序的数百个线程,SM采用了一种称为SIMT〔singleinstructionmultiplethread,SIMT的新架构。SIMT单元以32个幵行线程为一组来创建、管理、调度和执行线程,这样的线程组称为warp块。多个warp块可以组成一个线程块,一个线程块将会分派到一个SM上,SM会将各线程映射到一个TP核心上,各TP使用自己的指令地址和寄存器状态独立执行。构成SIMTwarp块的各个线程在同一个程序地址一起启动,也可随意分支、独立执行。为一个SM指定了一个或多个要执行的线程块时,它会将其分成warp块,幵由SIMT单元迚行调度。将块分割为warp块的方法总是相同的,每个warp块都包含连续的线程,递增线程ID,第一个warp块中包含线程0。每収出一条指令时,SIMT单元都会选择一个已准备好执行的warp块,幵将下一条指令収送到该warp块的活动线程,其执行调度过程示意如下图所示。图4.CUDA执行模型2.1.3协作框架由于PCIE数据传输通道会成为CPU+GPU异构系统的性能瓶颈,因此,保证通信传输开销取得最优解的情况下,更有利于优化通信开销取得期望解,GPU与CPU如何协作完成求解问题,最大限度较少数据在CPU与GPU之间的频繁传输显得尤为重要。为此参考文献之处写作框架如下:图5.CPU+GPU协作框架2.2.3实验评估分析为了验证本文提出的协作框架的有效性和高效性,选择了计算密集型应用图像置乱变换作为测试用例。实验环境配置如下:<1>IntelCore2Quad2.33Ghz,4GB内存,MicrosoftVisualStudio2005<2>GeForceGTX280,1GB显存,16KBSharedMemory,CUDAtoolkit和SDK2.0,NVIDIADriverforMicrosoftWindowsXP<177.98>图6.运行时间比较2.3基于OpenCL的异构系统并行编程使用GPU进行通用计算是近些年的热点研究领域。传统的通用计算主要依靠图形API,这给不熟悉图形应用的用户带来了极大的不便。为了克服该缺陷,出现了NVIDIACUDA和ATIStream等编程模型,给编程带来了极大的灵活性。但是在程序移植性方面,NVIDIAGP和AMDGPU互不兼容。并且今天的计算机系统通常包含高度并行的CPU、GPU和其它类型的处理器,让软件开发人员充分合理的利用这些异构处理平台的优势变得非常重要。针对上述问题,OpenCL一种新的并行计算技术出现,使用它可以调用计算机内全部计算资源,包括CPU、GPU和其它处理器,为软件开发人员能够方便高效的利用异构处理平台、充分挖掘计算机中所有计算设备的性能潜力提供了充分保障。用OpenCL包含一个用来协调异构处理器间并行计算的API,和一个基于ISOC99跨平台的编程语言,且能与OpenGL、OpenGLES和其它图形类API高效互通,具有跨平台、兼容性好等特点,极大地方便了软件开发人员的编程工作,将大大地推动并行计算的发展。在诸如分子模拟、流体模拟、碰撞模拟、生物应用以及电信、金融、证券数据分析、医疗等各种领域都将具有良好的应用前景。本章节以OpenCL的架构、软件框架及实现原理等为基础,对OpenCL进行描述,并将OpenCL与CUDA等通用计算技术进行对比,突出OpenCL的优越性。2.3.1OpenCL架构〔1平台架构该模型描述内部单元之间的关系,如图1所示。主机可以是个人计算机或超级计算机。设备可以是CPU、GPU、DSP或其它处理器。每个OpenCL设备包含若干计算单元,每个计算单元又由若干处理单元组成。图7.平台模型OpenCL通过平台实现主机与设备间的交互操作。主机管理着整个平台上的所有计算资源,所有OpenCL应用程序都是从主机端启动并在主机端结束的。应用程序运行时由主机提交命令,在设备上的处理单元中执行计算。每个计算单元内所有的处理单元都会执行相同的一套指令程。每个处理单元以单指令多数据SIMD或单程序多数据SPMD模式运行指令流。〔2执行模型OpenCL执行两类程序:内核程序和主机程序;前者由若干个OpenCL设备执行,后者由主机执行。OpenCL通过主机程序定义上下文并创建一个被称为命令队列的数据结构来管理内核程序的执行。在命令队列中,内核程序可顺序执行也可乱序执行。每当主机提交内核程序到设备上执行时,系统便会创建一个N维〔N可取1,2,3的索引空间NDRange。如下图所示。内核程序将索引空间中的每一点用一个工作项〔work-item来表示,将若干个工作项划分成一个工作组〔workgroup。在一个计算单元内可运行同一工作组中的工作项,并且该组内的工作可以并发执行在多个处理单元上。图8.执行模型索引空间〔3内存模型设备上有4块存储区域可以提供给工作项进行访问:〔a全局内存:所有工作项对其中的任意数据都可以读写,容量较大,但访问延迟较高。〔b常数内存:全局内存的一部分,但工作项对其中的任意数据只能进行读操作。〔c局部内存:对特定工作组可见,该工作组中所有工作项可以对其中的任意数据进行读写操作。局部内存通常位于片上,访问速度较快,但容量有限。〔d私有内存:该区域中的数据只对单独的工作项可见。内存模型如下图所示。图9.内存模型一个kernal既不能访问主机内存也不能动态分配全局内存和常数内存,所有的内存都是由主机进行管理。下表描述了内核与主机对内存区域的分配以及访问情况。〔4编程模型数据并行和任务并行是OpenCL可以支持的两种并行编程模型,同时两者的混合模型也得到支持。通常情况下,OpenCL采用的首要模型是数据并行,而对多核CPU主要采用任务并行。在数据并行编程模型中,一系列的指令会作用到内存对象的多个元素上。严格来说,数据并行要求内存对象单元与工作项保持一对一的映射,而在实际应用中,并不要求严格按照这种方式。在数据并行编程模型中,OpenCL又提供了一种分级方式,有两种方法:显式分级模型和隐式分级模型;前者要求开发人员指出工作项的总数和工作项所属的工作组;而后者仅需要开发人员定义工作项的总数,对于工作项的划分则根据OpenCL的实现来管理。在任务并行编程模型上,每个工作项都相当于在一个单一的计算单元内,该单元内只有单一工作组,该工作组只有该工作项本身在执行。2.3.2OpenCL软件架构OpenCL软件框架包含三部分:OpenCL平台层、OpenCL运行时和OpenCL编译器。如下图所示。在OpenCL平台层上,开发人员可以查询系统中的平台数目并选定运行平台,在指定的平台上选择必要的计算设备并对它们进行初始化,然后可以建立上下文,并创建命令队列。执行内核程序、读、写及复制缓冲区和同步操作等都是通过命令队列中的命令实现的。一个命令队列和一个OpenCL设备是一对一的关系。在OpenCL运行时中,开发人员建立内核实例,并将其映射到正确的内存空间中,接着在命令队列中排队执行内核。OpenCL编译器负责编译运行在设备上的程序,并创建可执行程序。图10.OpenCL软件架构2.4总结根据下表可以看出,两者采用了不同的开发语言:<1>CUDA采用的是CUDAC作为开发语言,是一种类C的编程语言,它包含对C语言的最小扩展集和一个运行时库,编写的文件由NVCC编译器编译。CUDAC对C语言的扩展集引入了变量类型限定符、函数类型限定符等,<2>OpenCL采用的是基于ISOC99的OpenCLC语言,也是一种类C的编程语言。但OpenCLC引入了一些函数限定符、变量限定符,并且支持C语言中原有的一些数据类型,还增加了一些新的数据类型如half类型、内建的矢量数据类型等,OpenCLC还提供了丰富的内建函数,其中有些内建函数名和C语言的库函数相同,只是实现有所不同。OpenCLC为开发者提供的是统一的编程语言,适合在各种处理器上实现通用计算,并且程序移植性好。表1.CUDA与OpenCL术语对比表2.CUDA与OpenCL特点对比3、异构计算的典型应用异构计算并不神秘,目前已渗透各个领域,不仅是PC领域,也包括了手持移动设备领域、行业领域,甚至是云计算、分布式计算领域。事实上,异构计算至少在应用端〔前台并不像它的名字这样生涩,很多应用里面,都有异构计算的身影。小到网页及视频加速,大到DNA计算、蛋白质计算、气象运算,都能和异构计算搭上关系。但都有一定的限制,如_global_函数类型限定符用于声明内核函数,只能在设备上执行,从主机调用。3.1AMD视频稳定技术视频是和大家息息相关高频应用。而AMD、英特尔和NVIDIA在视频领域都有GPU加速/解码/转码技术——这一点大家都知道了。但还有些技术可能大家还不了解,比如图像稳定技术。我们时常遇到抖动的视频,这种抖动可能源于拍摄者的手不稳,也可能是因为长焦拍摄。无论如何,AMD通过异构计算拿出了解决方案:2011年中,AMD宣布了"SteadyVideo"技术,可以实时对抖动画面进行稳定化处理。不过由于缺乏播放软件的支持,该技术一直是"只闻其声,不见其形",真正的应用并不多。而在AFDS2012上,这一技术的升级版再度出击——与去年不同的是,如今,你使用APU平台笔记本,抑或是使用带有AMD独显,就能实实在在地感受到这一技术带来的良好特性。YouTube视频在线播放目前已经能够一键开启SteadyVideo技术〔绝大部分和主流浏览器都支持,而且,这种技术甚至已经能够在WindowsMediaPlayer上实现!我们在最新的A10-4600MAPU笔记本上进行了实测〔Win7系统,以佳能SX30IS拍摄.mov格式的视频。实测中我们发现,只要视频初期存在抖动,在用WindowsMediaPlayer进行播放时,SteadyVideo功能就会自动开启——这时,在播放界面的右下角会短暂出现SteadyVideo的图标,说明该功能正在启用。而我们用35倍光学变焦拍摄的视频,其图像稳定的效果非常显著!SteadyVideo是一个很典型的异构计算应用,因为它并非完全采用GPU而解放CPU资源,而是将实时的视频图像处理任务进行了智能分工,分别交给CPU和GPU共同完成。3.2人脸识别人脸识别是生物识别这个大范畴中的一类,目前广泛地运用在日常的娱乐生活中,相机拍照、摄像头人脸识别登录,甚至是目前很火的摄像头动作感应游戏,都是基于人脸识别系统的。那么,人脸识别怎么会和异构计算扯上关系的呢?人脸识别系统后台有面部模型,而其识别工作方式可能是这样的〔不同软件会有区别:先把画面分成若干区域,大家可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车载电源行业相关投资计划提议
- 锡及锡合金材相关行业投资方案
- 柴油发动机电控装置相关行业投资规划报告范本
- 电视内镜手术系统相关行业投资方案范本
- 中小学课程改革线上实施方案
- 家居行业库存与物流方案
- 在线问卷系统的设计与实现
- 2024宠物店寄养专属协议
- 2024年郑州驾驶员客运从业资格证模拟考试题库及答案
- 2024年衢州小型客运从业资格证理论考试答案
- 《人工智能基础》课件-AI的前世今生:她从哪里来
- 中医师承跟师笔记50篇
- 沪教版四年级上册期中复习数学试卷(一)
- 雕塑采购投标方案(技术标)
- 人教版八年级物理上册全知识点大全
- 破产管理人报酬计算器
- 国家生态环境建设项目管理办法
- 秦腔传统剧《草坡面理》
- 直流电机设计参数计算
- 核心素养下小学语文教学策略探究
- 室外球墨铸铁管施工方案
评论
0/150
提交评论