CUDA

CUDA(Compute Unified Device 建筑),是NVIDIA发明的一种并行计算平台和编程模型。它通过利用图形处理器 (GPU) 的处理能力,可大幅提升计算性能。

CUDA包含了API、C编译器等,能够利用显卡核心的片内L1 Cache共享数据,使数据不必经过内存-显存的反复传输,shader之间甚至可以互相通信。软件开发商、科学家以及研究人员正在各个领域中运用CUDA,其中包括图像与视频处理、计算生物学和化学、流体力学模拟、CT图像再现、地震分析以及光线追踪等。

CUDA充当NVIDIA各GPU系列的通用平台,可以跨GPU配置部署并扩展应用,GPU的雏形为图形加速器,在90年代可编程程度逐步提高,最终在1999年促成了NVIDIA首款GPU的诞生。之后,研究人员和数据科学家很快就开始将此GPU的卓越浮点性能应用于通用计算。2003 年,Ian Buck 带领的一支研究团队推出了首个广泛采用的编程模型Brook,通过数据并行构造实现了对C的扩展。Ian Buck 后来加入了NVIDIA;在他的带领下,NVIDIA 于2006年发布了CUDA,也即首款用于GPU通用计算的解决方案。CUDA生态系统自创立以来已取得了迅速发展,现已涵盖软件开发工具、多种服务以及基于合作伙伴的解决方案。CUDA 工具包中包含多个库、多种调试和优化工具、一个编译器以及一个用于部署应用的运行环境库。

开发历史

随着GPU计算的高速发展,NVIDIA公司成功地抓住了通用计算的时代脉搏,它提出的CUDA C编程接口基于NVIDIA架构显卡,其通过核函数控制GPU线程进行计算,把Block运行快映射到SM以及把Thread运行单元映射到SP,通过物理结构与逻辑结构相结合的方式,成功地把SIMD架构程序转移到GPU上进行计算,通过GPU上数以千计的基本计算单元来实现中央处理单元(Centeral Processing Unit, CPU)多核所不能达到的计算效率。

计算正在从CPU(中央处理)向CPU与GPU(协同处理)的方向发展。为了实现这一新型计算模式,英伟达发明了CUDA 并行计算架构。该架构现在正运用于英伟达(NVIDIA)Tesla、英伟达Quadro(NVIDIA Quadro)以及英伟达Geforce(NVIDIA GeForce)GPU上。对应用程序开发商来说,英伟达CUDA 架构拥有庞大的用户群。d

在科学研究领域,英伟达CUDA受到狂热追捧。如英伟达CUDA能够加快AMBER这款分子动力学模拟程序的速度。全球有6万余名学术界和制药公司的科研人员使用该程序来加速新药开发。在金融市场,Numerix和CompatibL已宣布在一款对手风险应用程序中支持英伟达CUDA,而且因此实现了18倍速度提升。

在GPU计算领域中,英伟达Tesla GPU的大幅增长说明了英伟达CUDA正被人们广泛采用。目前,全球《财富》五百强企业已经安装了700多个GPU集群,从能源领域中的斯伦贝谢雪佛龙股份有限公司到银行业中的法国巴黎银行,这些企业的范围十分广泛。

随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此英伟达推出CUDA,让显卡可以用于图像计算以外的目的。

目前只有G80、G92、G94、G96、GT200、GF100、GF110、GK100、GK104、GK107平台(即GeForce 8~GeForce GTX780Ti)的英伟达显卡才能使用CUDA,工具集的核心是一个c语言编译器。G80中拥有128个单独的ALU,因此非常适合并行计算,而且数值计算的速度远远优于CPU。

CUDA(Compute Unified Device 建筑)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。

从CUDA体系结构的组成来说,包含了三个部分:开发库、运行期环境和驱动。

