异构计算综述

上传人:小** 文档编号:57029898 上传时间:2018-10-18 格式:DOC 页数:16 大小:754.69KB
返回 下载 相关 举报
异构计算综述_第1页
第1页 / 共16页
异构计算综述_第2页
第2页 / 共16页
异构计算综述_第3页
第3页 / 共16页
异构计算综述_第4页
第4页 / 共16页
异构计算综述_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《异构计算综述》由会员分享,可在线阅读,更多相关《异构计算综述(16页珍藏版)》请在金锄头文库上搜索。

1、异构计算(异构计算(Heterogeneous computing)摘要异构计算(Heterogeneous computing)技术从 80 年代中期产生,由于它能经济有效地获取高性能计算能力、可扩展性好、计算资源利用率高、发展潜力巨大,目前已成为并行/分布计算领域中的研究热点之一。本文主要介绍了 CPU+GPU基础知识及其异构系统体系结构(CUDA)和基于 OpenCL 的异构系统,并且总结了两种结构的特点,从而对异构计算有了更深的理解。关键词:异构计算关键词:异构计算 CUDA OpenCL1、引言异构计算主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。常见的计算单元类

2、别包括 CPU、GPU 等协处理器、DSP、ASIC、FPGA 等。我们常说的并行计算正是异构计算中的重要组成部分异构计算近年来得到更多关注,主要是因为通过提升 CPU 时钟频率和内核数量而提高计算能力的传统方式遇到了散热和能耗瓶颈。而与此同时,GPU 等专用计算单元虽然工作频率较低,具有更多的内核数和并行计算能力,总体性能/芯片面积的比和性能/功耗比都很高,却远远没有得到充分利用。CPU 的设计让其比较擅长于处理不规则数据结构和不可预测的存取模式,以及递归算法、分支密集型代码和单线程程序。这类程序任务拥有复杂的指令调度、循环、分支、逻辑判断以及执行等步骤。而 GPU 擅于处理规则数据结构和可

3、预测存取模式。而 APU 的设计理念则正是让 CPU 和 GPU 完美合作,集合两者的长处,用异构计算来达到整体性能的最佳化。目前,已经有 50 款领先的应用能够利用 AMD APU 进行加速,而后续的应用也将陆续到来异构计算普及的一刻应该是近在咫尺了。1.1 CPU 和和 GPU 的本质区别的本质区别(1) CPU 特点a) CPU 的目标是快速执行单一指令流;b) CPU 将其用于乱序执行、寄存器重命名、分支预测以及巨大的 cache 上,这些设计都是为了加速单一线程的执行速度c) CPU 利用 cache 来降低内存访问延迟d) CPU 通过大量的 cache 和分支预测来降低延迟,这些

4、机制消耗了大量的晶体管的电能;e) CPU 每个核心支持 12 个线程;f) CPU 切换线程的代价是数百个时钟周期;g) CPU 通过 SIMD(单指令多数据)来处理矢量数据;h)Intel 的 CPU 没有集成内存控制器(2)GPU 特点a) GPU 的目标是快速执行大量的并行指令流。b)GPU 将晶体管用于处理器阵列、多线程管理、共享内存、内存控制器,这些设计并不着眼于提高单一线程的执行速度,而是为了使 GPU 可以同时执行成千上万的线程,实现线程间通信,并提供极高的内存带宽。c) GPU 使用 cache 来放大内存带宽d) GPU 通过同时运行上千个线程来隐藏延迟,等待内存访问的线程

5、会被切换掉,e) GPU 切换线程不耗时间。f)对于支持 CUDA 的 GPU,每个流处理器可以同时处理 1024 个线程。g) GPU 切换线程的代价是 0,事实上 GPU 通常每个时钟周期都切换线程。h) GPU 则使用 SIMT(单指令多线程) ,SIMT 的好处是无需开发者费力把数据凑成合适的矢量长度,并且 SIMT 允许每个线程有不同的分支。j) 支持 CUDA 的 GPU 集成有 8 个内存控制器,GPU 的内存带宽通常是CPU 的十倍1.2 GPU 计算模型计算模型内核是执行模型的核心,能在设备上执行。当一个内核执行之前,需要指定一个 N-维的范围(NDRange) 。一个 ND

