英伟达CUDA在深度学习中扮演着什么角色
2019-04-09
"计算正在从CPU"中央处理"向CPU与GPU"协同处理"的方向发展。为了实现这一新型计算模式,英伟达发明了英伟达CUDA并行计算架构。该架构现在正运用于英伟达 (NVIDIA)Tesla、英伟达Quadro(NVIDIA Quadro)以及英伟达精视(NVIDIA GeForce)GPU上。对应用程序开发商来说,英伟达 CUDA架构拥有庞大的用户群。"
各领域CUDA扮演的角色
在科学研究领域,英伟达 CUDA 受到狂热追捧。例如,英伟达 CUDA 能够加快AMBER这款分子动力学模拟程序的速度。全球有6万余名学术界和制药公司的科研人员使用该程序来加速新药开发。在金融市场,Numerix和CompatibL已宣布在一款对手风险应用程序中支持英伟达 CUDA ,而且因此实现了18倍速度提升。
在GPU计算领域中,英伟达 Tesla GPU的大幅增长说明了英伟达 CUDA 正被人们广泛采用。目前,全球《财富》五百强企业已经安装了700多个GPU集群,从能源领域中的斯伦贝谢和雪佛龙到银行业中的法国巴黎银行,这些企业的范围十分广泛。
在消费级市场上,几乎每一款重要的消费级视频应用程序都已经使用CUDA加速,其中不乏Elemental-Technologies公司、MotionDSP公司以及LoiLo公司的产品。
在科研界,CUDA一直受到热捧。例如,CUDA现已能够对AMBER进行加速。AMBER是一款分子动力学模拟程序,全世界在学术界与制药企业中有超过60,000名研究人员使用该程序来加速新药的探索工作。
CUDA是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
发展现况
支持CUDA的GPU销量已逾1亿,数以千计的软件开发人员正在使用免费的CUDA软件开发工具来解决各种专业以及家用应用程序中的问题。这些应用程序从视频与音频处理和物理效果模拟到石油天然气勘探、产品设计、医学成像以及科学研究,涵盖了各个领域。
CUDA 的核心有三个重要抽象概念: 线程组层次结构、共享存储器、屏蔽同步,可轻松将其作为C语言的最小扩展级公开给程序员。
CUDA 软件堆栈由几层组成,一个硬件驱动程序,一个应用程序编程接口(API)和它的Runtime,还有二个高级的通用数学库,CUFFT 和CUBLAS。硬件被设计成支持轻量级的驱动和Runtime 层面,因而提高性能。
所支持的OS(operating system)
CUDA目前支持linux和Windows操作系统。进行CUDA开发需要依次安装驱动、toolkit、SDK三个软件。在安装目录/C/src目录下有很多的例程可以进行学习。
NVIDIA进军高性能计算领域,推出了Tesla&CUDA高性能计算系列解决方案,CUDA技术,一种基于NVIDIA图形处理器(GPU)上全新的并行计算体系架构,让科学家、工程师和其他专业技术人员能够解决以前无法解决的问题,作为一个专用高性能GPU计算解决方案,NVIDIA把超级计算能够带给任何工作站或服务器,以及标准、基于CPU的服务器集群。
CUDA是用于GPU计算的开发环境,它是一个全新的软硬件架构,可以将GPU视为一个并行数据计算的设备,对所进行的计算进行分配和管理。在CUDA的架构中,这些计算不再像过去所谓的GPGPU架构那样必须将计算映射到图形API(OpenGL和Direct 3D)中,因此对于开发者来说,CUDA的开发门槛大大降低了。CUDA的GPU编程语言基于标准的C语言,因此任何有C语言基础的用户都很容易地开发CUDA的应用程序。
由于GPU的特点是处理密集型数据和并行数据计算,因此CUDA非常适合需要大规模并行计算的领域。目前CUDA除了可以用C语言开发,也已经提供FORTRAN的应用接口,未来可以预计CUDA会支持C++、Java、Python等各类语言。可广泛的应用在图形动画、科学计算、地质、生物、物理模拟等领域。2008年NVIDIA推出CUDA SDK2.0版本,大幅提升了CUDA的使用范围。使得CUDA技术愈发成熟。
结尾
从最初发现GPU在深度学习计算方面的潜力,到如今几乎“无GPU不深度学习”的行业现状,英伟达毅然向人工智能转型,投入大量资源用以研发,不断推陈出新,极大地推动了GPU在人工智能计算的应用,同时更推动了人工智能行业的发展。说一句“深度学习计算≈英伟达”不算过分吧。