开发库是基于CUDA技术所提供的应用开发库。提供了两个标准的数学运算库——CUFFT(离散快速傅里叶变换)和CUBLAS(离散基本线性计算)的实现。这两个数学运算库所解决的是典型的大规模的并行计算问题,也是在密集数据计算中非常常见的计算类型。开发人员在开发库的基础上可以快速、方便的建立起自己的计算应用。此外,开发人员也可以在CUDA的技术基础上实现出更多的开发库。

运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。基于CUDA开发的程序代码在实际执行中分为两种,一种是运行在CPU上的宿主代码(Host Code),一种是运行在GPU上的设备代码(Device Code)。不同类型的代码由于其运行的物理位置不同,能够访问到的资源不同,因此对应的运行期组件也分为公共组件、宿主组件和设备组件三个部分,基本上囊括了所有在GPGPU开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的编程接口实现各种类型的计算。

由于目前存在着多种GPU版本的英伟达显卡,不同版本的GPU之间都有不同的差异,因此驱动部分基本上可以理解为是CUDA-enable的GPU的设备抽象层,提供硬件设备的抽象访问接口。CUDA提供运行期环境也是通过这一层来实现各种功能的。目前基于CUDA开发的应用必须有NVIDIA CUDA-enable的硬件支持,NVIDIA公司GPU运算事业部总经理Andy Keane在一次活动中表示:一个充满生命力的技术平台应该是开放的,CUDA未来也会向这个方向发展。由于CUDA的体系结构中有硬件抽象层的存在,因此今后也有可能发展成为一个通用的GPGPU标准接口,兼容不同厂商的GPU产品。

功能服务

以上参考资料

基本信息

CUDA(Compute Unified Device Architecture)中文名为计算统一设备架构,是由英伟达(NVIDIA)开发的一套非常流行的并行计算平台和编程模型。它只支持NVIDIA GPU卡。OpenCL则用来为其他类型的GPU编写并行代码,比如AMD英特尔,但它比CUDA更复杂。CUDA可以使用简单的编程API在图形处理单元(GPU)上创建大规模并行应用程序。CUDA允许程序员指定CUDA代码的哪个部分在CPU上执行,哪个部分在GPU上执行。

CUDA架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。CUDA是一个完整的解决方案,包含了API、C编译器等,能够利用显卡核心的片内L1 缓存共享数据,使数据不必经过内存-显存的反复传输,shader之间甚至可以互相通信。对数据的存储也不再约束于以往GPGPU的纹理方式,存取更加灵活,可以充分利用stream out特性。以上几点都将大大提高GPGPU应用的效率。在游戏中可以使用CUDA来让GPU承担整个物理计算,而玩家将会获得另他们感到惊奇的性能和视觉效果。另外,用于产品开发和巨量引擎数据分析的商业软件也可以通过它来使用一台工作站或者服务器完成以前需要大规模的计算系统才能完成的工作。这一技术突破使得客户可以任何地方进行实时分析与决策。同时,一些以前需要很先进的计算技术来达到的强大计算能力的科学应用程序,也不再受限在计算密度上;使用CUDA的计算可以在现有的空间里为平台提供更强大的计算性能。CUDA采用c语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。

工具包

工具包是一种针对支持CUDA功能的GPU(图形处理器)的C语言开发环境

CUDA开发环境包括:

以上参考资料

优缺点

CUDA优点:

CUDA缺点:

相关产品

以上参考资料

发展现状

支持CUDA的GPU销量已逾1亿,数以千计的软件开发人员正在使用免费的CUDA软件开发工具来解决各种专业以及家用应用程序中的问题。这些应用程序从视频与音频处理和物理效果模拟到石油天然气勘探、产品设计、医学成像以及科学研究,涵盖了各个领域。CUDA目前支持Linux和Windows操作系统。进行CUDA开发需要依次安装驱动、toolkit、SDK三个软件。在安装目录/C/src目录下有很多的例程可以进行学习。

英伟达进军高性能计算领域,推出了Tesla\u0026CUDA高性能计算系列解决方案,让科学家、工程师和其他专业技术人员能够解决以前无法解决的问题,作为一个专用高性能GPU计算解决方案,NVIDIA把超级计算能够带给任何工作站或服务器,以及标准、基于CPU的服务器集群。

