NVIDIA Tesla:迎接GPU通用计算时代

技术空间

在人们看来,GPU是用来处理图形的,但大家或许还不知道,GPU的作用远远不止这些。强大的浮点运算能力使得GPU可以像CPU一样被应用在更多领域的计算,也就是通用计算领域。NVIDIA早在GeForce3身上开启了GPU可编程功能,从GeForce4到GeForce8,NVIDIA将GPU的浮点运算性能一步步地提高,已经远远超过了CPU。NVIDIA刚刚发布GPU通用计算平台——Tesla,它将GPU从传统的图形处理中解脱出来,分担起CPU的一部分工作,其超强的浮点运算能力能适合于更多领域的通用化应用。NVIDIA Tesla的出现,不仅改变了CPU与GPU的现有定位,也给个人计算机、工作站或服务器带来了前所未有的高效处理能力。

GPU的浮点计算能力强于CPU

在PC技术领域,CPU是PC的核心动力,几乎所有的应用程序都依赖CPU处理,按照CPU处理数据的方式,目前单核CPU一次只能执行多个独立任务中的一个,下一个程序需要等待才能得到继续处理,依此类推。虽然超线程技术可以将该处理方式变得更有效,并且多核CPU的每个核心可以同时执行更多的任务,使得普通应用(如视频娱乐、日常办公)得到执行效率的提升,但相对专业图形工作站或大型服务器集群需要的并行计算,依然无法掩盖CPU自身性能的不足。

但GPU则不同,它的出现主要为了图像渲染,图像渲染需要高强度并行计算,GPU架构就是为计算密集型处理而设计。从图中我们很容易看到,随着时间的推移,GPU的浮点运算能力和CPU不在一个数量级。因此在GPU中,更多的晶体管被用于数据处理而不是数据存储与流控制,具有多达128个的处理单元以及相当高的存储带宽。也就是说,GPU是进行数据的并行处理,它把数据元素映射、规划为数以千计的并行处理线程,很多应用程序都有一个较大的数据集,这样就可以通过数据并行编程模式来加速它们的执行。换句话说,如果让GPU来处理CPU的相关任务,这恰恰正好可以解决CPU能力的不足。

33-d19-1.jpg
GPU浮点运算能力逐渐提高

CUDA架构用作GPU通用计算

2007年6月21日,NVIDIA公司发布了NVIDIA Tesla通用GPU计算解决方案,包括了系统产品和全新的开发环境。产品线的中心是基于GeForce8系列架构的GPU,其特点是支持独立128bit的单精度浮点单元,与CPU浮点单元一样支持各种高级浮点操作,兼容Intel和AMD的x86 32bit和64bit微处理器架构,兼容Microsoft 和 Linux 操作系统以及NVIDIA 统一处理架构,具有PCI Express总线,数据传输率高达4GB/s,同时支持桌面式和架装式配置。无疑,GeForce8特殊的缓存式架构进一步提高了ALU算术逻辑单元的浮点运算性能。

NVIDIA Tesla的开发环境包括CUDA(Compute Unified Device Architecture,统一计算设备架构)开发工具包和C编译器,CUDA是一种用于开拓GPU运算性能的软件架构,它包括了GeForce8架构的GPU、可访问GPU上并行处理资源的C编译器及专用驱动。当CUDA程序执行时,GPU辅助CPU进行通用运算工作。GPU可以处理大量的并行信息,同时组织、解释与后台交流要处理的信息。应用程序的计算密集型部分要被执行很多次,每次由主应用程序提交的不同数据,经过编译后由GPU并行执行。CUDA采用C语言创建线程程序并行处理大量的数据,从而简化GPU上的并行计算。在CUDA上编写并在Tesla运行的程序,能够同时处理数千个线程,从而达到高效的计算性能,使GPU 迅速解决复杂的计算难题。

33-d19-2.jpg
GPU辅助CPU进行通用运算

NVIDIA Tesla产品家族

目前NVIDIA Tesla家族拥有C870计算处理器、D870桌面超级计算机、S870服务器三款产品,其中Tesla C870采用了GeForce 8系列GPU(具有128个处理单元),采用了PCI Express ×16接口,拥有1.5GB GDDR3显存容量,内存带宽为76.8 GB/s,具有518Gflops浮点运算能力,它与多核CPU 系统并行使用,可以为超级个人计算机创建一个灵活的计算解决方案。Tesla C870没有显示接口,但保留了完整的OpenGL和 DirectX 功能,也可以支持基于图形API的程序,因此可以将其看作是NVIDIA Quadro专业显卡的通用计算版本,售价约1499美元。

Tesla D870桌面超级计算机装备了两个 GeForce 8系列GPU,拥有3GB GDDR3显存容量,拥有超过1Tflops(1Tflops =1000Gflops)浮点运算能力,可以通过PCI Express ×16 或 PCI Express ×8接口连接到工作站。其实它相当于外置图形工作站,在机箱里安装两块显卡,然后通过一块特殊的子卡来传输PCI-E ×16信号。用户安装、使用和维护非常方便,可以创建一个最先进HPC(高性能计算)解决方案,不过售价要7500美元。

Tesla S870是一台标准的1U服务器,它与Tesla D870一样属于外置显卡解决方案,机箱内部安装了4个GeForce8系列GPU,拥有6GB GDDR3显存容量,拥有超过2Tflops浮点运算能力,可以通过PCI Express ×16 或 PCI Express ×8接口连接到服务器。Tesla S870服务器可以轻松升级,来解决最复杂的数据密集型 HPC 问题,标准配置的售价约12000美元。

33-d19-3.jpg
NVIDIA Tesla C870计算处理器
33-d19-4.jpg
NVIDIA Tesla D870桌面超级计算机
33-d19-5.jpg
NVIDIA Tesla S870 GPU服务器

NVIDIA Tesla发展趋势

从处理性能来看,NVIDIA Tesla通用 GPU可以使得PC和工作站具有超级计算的能力,并且可以扩展服务器集群的处理范围,以解决目前CPU集群不能处理的复杂问题。例如一个Tesla C870 GPU的运算能力相当于高端双核CPU的10倍以上,而Tesla S870和Tesla D870的运算能力更是达到了数十台甚至百台普通服务器的级别,同时GPU的执行效率很容易达到90%以上。在实际应用方面,NVIDIA Tesla通用 GPU适合应用于地震模拟、计算生物学、商业风险计算、医学成像、物理仿真等领域。

实际上,早在GeForce3时代,GPU可编程序幕就已经拉开,所有显卡厂商都开始在GPU可编程性能上苦下功夫。到了DirectX 9时代,微软定义的Shader已经赋予了程序员极大的灵活性,并且采用类似于C++高级语言来编写Shader指令。从发展趋势看,GPU已经越来越多地具有CPU的通用性和灵活性,而NVIDIA Tesla的到来将GPU通用时代演绎到了极致。例如在医学成像领域的CAT(数字层析X 射线照相术)上,NVIDIA Tesla C870可以让本来要花费5个小时才能完成的扫描,最终降低到了只要5分钟就可以完成计算,使医生很快就可以得到成像的图片并给出诊断结果。