6、Range 是一个一维、二维或三维的索引空间。还需要指定全局工作节点的数目,工作组中节点的数目。如图NDRange 所示,全局工作节点的范围为12, 12,工作组的节点范围为4, 4,总共有 9 个工作组。如果定义向量为 1024 维,特别地,我们可以定义全局工作节点为 1024,工作组中节点为 128,则总共有 8 个组。定义工作组主要是为有些仅需在组内交换数据的程序提供方便。当然工作节点数目的多少要受到设备的限制。如果一个设备有 1024 个处理节点,则 1024 维的向量,每个节点计算一次就能完成。而如果一个设备仅有 128 个处理节点,那么每个节点需要计算8 次。合理设置节点数目,工作

7、组数目能提高程序的并行度。图图 1.GPU 计算模型计算模型CPU 的长项是整数计算,GPU 的优势则是浮点计算。对于整机性能而言,CPU 和 GPU 都是性能的保障,合理的搭配才是重中之重,才能给用户带来最强的综合性能。1.3 异构计算分类及发展方向异构计算分类及发展方向目前的趋势,增加并行的性能,而不是时钟频率。我们的重点是在一个节点,几乎是充分利用指令级并行性。这意味着,提高性能,必须来自多芯片,多核或多上下文并行。Flynn 的分类法在硬件定义了四个级别的并行:(1)单指令单数据(SISD) (2)单指令多数据流(SIMD) (3)多指令单数据(MISD) (4)多指令多数据(MIMD

8、)此外,两个细分 MIMD 单程序多数据(SPMD) ,以及多个程序多数据(MPMD) ,我们使用这些术语来描述架构。图图 2.架构架构单芯片 CBEA,如图所示(a) ,由一个传统的 CPU 核心和 8 个 SIMD 加速器核心。这是一个非常灵活的架构,每个核心可以运行单独 MPMD 时尚和沟通方案,快速通过片上总线。其主要设计标准得到了最大限度降低消耗的功率。图中(b)显示了多线程 SIMD 加速器结合一个标准的多核 CPU 核心的GPU。GPU 具有优异的带宽和计算性能,对很少或根本没有同步运行的 SPMD方案进行了优化。它是专为高性能的图形,其中的数据吞吐量是关键。最后,图中(c)显示

9、了 FPGA 逻辑块阵列组成和一个标准的多核心 CPU 的组合。FPGA 的片上,也可以纳入正规的 CPU 核心,使得它本身就是一个异构芯片。 FPGA 可视为用户定义的应用程序的专用集成电路(ASIC)的可重构。他们提供充分确定性的表现,是专为高吞吐量,例如,在电信方面的应用。目前异构并行计算向着以下几个方向发展:(1)集群计算。这是传统高性能计算的领域。但是今天高性能计算已经演变成了异构并行计算的一部分,越来越多的高性能计算集群使用 GPU、MIC、FPGA 等。 (2)单机计算。推动单机计算向异构并行计算发展的主要动力是游戏、计算机辅助设计等,而主要表现是 GPU+CPU 的异构计算。

10、(3)移动计算。近几年发展表明,人们对手机的需求比对 PC 的需求更大。目前几乎所有的移动芯片解决方案都是异构的,除了有 CPU、GPU 之外,还有视频编解码单元、音频处理单元。倾向于把更多工作内容转移到手机上,但是为了保证续航时间,移动处理器的设计一开始就不是以高性能为目标,这使得要在移动处理器上获取高性能是比较困难的。 (4)嵌入式计算。在一些恶劣工作环境下,只有 DSP 和 FPGA 能够满足要求。2、异构计算系统2.1 CPU+GPU 异构系统体系结构异构系统体系结构计算机系统一般都配置了 CPU 和 GPU,GPU 传统上只负责图形渲染,大部分的仸务都由 CPU 来完成。随着图形渲染

