GPGPU体系结构综述.docx

上传人:b****6 文档编号:5769899 上传时间:2023-01-01 格式:DOCX 页数:7 大小:70.28KB
下载 相关 举报
GPGPU体系结构综述.docx_第1页
第1页 / 共7页
GPGPU体系结构综述.docx_第2页
第2页 / 共7页
GPGPU体系结构综述.docx_第3页
第3页 / 共7页
GPGPU体系结构综述.docx_第4页
第4页 / 共7页
GPGPU体系结构综述.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

GPGPU体系结构综述.docx

《GPGPU体系结构综述.docx》由会员分享,可在线阅读,更多相关《GPGPU体系结构综述.docx(7页珍藏版)》请在冰豆网上搜索。

GPGPU体系结构综述.docx

GPGPU体系结构综述

计算机

体系结构作业

作业题目:

GPGPU综述

姓名:

学号:

班级:

研1628

 

2016年秋季学期

1、引言

多核CPU和多核GPU已经出现并逐渐主导最先进的高性能计算。

虽然当代CPU和GPU是使用相同的半导体技术制造的,但是GPU的计算性能比CPU的计算性能更快地增加。

不同的设计选择驱动他们进入不同功能的设备,给定相同的晶体管数量的顺序。

CPU针对高性能,任务并行工作负载进行了优化,因为更多的晶体管专用于控制逻辑,例如每个处理元件中的分支预测和无序执行。

GPU针对高性能数据并行工作负载进行了优化,因为更多的晶体管专用于算术逻辑,例如浮点计算和每个处理元件中的超越函数。

GPU(GraphicsProcessingUnit)早期的主要任务是用来进行3D图形计算和处理。

近年来,受游戏市场和视景仿真需求的牵引,并随着人们对计算性能要求的不断提高,GPU得到了飞速的发展,主流GPU的单精度浮点处理能力和外部存储器带宽都远远超过同期的GPU,而且GPU已经从以往的固定流水线操作模式发展成可编程流水线模式;另一方面,受工艺、材料和功耗的物理限制,相应的现代GPU也采用了多核的架构用来提高GPU的并行处理能力。

在2003~2004年左右,图形学之外的领域专家开始注意到GPU与众不同的计算能力,开始尝试把GPU用于通用计算(GPGPU)。

由此,开启了新的计算时代,即图形处理单元(GPGPU)上的通用计算。

GPGPU代表GeneralPurposeComputingonGraphicsProcessingUnit,就是"图形处理器通用计算技术"。

这种新兴的加速技术试图把个人计算机上的显卡当做CPU这样的通用处理器来用,使显卡的强劲动力不仅发挥在图形处理上。

2、GPU的发展历史

从SIGGRAPH2003大会首先提出GPU通用计算概念,到NVIDIA公司2007年推出CUDA平台,GPU通用计算依靠其强大的计算能力和很高的存储带宽在很多领域取得了成功。

越来越多的信号告诉我们,GPU通用计算是一片正在被打开的潜力巨大的市场。

从1991年到2001年,这期间,微软公司的Windows操作系统在全球流行,极大地刺激了图形硬件的发展。

S3Graphics公司推出了公认的全球第一款图形加速器,可以被认为是显卡设备的雏形。

早期的GPU只能进行二维的位图(bitmap)操作,但在20世纪90年代末,已经出现了硬件加速的三维的坐标转换和光源计算(transformationandlighting,T&L)技术。

从2001年到2006年,这是酝酿现代GPU产品极为重要的一段时间,各种硬件加速技术的出现使显卡的性能突飞猛进。

其中标志性的事件是可编程图形处理器的出现。

GeForce3是第一款支持可编程图形流水线(programmablegraphicspipeline)的GPU产品。

从此,可编程的着色功能被加入了硬件。

图形作业的可编程功能使得着色器可以按照用特定编程语言表达的算法来给多边形上色,并按照用户制定的策略来转换顶点坐标。

GPU拥有了更大的可扩展性和适应性,不再是一个功能单一的设备,它开始使得复杂的三维图形效果成为可能。