“生成式AI时代和AI的IPhone时刻已经到来”,在全球范围内白热化算力争霸的当下,英伟达已经赢得了竞争先机,而其并行计算和编程平台CUDA可能是最重要的“幕后英雄”。凭借强大而丰富的计算库,CUDA得到了算法工程师的认可,甚至被认为是“巩固英伟达硬件市场地位的护城河”。

相关事件

澎湃新闻2024年3月6日报道:英伟达CUDA11.6及更高版本的EULA的兼容问题引发行业广泛关注。3月5日晚,摩尔线程发布声明称,公司关注到网络上对于英伟达CUDA兼容相关的报道,摩尔线程MUSA/MUSIFY未受影响。“英伟达CUDA11.6及更高版本的EULA(最终用户许可协议)中的某条款提到,“您不能逆向工程、反编译或反汇编使用此SDK生成的任何结果,并在非英伟达平台上进行转译。”

应用领域

计算机视觉应用:计算机视觉和图像处理算法是计算密集型的。越来越多的摄像头在捕获高分辨率图像时,需要实时处理这些大图像。随着这些算法实现CUDA加速,图像分割、目标检测和分类等应用可以实现超过30帧/秒的实时帧率性能。CUDA和GPU允许对深度神经网络和其他深度学习算法进行更快的训练,这改变了计算机视觉的研究。英伟达正在开发多个硬件平台,如Jetson TK1、Jetson TX1和Jetson TX2,这些平台可以加速计算机视觉应用。英伟达drive平台也是为自动驾驶应用而设计的平台之一。

医学成像:在医学成像领域,GPU和CUDA被广泛应用于磁共振成像和CT图像的重建和处理。这大大减少了这些图像的处理时间。现在,带有GPU的设备,可以借助一些库来使用CUDA加速处理这些图像。

金融计算:所有金融公司都需要以更低的成本进行更好的数据分析,这将有助于做出明智的决策。它包括复杂的风险计算及初始和寿命裕度计算,这些都必须实时进行。GPU帮助金融公司在不增加太多间接成本的情况下,实时地做多种分析。

生命科学、生物信息学和计算化学:模拟脱氧核糖核酸基因、测序和蛋白质对接是需要大量计算资源的计算密集型任务。GPU有助于这种分析和模拟。GPU可以运行普通的分子动力学、量子化学和蛋白质对接应用程序,比普通CPU快5倍以上。

天气研究和预报:与CPU相比,利用GPU和CUDA的几种天气预报应用、海洋建模技术和海啸预测技术可以进行更快的计算和模拟。

电子设计自动化saber仿真软件):随着日益复杂的超大规模集成电路技术和半导体制造工艺的发展,使得EDA工具的性能在这一技术进步上落后。它导致了模拟不完整和功能bug的遗漏。因此,EDA行业一直在寻求更快的仿真解决方案。GPU和CUDA加速正在帮助这个行业加速计算密集型EDA模拟,包括功能模拟、placement和rooting,以及信号完整性和电磁学、SPICE电路模拟等。

政府和国防:GPU和CUDA加速也被政府和军队广泛使用。航空航天、国防和情报工业正在利用CUDA加速将大量数据转化为可操作的信息。

游戏:更真实游戏效果,GeForce PhysX物理加速。PhysX物理加速技术的加入到GeForce GPU中,通过强大的CUDA架构,使PhysX物理加速技术快速移植到GeForce GPU中成为了可能。不久前,支持GeForce8/9/200系列的显卡PhysX物理驱动终于发布了,通过物理加速驱动,使GPU能分担CPU的工作,从而提高游戏的执行效率。英伟达宣称,PhysX是目前最先进的物理加速引擎。