11、的数据量越来越大、计算也越来越复杂,GPU 的可编程性和幵行性也随之增强。目前,主流 GPU 的计算能力、存储带宽、性价比与同期的 CPU 相比更具竞争力。下面以支持CUDA(Computing Unified Device Architecture) 的 GPU 为例来说明 CPU+GPU 异构计算系统的体系结构。支持 CUDA 的 GPU 通常由数个线程处理器簇。TPC(Thread Processor Cluster)组成,如:NVIDIA GeForce 9800 GX2 由 2 个TPC 组成双核 GPU;NVIDIA GeForce 9800 GTX 只含有一个 TPC。每个 TP

12、C 由若干流多处理器 SM(Streaming Multi-processor)组成,一个 SM 包含 8 个线程处理器 TP(threaded processor)和一定大小的共享存储空间(Shared Memory),另外,GPU 还提供了全局的存储器(Global Memory or Video Memory)和一定数量的全局只读的纹理缓存(Texture Cache)和常缓存(Constant Cache)。GPU 与 CPU间的数据传输通过 PCIE 通道来完成,该数据传输通道可能成为性能瓶颈。CPU+GPU 异构系统的整体结构如下图所示。图图 3.CPU+GPU 异构系统体系结构异

13、构系统体系结构2.1.2 CUDA 执行模型执行模型CUDA 源程序由运行于 host(CPU)上的控制程序和运行于device(GPU)上的计算核心(kernel)两部分组成。每一个 kernel 由一组相同大小的线程块(thread block)来幵行执行,同一线程块里面的线程通过共享存储空间来协作完成计算,线程块间是相互独立的。运行时,每一个线程块会被分派到一个流多处理器 SM 上运行,它们共享大小为 16KB 的共享存储空间。为了管理运行各种不同程序的数百个线程,SM 采用了一种称为 SIMT(single instruction multiple thread,SIMT)的新架构。S

14、IMT 单元以 32 个幵行线程为一组来创建、管理、调度和执行线程,这样的线程组称为 warp 块。多个 warp 块可以组成一个线程块,一个线程块将会分派到一个 SM 上,SM 会将各线程映射到一个 TP 核心上,各 TP 使用自己的指令地址和寄存器状态独立执行。构成 SIMT warp 块的各个线程在同一个程序地址一起启动,也可随意分支、独立执行。为一个 SM 指定了一个或多个要执行的线程块时,它会将其分成 warp 块,幵由 SIMT 单元迚行调度。将块分割为 warp 块的方法总是相同的,每个warp 块都包含连续的线程,递增线程 ID,第一个 warp 块中包含线程 0。每収出一条指

15、令时,SIMT 单元都会选择一个已准备好执行的 warp 块,幵将下一条指令収送到该 warp 块的活动线程,其执行调度过程示意如下图所示。图图 4.CUDA 执行模型执行模型2.1.3 协作框架协作框架由于 PCIE 数据传输通道会成为 CPU+GPU 异构系统的性能瓶颈,因此,保证通信传输开销取得最优解的情况下,更有利于优化通信开销取得期望解,GPU 与 CPU 如何协作完成求解问题,最大限度较少数据在 CPU 与 GPU 之间的频繁传输显得尤为重要。为此参考文献之处写作框架如下:图图 5.CPU+GPU 协作框架协作框架2.2.3 实验评估分析实验评估分析为了验证本文提出的协作框架的有效

16、性和高效性,选择了计算密集型应用图像置乱变换作为测试用例。实验环境配置如下:(1) Intel Core2 Quad 2.33Ghz ,4GB 内存,Microsoft Visual Studio 2005(2) GeForce GTX280, 1GB 显存,16KB Shared Memory,CUDA toolkit 和SDK 2.0,NVIDIA Driver for Microsoft Windows XP(177.98)图图 6.运行时间比较运行时间比较2.3 基于基于 OpenCL 的异构系统并行编程的异构系统并行编程使用 GPU 进行通用计算是近些年的热点研究领域。传统的通用计算主要依靠图形 API,这给不熟悉图形应用的用户带来了极大的不便。为了克服该缺陷,出现了 NVIDIA CUDA 和 ATI Stream 等编程模型,给编程带来了极大的灵活性。但是在程序移植性方面,NVIDIA GP 和 AMD GPU 互不兼容。并且今天的计算机系统通常包含高度并行的 CPU、GPU 和其它类型的处理器,让软件开发人员充分合理的利用这些异构处理平台的优势变得非

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号