- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《关于用于通用计算的GPU调研报告》.doc
关于用于通用计算的图形处理器的调研报告
一.引言
1.1 GPU简介
GPU,即图形处理器(Graphic Processing Unit),是一个相对于CPU的概念,它专门用来在个人电脑、工作站或游戏机上处理图形,影像等运算的微处理器。它是显卡的心脏,和显卡板载内存成为一个子系统,共同决定系统的图形处理性能。越来越多的图形应用GPU在现代的计算机中越来越重要,在CPU主宰性能几十年后GPU近年中迅速崛起,达到了和CPU平起平坐的地位。GPU是NVIDIA公司在1999年发布GeForce 256绘图处理芯片时首先提出的概念,在此之前,电脑中处理影像输出的显示芯片,通常很少被视为是一个独立的运算单元。而ATI亦提出VPU(Video Processing Unit)概念。GPU使显卡减少了对CPU的依赖,并分担了部分原本是由CPU所担当的工作,尤其是在进行3D图形处理时,功效更加明显。GPU所采用的核心技术有硬件座标转换与光源、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎,硬体TL(Transform and Lighting,多边形转换与光源处理)技术硬体TL可以说是GPU的标志。
1.2 基于GPU的通用计算
传统上GPU的应用被局限于处理图形渲染计算任务,拥有先天的强大并行计算能力的无疑是对计算资源的极大浪费。随着GPU可编程性的不断提高,利用GPU完成通用计算的研究渐渐活跃起来。将GPU用于图形渲染以外领域的计算称为GPGPU(eneral-Purpose Computing on Graphics Processing Units,基于GPU的通用计算)。GPGPU通常采用CPU+GPU异构模式,由CPU负责执行复杂逻辑处理和事务管理等不适合数据并行的计算,由GPU负责密集型的大规模数据并行计算。这种利用GPU强大处理能力和高带宽弥补CPU性能不足的计算方式,在发掘计算机潜在性能,成本和性价比方面有显著优势。但是,传统的GPGPU受硬件可编程性和开发方式的制约,应用领域受到了限制,开发难度也很大。,GPGPU,
最早的GPGPU开发直接使用了图形学API编程。这种开发方式要求编程人员将数据打包成纹理,将计算任务映射为对纹理的渲染过程,用汇编或者高级着色器语言(如GLSL、Cg、HLSL)编写shader程序,然后通过图形学API(Direct3D、OpenGL)执行。这种曲线救国的方式要求编程人员不仅要熟悉自己需要实现的计算和并行算法,还要对图形学硬件和编程接口有深入的了解。由于开发难度大,传统GPGPU没有被广泛应用。
2003年,斯坦福大学的Ian Buck等人对ANSI C进行扩展,开发了基于NVIDIA Cg的Brook源到源编译器。Brook可以将类似C的brook C语言通过brcc编译器编译为Cg代码,隐藏了利用图形学API实现的细节,大大简化了开发过程。但早期的Brook编译效率很低,并且只能使用像素着色器进行运算。受GPU架构限制,Brook也缺乏有效的数据通信机制。最先是ATI(现AMD)提出了通用计算的概念,并抢先发布了自家的通用计算平台Stream,但因为种种原因后续开发工作不是非常理想;而后NVIDIA公司开发了名为CUDA的通用GPU计算开发包给业界,并小有成果而英特尔方面也在紧锣密鼓地开发自己的新一代显示芯片——Larrabee,一种集成了10个x86处理器的图形显示单元,可以轻易将其转换为通用计算单元。
,,,,建立在不同的处理器架构上,比方说x86 CPU、GPU和STREAM架构GPU、Cell处理器乃至于ARM构架的DSP处理芯片等等Direct Compute,同样支持基于不同架构的GPU的通用计算。
2.1 NVIDIA的CUDA
2007年6月,NVIDIA推出了CUDA(Compute Unified Device Architecture,统一计算设备架构)。CUDA是一种将GPU作为数据并行计算设备的软硬件体系。到目前为止,CUDA的版本已经进行了三次版本提升,功能不断完善,能够很好地支持新硬件的特性。CUDA不需要借助于图形学API,并采用了比较容易掌握的类C语言进行开发。开发人员能够从熟悉的C语言比较平稳地从CPU过渡到GPU,而不必重新学习语法。当然,要开发高性能的GPU通用计算程序,开发人员仍然需要掌握并行算法和GPU架构方面的知识。
与以往的GPU相比,支持CUDA的GPU在架构上有了显著的改进,这两项改进使CUDA架构更加适用于GPU通用计算。一是采用了统一处理架构,可以更加有效地利用过去分布在顶点渲染器和像素渲染器的计算资源;二是引入了片内共享存储器,支持随机写入(scatter)和线程间通信。
图2.1GPU的处理
文档评论(0)