这个时期出现的各种令消费者疯狂的电脑游戏和动画产品,从市场的角度为显卡功能的开发更进一步注入了动力。

GPGPU技术也是在这个时期开始发展起来的。

GPU高度并行化的架构和可编程的着色器使人们渐渐开始用它计算通用任务。

在将GPU用到科学计算时,这些可编程的着色器和着色语言(shadinglanguages)就成了技术的核心。

把算法用着色语言实现,再加载到着色器里,同时把原本的图形对象替换为科学计算的数据,这就实现了显卡对通用数据的处理。

用着色语言实现的GPGPU技术是第一代的GPGPU技术,或称为经典GPGPU、传统GPGPU。

着色器编程语言是为复杂的图形处理任务设计的,而非通用科学计算,所以在使用时需要通过一系列非常规的方法来达到目的。

2006年至今,这一时期的GPU从硬件设计之初就开始考虑到了GPGPU的应用,因而它们从根本上比早前的GPU更为通用。

2006年,NVIDIA公布了统一着色器模型(UnifiedShaderModel)和它的GeForce8系列GPU,GPU从此进入了通用计算时代。

统一着色器模型整合了顶点着色器(vertexshaders)和片段着色器(fragmentshaders),或称为像素着色器(pixelshaders),每一个着色器都可以自由承担原本某种特定着色器的工作。

这样,GPU在图形处理时空闲的着色器更少,计算效率更高。

同时,这样无差别的着色器的设计,令GPU成了一个多核的通用处理器。

2010年,NVIDIA公司推出基于Fermi架构的Tesla20系列GPU,Fermi架构是GPU架构发展史上一次革命性的跨越,其在保持图形性能的前提下,大大提高了GPU通用计算的能力.Fermi不仅使得SM功能增强还提高了其可编程性和执行效率.为了符合通用计算对于精度和速度的要求,Fermi的流处理器都支持IEEE754-2008的单精度浮点标准和完整的32位整数计算,同时Fermi架构使用了新的乘加指令FMA(fusedmultiply-add).FMA指令和MAD(multiply-add)指令相比,在做乘运算和加运算的时候只在最后运算的时候作一次舍入,避免了在执行加法时出现精度损失.双精度浮点计算在高性能计算中具有核心地位.Fermi架构下每个SM在一个时钟周期内可以完成16个双精度浮点数的FMA操作.

我们看到了这样的趋势:

单纯的CPU计算渐渐被基于异构计算资源的并行计算所取代;单机计算逐渐被分布式的多用户、多处理器组成的集群计算和云计算所取代;GPGPU技术渐渐成为异构计算的主导技术。

3.最新研究

3.1TeslaP100

2015年,英伟达发布了旗下新一代GPU架构Pascal,依靠新的3Dmemory和NV-Link互连技术,采用Pascal架构的新GPU将在速度和体积上获得飞跃突破。

Pascal将被运用在机器学习、超级计算机、云计算和游戏等领域中。

英伟达CEO黄仁勋在2016年GTC大会的发言中,介绍了该公司搭载在TeslaP100高性能运算加速器上的PascalGP100图形处理单元。

整个TelsaP100系统由包括GPU在内的许多芯片组成,这些芯片总计有超过150亿的晶体管,其特色为适用于总计速率为720GB/s带宽的16GB的堆栈式HBM2VRAM显存。

此外,TeslaP100还拥有史无前例的性能表现和可拓展性,以及在编程效率方面的五大架构突破:

∙英伟达帕斯卡架构实现指数级的性能飞跃——和前代的基于NVIDIAMaxwell™的解决方案相比,基于帕斯卡的TeslaP100显卡解决方案在神经网络训练性能上实现了超过12倍的提升。

∙拥有最大应用拓展性的NVIDIANVLink——NVIDIANVLink™高速GPU互连可在多个GPU上测量应用程序,可实现5倍于目前顶级解决方案的带宽加速。

NVLink可同时连接多达八个TeslaP100GPU显卡以实现单一节点上的应用程序性能最优化,而且IBM已在它的POWER8CPU上实行NVLink,用于CPU对CPU快速交流。

