zoukankan      html  css  js  c++  java
  • GPU、CPU:不止一字之差那么简单

    1. 引言

      自1999年NVIDIA提出GPU的概念以来,GPU的高浮点运算能力引发了不少的话题,比如GPU将取代CPU。基于GPU的特殊性,研究人员正在从事相关方面的研究,以期充分地利用GPU高运算速度。

      随着计算机图形处理硬件的又一次升级,即计算机图形处理器的升级。图形处理器的应用已成为热门的课题。

      2. GPU的功能

      GPU(Graphic ProcessingUnit)即图形处理器。1999年NVIDIA公司发布GeForce 256图形处理芯片时,首先提出GPU的概念。一块标准的GPU主要包括2D单元、3D单元、视频处理单元、FSAA(Full Scene Anti—aliasing,全景抗锯齿)单元和显存管理单元等。

      它设计的宗旨是实现图形加速,现在最主要的是实现3D图形加速,因此它的设计基本上是为3D图形加速的相关运算来优化的,如消隐、纹理映射、图形的坐标位置变换与光照计算等等。这几年GPU发展迅猛,2007年NVIDIA甚至提出“重GPU核心,轻CPU频率”的论调。这是否意味着GPU时代的到来?

      3. GPU与CPU的比较

      GPU以其高速的浮点运算能力迅速地吸引了人们的眼球。

      其计算能力到底有多大?CPU的浮点运算能力一般在10 Gflops以下(每秒可进行10亿次浮点运算),而GeForce6系列的浮点运算能力已经在40 Gflops左右,GeForce7950GX2更是达到了384Gflops;在向量计算方面能够获得比CPU高出十倍的计算效率。

      这得益于它是对图形处理量身定制。GPU并行计算的能力更是强大,它内部具有快速存储系统,NVIDIA的8800有128个处理器,此外,GPU的硬件设计能够管理数千个并行线程,这数千个线程全部由GPU创建和管理而不需要开发人员进行任何编程与管理。然而,现在GPU还是协助CPU进行图形处理,着实浪费不少其运算能力。

      值得注意的是,如此强大的计算能力具有针对性———图形计算,如Z- buffering、纹理映射与光照计算等。这类计算都是针对大量的平行数据,运算的数据量大,但是运算的类型却并不复杂,还具有类似性,计算性强但是逻辑性不强,如矩阵运算就是图形运算的典型特征。而CPU是设计用来处理通用任务的处理、加工、运算以及系统核心控制等工作,CPU的微架构是为高效率处理数据相关性不大的计算类、复杂繁琐的非计算类等工作而优化的。所以现在CPU和GPU还在自己的轨道上各司其职。

      GPU特殊的硬件架构突出了对CPU的优势:拥有高带宽的独立显存;浮点运算性能高;几何处理能力强;适合处理并行计算任务;适合进行重复计算;适合图像或视频处理任务;能够大幅度降低系统成本。

     4. GPU的现状

      GPU引发了计算机可视化的革命。处理器巨头Intel感受到GPU带来的强大的冲击力,Intel专门开发了一套面向可编程的显示计算通用架构芯片的全新架构———Larrabee架构。它能带来的效果可从英特尔公司高级副总裁兼数字企业事业部总经理———帕特·基辛格在IDF峰会上的讲话得出答案。

      “可编程的显示计算通用架构芯片是一场革命,它将颠覆持续了几十年的显卡产业,可编程的显示计算通用架构芯片虽然不会马上替代显卡,但是在三四年之后,随着我们相关技术、产品的成熟上市,显卡产业将消亡。”

      按照英特尔的观点,随着可编程的显示计算通用架构芯片的成熟,它将逐步取代GPU的地位,显卡则会慢慢被集成取代,作为独立硬件生存的空间会越来越小。

      GPU如果只是作为显卡就太浪费了,因此NVIDIA推出CUDA(Compute Unified Device Architecture统一计算设备架构),让显卡可以用于图像计算以外的目的。并对GPU的功能进行了重新的定义,CUDA是一个革命性的计算架构和计算思路,能够让GPU在消费、商务、技术等应用方面大展拳脚,解决复杂的计算问题。CUDA能够更有效地使用性能日益提升的GPU性能,有效地利用GPU的高速运算能力,配合CPU进行高性能通用计算。

      GPU和高并行处理器都在同时间赛跑,快速的向前发展以抢占未来的市场,未来处理器的速度会在这次竞争中发展到什么地步值得我们期待。

      5. GPU的应用

      GPU应用的研究围绕着高浮点运算能力,可编程性和平行运算进行。到目前为止,GPU和CUDA的配合,主要应用于商业高端运算或者超级运算。如tesla高性能计算,GPU加速Matlab高性能计算,医疗图像的生成等。

      由于GPU的汇编指令比较复杂,而且对于各种版本的硬件的支持存在不统一的问题,一些高级语言(例如GLSL、HLSL)已经被一些大厂商开发出来,加快了对GPU编程的应用研究。从系统架构上看,GPU是针对向量计算进行了优化的高度并行的数据流处理器,其中包括两种流处理单元:多指令多数据流(MIMD)的处理单元———顶点处理流水线(Vertex Shader),单指令多数据流(SIMD)的处理单元———像素处理流水线。这种以数据流作为处理单元的处理器,在对数据流的处理上可以获取较高的效率,因此很多研究人员从事一个新的研究领域:基于GPU 的通用计算(GPGPU:General- Purpose Computation onGraphics Processors),其主要研究内容除了图形处理以外,考虑更为广泛的应用计算。GPU最初的设计思想给这个新的领域带来了问题。GPU是专门为图形处理设计的处理器,它具有自己的存储单元,在数据存取方式上存在一定的特殊性,而且通常对GPU进行开发的是一些游戏厂商,使用非标准的编程模式,编程环境和体系结构方面绝大部分被当做商业机密,没有对研究人员公开,可参考的资料就有限,研究人员在研究并行算法的同时还必须研究如何使GPU在进行通用计算时取得最高的性能。针对上面的问题,研究人员已经提出了GPU通用编程模型和方法,无疑推动了GPU在非图形学领域的应用。

      最近几年,在GPGPU方面取得了不少的成果,比如代数计算及流体模拟、数据库操作、频谱变换和滤波等。软件编程方面也有成果,高级绘制语言及实时绘制语言(绘制程序设计的思想源自于早年Pixar设计的RenderMan绘制软件,此软件多年来广泛应用于好莱坞电影制作的绘制),OpenGL shading language、斯坦福大学的RTSL(real- time shading language)、Microsoft的HLSL(high- level shading language) 以及NVIDIA的Cg在此方面具有较大的影响;流处理机编程环境及工具已开发出来扩大GPU的编程。

      6. 结语

      目前,CUDA和GPU的配合还不是很默契,真正面向民用市场还需一些时日,图形处理的市场越来越大,给GPU的发展提供了强大的驱动力。GPU应用于通用计算领域已经取得了一定的进展,GPU的身影会逐渐地出现在民用市场。

      GPU和CPU的最终结果会怎样?众多因素的影响现在还不得而知。GPU会不会像386时代一样,最初作为独立芯片的数学协处理器387,最终融合到CPU中而消亡或者NVIDIA真的开发出像CPU那样能处理各种通用运算的GPU,GPU时代到来。无数的遐想出现在我们的头脑,还是让市场来决定这个容易引起争议的问题。

     

    [转自:http://www.autooo.net/classid105-id75124.html]

  • 相关阅读:
    开发新技术展望系列课程(视频课程讲师:徐晓卓)
    VSTS风暴系列课程(视频课程讲师:王京京/王兴明/王然)
    Mysql索引的数据结构及索引优化
    CAP原则,分布式场景下为何只能取其二
    为什么使用Redission解决高并发场景分布式锁问题
    Java面试题(6)Redis
    外企英语面试常见问题及核心话术
    Nacos&Eureka&Zookeeper
    j2ee中DAO设计模式
    第一个随笔
  • 原文地址:https://www.cnblogs.com/wanghetao/p/2450352.html
Copyright © 2011-2022 走看看