NVIDIA GPU计算的关键技术解析

NVIDIA GPU计算的关键技术解析,第1张

 

  1999年,NVIDIA推出了首款图形处理器(GPU),它是迄今为止使用最广的并行处理器。源于对逼真及实时图像的渴求,GPU已成为既可以浮点运算又可以编程的处理器;如今的GPU在计算吞吐量和内存带宽上远优于CPU,使其成为加速数据并行应用程序的理想处理器。

  2003年起,NVIDIA开始对GPU进行非图形应用程序方面的探索。通过使用高级图形语言如DirectX、OpenGL和Cg,将各种数据并行算法移植于GPU。像蛋白质折叠、股票期权定价、SQL查询及MRI重建等问题都能通过GPU获得非凡的加速表现。这些早期将图形API用于通用计算的尝试被我们称为GPGPU程序。

  虽然GPGPU模型显示出不俗的加速性能,但依旧面临诸多问题。首先,它要求程序员具备有关图形API以及GPU架构的相关知识。其次,问题必须按照顶点坐标、纹理及着色程序的方式表达出来,极大地增加了程序的复杂性。第三,不支持诸如随机读写内存等基础的编程特性,大大限制了编程模型。最后,缺少对双精度运算的支持(直到最近)意味著有些科学应用程序不能运行在GPU上。

  为解决这些问题,NVIDIA采用了两项关键技术——G80统一图形与计算架构(最先采用于GeForce 8800、Quadro FX 5600与Tesla C870 GPU)和CUDA。CUDA作为一种软硬件架构,可采用多种高级编程语言对GPU进行编程。同时,这两种技术也代表着一种新的GPU应用方式。相比以前通过编程将专业图形单元与图形API结合不同,程序员可通过CUDA扩展来编写C语言程序,针对通用的大规模并行处理器。我们把这种新型GPU编程模式称之为“GPU计算”,它意味着更广泛的应用程序支持,更多编程语言的支持,是与初期GPGPU编程模型的本质分离。

  G80架构

  NVIDIA旗下GeForce 8800是被赋予了新型GPU计算模型的产品。2006年11月推出,基于GeForce 8800的G80为GPU计算所带来了的是一些关键性的创新:

  G80是首款支持C语言的GPU,允许程序员使用GPU所带来的计算力,而又无须再学习一门新的编程语言。

  G80是首款以单个、统一处理器取代顶点与像素管线的GPU,这种处理器可以执行顶点、几何、像素及计算程序。

  G80是首款利用标量线程处理器的GPU,从而消除了程序员手动管理向量寄存器。

  G80采用了单指令、多线程(SIMT)的执行模型,多个相互独立的线程可并行执行单条指令。

  G80对内部线程通讯采用了共享内存和栅障同步。

  2008年6月,NVIDIA对G80架构进行了重大改进。第二代统一架构——GT200(首次采用是在GeForce GTX 280,Quadro FX5800 和Tesla T10 GPU上)——将流处理器的核心数量(以下称其为 CUDA核心)从128增加至240。每个处理器的寄存器组都扩大了一倍,允许更多的线程任何时候在芯片上执行。增加硬件内存的联合存取以改善内存访问效率。另外,还添加了对双精度浮点运算的支持,以处理科学和高性能计算(HPC)应用。

  在设计每款新一代GPU时,NVIDIA都以改善现有应用性能与GPU可编程性为宗旨;更快速的应用性将能带来直接的效益,GPU在可编程性上的不断进步,使得它发展成为我们当下最通用的并行处理器。正是基于这样的理念,促使我们又着手研发GT200架构的继任者。

  

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2576377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-07
下一篇 2022-08-07

发表评论

登录后才能评论

评论列表(0条)

保存