∙具备史无前例的能效的16nmFinFET工艺——搭载使用16纳米FinFET制备工艺构建的153亿个晶体管,帕斯卡GPU是目前世界上最大的FinFET芯片。

它的设计目的是为运算需要接近无限的负载实现最快性能和最佳能效。

∙可应对大数据负载的HBM2芯片-晶圆-基底(CoWoS)设计——帕斯卡架构将处理器和数据统一为一个单独包,以实现史无前例的运算效率。

作为存储设计的创新之举,相比于麦斯威尔架构,HBM2芯片-晶圆-基底(CoWoS)设计在存储带宽性能上实现了3倍提升。

∙性能顶级的新型人工智能算法——新型的半精度指令在深度学习上实现了超过21次浮点运算的顶级性能。

英伟达表示TeslaP100显卡已进入量产,生产的所有TeslaP100显卡都用于它的DGX-1高密度HPC节点系统和来自IBM、戴尔和克雷的HPC服务器中。

DGX-1节点已以12.9万美元的价格发售,来自其他制造商的服务器则有望在2017年的第一个季度开始发售。

3.2RadeonRX480

继TeslaP100发布后,AMD公司的RadeonRX480也于今年6月进入公众视野。

RadeonRX480的大部分增强源于使用AMD新的“Polaris”GPU内核。

自2011年以来,该行业一直停留在使用28nmGPU核心,自那时以来,所有的显卡都基本上迭代了相同的底层技术,AMD和Nvidia跳过了20nm代。

Polaris拥有14nm晶体管以及先进的“FinFET”技术,使这些缩小的晶体管更加节能。

使用14nm工艺,AMD也将更多的技术带入其GPU。

RadeonRX480包含2,304个流处理器,它们是AMD相当于Nvidia的CUDA核心-尽管不可能在纯粹的核心计数中比较两种截然不同的架构。

机载计算单元的数量从R9380中的28个CU扩展到RX480中的36个CU。

4.GP-GPU的应用

GPGPU项目研究中的先行者是英国剑桥大学的BionicFx课题组。

早在2004年9月,剑桥大学的BionicFx课题组便宣布在NVIDIA的GeForceFX5900产品中实现了专业的实时音频处理功能,并且准备进行商业化的运作,对其产品进行销售,给音乐创作者带来实惠。

在随后的一段时间,GPGPU进入了深入研究阶段,但是由于编程语言架构和编程环境都难以通用,该领域的发展能力受到广泛质疑。

就在人们认为GPGPU的研究即将偃旗息鼓的时候,ATI在2006年8月惊人地宣布即将联手斯坦福大学在其Folding@Home项目中提供对ATIRadeonX1900的支持。

在显卡加入Folding@Home项目后,科研进展速度被成倍提升,人们第一次感受到了GPU的运算威力。

毫无疑问,在GPGPU研究上,ATI跨出了极具意义的一步。

同时将GPGPU的应用领域和普及程度推向高潮。

随后NVIDIA凭借GeForce8800GTX这款业界首个DirectX10GPU,在GPU通用计算方面实现了大步跨越,特别是CUDA概念的提出,在新的通用计算领域后来居上。

不仅应用程序在使用GPGPU技术,最新的操作系统也将它作为架构的一部分。

微软使用DirectCompute实现了它更具视觉体验的全新操作系统Windows7;苹果最新的操作系统MacOSX10.6(SnowLeopard)完全支持OpenCL;Linux发行版Ubuntu10.10也支持基于OpenCL的应用程序硬件加速。

这个新兴的技术从研究所走到商业,仅仅用了两年。

GPGPU发展速度飞快,许多刚刚取得的成绩都迅速地成为了历史。

GPGPU技术的发展与应用是相互促进的,目前GPGPU应用的研究热点领域有:

数值天气预报、地震模拟、计算生物学、商业风险计算、医学成像模拟、识别信号处理、物理仿真、地质勘探等。

Extremadura大学进行的基于GPU的高光谱遥感影像分解实验结果表明,基于GPU的影像处理速度比以前提高了25倍。

Manifold系统第8版是全球最强大、功能最全面的地理信息系统软件包。

Manifold于2007年5月开始使用CUDA。