内容创作:很多内容创作者更看重CPU,的确在早些时候CPU是各种专业软件的后期渲染输出的主力,和CPU强大的综合性能不同,GPU在专业运算上其实更具有优势。特别是近年来,随着NVIDIA GeForce GPU搭载了CUDA通用并行计算架构,该架构让GPU可以参与解决复杂的计算问题,同时开发起来难度也不算太大,所以,现在已经从单纯的CPU计算时代开始逐渐转向GPU加速传统计算的时代的时代。

超算:一个现代超级计算系统实际上可能由大量节点组成,每个节点包含2到32颗常规CPU以及1到16个GPU。通常还会有一个高速网络和一个数据存储系统。该系统的软件可以使用传统编程语言(如C/C++Fortran等)的组合编写,结合用于CPU并行化的消息传递系统以及用于GPU的CUDA或OpenCL。所有这些组件都必须进行调整和优化,以实现整个系统的最佳性能。

人工智能:随着人工智能(AI)的迅速发展,越来越多的应用需要巨大的计算资源。这给传统的计算机体系结构带来了巨大的挑战。其中一个被广泛使用的解决方案是用图形处理器(GPU)加速计算,而必须提到的是,英伟达的CUDA架构已经成为这一领域的领导者。CUDA架构为AI带来了革命性的影响。

交通限速牌识别:智能识别交通限速牌对智能驾驶车辆速度调节和安全行驶有着重要意义。为有效解决交通限速牌识别问题, 提出一种基于统一计算架构 (Computer Unified Device Architecture, CUDA) 的实时交通限速牌识别算法。实验证明, 基于CUDA的交通限速牌识别算法具有良好的适应性和准确性。

影响评价

CUDA、PhysX、3D Stereo、SLI,这四项在业界内独一无二的视频效果处理、加速技术被英伟达誉为GeForce的四大内功,在GPU技术飞速发展的今天,NVIDIA无疑会将GPU应用带领至一个全新的领域,显卡未来将有可能不再单一是一张视频卡。(太平洋电脑网评)

CUDA工具包推出已有1年,它的推出马上受到了众多软件/游戏开发商以及科研机构和程序爱好者的欢迎,NVIDIA方面也将发布最新的CUDA 2.0版本。相信在未来,CUDA将会受到越来越多的领域的支持。目前,支持CUDA环境的GPU主要有采用统一渲染架构的图形处理器。(太平洋电脑网评)

作为NVIDIA一直以来最高级别的合作伙伴,讯景近来在对NVIDIA GeForce四大内功进行了广泛的宣传,新科技慢慢改变我们的生活,Badaboom、奥多比 CS4。越来越多的软件支持CUDA运算,而GeForce PhysX目前还处在起步阶段,但已经有多款尚未发布的游戏已经宣称将支持NVIDIA的物理加速技术,游戏世界的视觉革命已经开始了,我们期待PhysX带来更多的惊喜。(太平洋电脑网评)

参考资料

核心AIC全力加速!讯景9系列显卡物理加速测试.新浪科技.2024-03-06

CUDA.www.nvidia.cn.2024-03-07

CUDA 专区.developer.nvidia.cn.2024-03-07

英伟达CUDA在深度学习中扮演着什么角色.AET电子技术应用.2024-03-06

突破频率极限!映众GTS450双雄详细评测.太平洋电脑网.2024-03-08

Cuda.长安大学高性能计算平台.2024-03-08

详细解释CUDA以及CUDA应用实例演示.太平洋电脑网.2024-03-08

高性能计算机集群以及云平台.中国科学院重庆绿色智能技术研究院.2024-03-08

CUDA.OSCHINA社区.2024-03-08

算力芯片的“CUDA难题”.百家号.2024-03-08

英伟达禁止第三方使用CUDA?摩尔线程:旗下产品不涉及,开发者可放心使用.澎湃新闻.2024-03-08

生产力倍增器,NVIDIA Studio让创意更加轻快.网易.2024-03-08

GPU异构计算和CUDA程序简介 ¶.中国科大超算中心用户使用手册.2024-03-08

CUDA对人工智能的影响.百家号.2024-03-08