CUDA入门教程00:介绍
系列索引:CUDA入门教程索引
NVIDIA CUDA™(Compute Unified Device Architecture)是一款革命性的并行计算架构。作为一项同时支持硬件和软件的技术,CUDA 可利用图形处理器中的多颗计算核心进行通用计算处理工作,计算性能可获得显著提升。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。开发人员现在可以使用C语言来为CUDA™架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA™的处理器上以超高性能运行。将来还会支持其它语言,包括FORTRAN以及C++。
计算行业正在从只使用CPU的“中央处理”向CPU与GPU并用的“协同处理”发展。为打造这一全新的计算典范,NVIDIA®(英伟达™)发明了CUDA(Compute Unified Device Architecturem,统一计算设备架构)这一编程模型,是想在应用程序中充分利用CPU和GPU各自的优点。现在,该架构现已应用于GeForce®(精视™)、ION™(翼扬™)、Quadro以及Tesla GPU(图形处理器)上,对应用程序开发人员来说,这是一个巨大的市场。
在消费级市场上,几乎每一款重要的消费级视频应用程序都已经使用CUDA加速或很快将会利用CUDA来加速,其中不乏Elemental Technologies公司、MotionDSP公司以及LoiLo公司的产品。在科研界,CUDA一直受到热捧。例如,CUDA现已能够对AMBER进行加速。AMBER是一款分子动力学模拟程序,全世界在学术界与制药企业中有超过60,000名研究人员使用该程序来加速新药的探索工作。在金融市场,Numerix以及CompatibL针对一款全新的对手风险应用程序发布了CUDA支持并取得了18倍速度提升。Numerix为近400家金融机构所广泛使用。
CUDA的广泛应用造就了GPU计算专用Tesla GPU的崛起。全球财富五百强企业现在已经安装了700多个GPU集群,这些企业涉及各个领域,例如能源领域的斯伦贝谢与雪佛龙以及银行业的法国巴黎银行。随着微软Windows 7与苹果Snow Leopard操作系统的问世,GPU计算必将成为主流。在这些全新的操作系统中,GPU将不仅仅是图形处理器,它还将成为所有应用程序均可使用的通用并行处理器。
CUDA的应用
计算行业正在从只使用CPU的“中央处理”向CPU与GPU并用的“协同处理”发展。为打造这一全新的计算典范,NVIDIA(英伟达)发明了CUDA(Compute Unified Device Architecturem,统一计算设备架构)这一编程模型,是想在应用程序中充分利用CPU和GPU各自的优点。现在,该架构现已应用于GeForce(精视)、ION(翼扬)、Quadro以及Tesla GPU(图形处理器)上,对应用程序开发人员来说,这是一个巨大的市场。
支持CUDA的GPU销量已逾1亿,数以千计的软件开发人员正在使用免费的CUDA软件开发工具来解决各种专业以及家用应用程序中的问题。这些应用程序从视频与音频处理和物理效果模拟到石油天然气勘探、产品设计、医学成像以及科学研究,涵盖了各个领域。目前市面上已经部署了超过一亿颗支持CUDA的GPU,数以千计的软件开发人员正在使用免费的CUDA软件工具来为各种应用程序加速。
CUDA产生的原因
随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此NVidia推出CUDA,让显卡可以用于图像计算以外的目的。
CUDA体系结构的组成
- 开发库:开发库是基于CUDA技术所提供的应用开发库。
- 运行期环境:运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。
- 驱动:CUDA-enable的GPU的设备抽象层,提供硬件设备的抽象访问接口。也就是需要安装有nVIDIA硬件的电脑上安装相应的驱动来实现CUDA通用运算。
CUDA 的核心有三个重要抽象概念: 线程组层次结构、共享存储器、屏蔽同步( barrier synchronization),可轻松将其作为C 语言的最小扩展级公开给程序员。
CUDA 软件堆栈由几层组成,一个硬件驱动程序,一个应用程序编程接口(API)和它的Runtime, 还有二个高级的通用数学库,CUFFT 和CUBLAS。硬件被设计成支持轻量级的驱动和Runtime 层面,因而提高性能。
下一篇:CUDA入门教程01:安装与配置