GPU并行处理使从前需要20分钟才能完成的运算现在只需30s即可完成,而从前需要30到40s完成的运算现在能够实现实时运算,遥感影像的任务处理和分析工作的运算速度比从前快了数百倍。

GPGPU将应用范围扩展到了图形之外,无论是科研教育、财务计算,还是在工业领域,GPGPU都得到了广泛的使用,关于它的科研成果和新应用模式也层出不穷。

许许多多令人鼓舞的结果已经表明:

将GPU用于解决数据并行计算问题可以明显提高系统的运行速度。

5.GP-GPU语言

自从2006年以后,越来越多的研究人员把目光投向用GPU进行通用计算的GPGPU领域,在他们的努力下,很多原本由CPU执行的算法都有了GPU版本,它们的运行速度皆大幅提高。

随着GPGPU开发人员的增加,这种最初是"非主流"的技术变得越来越成熟,并影响了图形处理器的发展方向。

终于,专门用于实现GPGPU技术的编程语言应运而生,它们被称为GPGPU语言。

最主要的语言有CUDA(ComputeUnifiedDeviceArchitecture)、OpenCL(OpenComputingLanguage)、DirectCompute(DirectX的GPGPU解决方案)、StreamSDK和BrookGPU(即之前的Brook+)。

前三个是目前市场占有率最高的。

这些语言的设计目的就是封装GPU尽可能多的与CPU不同的特殊性质,提供对GPU进行通用计算编程的接口。

5.1CUDA

从市场的角度说,CUDA是当今最流行的GPGPU语言,它大约与NVIDIAGeForce8000系列显卡同时推出。

GeForce8000系列遵循的G80架构是NVIDIA公司用来占领通用计算显卡市场的主力。

与以往GPU编程语言不同的是,CUDA不再面向图形计算,而是一种专业的GPGPU语言。

它提供编译器和一些开发工具,让开发人员可以用一种类似C的编程语言来开发GPGPU程序,并同时运行于CPU和GPU上。

说得更确切一些,CUDA实际上是NVIDIA公司设计的一个计算架构,针对异构计算资源下的大规模并行计算。

而官方为这个架构提供的编程语言称为CforCUDA(被NVIDIA扩展的C语言),简称为CUDAC。

在不会出现歧义的地方,一般也会直接用CUDA来指代编程语言CUDAC。

NVIDIAGeForce8000系列(G80架构)以后的GPU产品,包括GeForce、Quadro和Tesla产品,都支持CUDA。

CUDAC提供给开发人员一个完整的接口,可以访问NVIDIAGPU的本地命令集、存储器等并行计算元素,使它们变成像CPU一样的开放式架构。

与CPU不同的是,现代GPU是多核架构,能同时运行成千上万个线程。

若待开发的应用程序符合这样的大规模并行结构,运行效率就会大幅提升。

CUDA模型的大致计算流程可以归结为4步

1)把需要处理的数据从内存复制到显存中。

2)CPU把程序指令发送给GPU。

3)GPU的多处理器对显存中的数据执行相关指令,计算的过程中GPU可能需要频繁和显存交换数据。

最后的计算结果存放在显存中。

4)从显存中把计算结果复制到内存里。

5.2OpenCL

OpenCL(OpenComputingLanguage,开放计算语言)是一个为异构平台编写程序的框架,此异构平台可由CPU、GPU或其他类型的处理器组成。

OpenCL由用于编写kernels(在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成。

OpenCL提供了基于任务分区和数据分区的并行计算机制。

OpenCL最初由Apple公司开发,Apple拥有其商标权,并在与AMD,IBM,Intel和NVIDIA技术团队的合作之下初步完善。

OpenCL也是基于C的一个程式语言,分为PlatformLayer、Runtime、Compiler三个部分:

PlatformLayer用来管理计算装置,提供启始化装置的界面,并用来建立computecontexts和work-queues。

Runtime用来管理资源,并执行程序的kernel。

Compiler则是ISOC99的子集合,并加上了OpenCL特殊的语法。

在OpenCL的执行模型中,有所谓的ComputeKernel和ComputeProgram。

ComputeKernel基本上类似于CUDA定义的kernel,是最基本的的计算单元;而ComputeProgram则是ComputeKernel和内建函数的集合,类似一个动态函数库。

很大程度上OpenCL与CUDADriverAPI比较相像。

6.特点

•GPGPU的任务组织包含多个级别。

在每个级别中,一组任务实例共享公共代码(脚本列表),但是在相应的基于索引的存储器地址上操作。

其本质是分层单指令多数据。

•GPU的硬件结构包含多个级别。

在每个级别中,调度元素操纵任务池,处理元件进行计算,并且存储器组件提供数据访问。

它的本质是分层的VonNeumann(指令驱动和分离的数据控制ALU)。

•GPGPU的调度机制包含多个级别。

在每个级别中,并行任务实例被无序地调度,而每个任务实例内的有序执行被保持。

它的本质是分层多线程。

•GPGPU的执行机制可以被认为是并行执行和流水线执行的组合。

对于任何粒度的任务实例,它是原子的,它的执行经过几个流水线阶段一个接一个。

然而,当我们打破任务的原子性时,它的执行是通过其子任务的并行执行来实现的。

这两种执行模式无缝融合,追求硬件功能的极限。

其本质是吞吐量计算。

•GPGPU的内存访问包含多个级别。

在每个级别中,阶段输入/输出过程作为操作数馈送/结果收集的充分和必要的条件。

其本质是层次移动数据到计算,其来自数据分布和访问分布之间的不一致性。

7.展望

未来,综合了多核CPU和GPU技术的集群一定是超级计算机的主流。

如何设计编程模型与应用来发挥这种多级粒度并行的最大潜能,将会是应用领域专家最大的期盼。

展望GPU的发展,我们期望下一代支持的编程模型超过2个级别,其中所有级别共享公共代码表示和处理硬件。

例如,每个脚本列表用级别索引标记,并且兼容硬件可以允许多个级别的任务实例同时驻留在其上,即使一些是其他的子任务。

CUDA的递归内核调用朝着这个方向迈出了显着的一步。

我们可以期望未来的GPU从指令驱动到数据驱动,甚至打破计算和存储之间的边界:

更具体地,将ALU和存储器单元混合在一起的架构,其中访问过程也是计算过程,反之亦然。

这样的电路可能具有与神经形态芯片类似的架构,并以有效的方式同时处理多个数据流。

我们可以期望未来几代的GPU支持跨级调度,其中所有级别共享一个共同的调度硬件。

更具体地,每个任务实例用任务索引和级别索引标记,并且分派组件可以允许以混合方式分派不同级别的任务实例。

我们可以期望未来世代的GPU通过反向移动数据到计算(即,移动计算到数据)来减少或甚至消除Stage-In/Out开销。

例如,架构将ALU和互连网络混合在一起,其中传输过程也是计算过程,反之亦然。

这样的电路可能借用多核和Hadoop的成功并揭示了多指令多数据行为。

GPU发展到今天,已经突破了无数技术屏障,最初因图形处理而诞生的硬件发展成为今天大规模并行计算领域的明星。

我们完全可以相信GPU的架构还会不断优化,并被越来越多的大型计算所采用。

参考文献

1.LiangHu,XilongChe,andSi-QingZheng.2016.AcloserlookatGPGPU.ACMComput.Surv.48,4,Article60(March2016),20pages.

2.《GPGPU编程技术:

从GLSL、CUDA到OpenCL  》  仇德元

3.刘金硕,刘天晓,吴慧.从图形处理器到基于GPU的通用计算.《武汉大学学报(理学版)》, 2013, 59

(2):

198-206

4.InsidePascal:

NVIDIA’sNewestComputingPlatform.

5.AMDRadeonRX480review:

Redefiningwhat'spossiblewitha$200graphicscard.

6.JayshreeGhorpade1,JitendraParande2.GpgpuProcessingInCUDAArchitecture.AdvancedComputing:

AnInternationalJournal(ACIJ),Vol.3,No.1,January2012

7.JohnD.Owens,MikeHouston,DavidLuebke.GPUComputing.ProceedingsoftheIEEE, 2008, 96(5):

879-899

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1