cuda是Compute Unified Device Architecture的缩写,中文叫统一计算架构。nvidia公司推出的一套编程环境,包括驱动,sdk,toolkit等。让nvidia gpu可以完成通用计算任务的一种集成技术。
CUDA 是显卡厂商 NVIDIA 推出的运算平台,只能用于自家 GPU 的并行计算框架,只有安装这个框架才能够进行复杂的并行计算。它包含了 CUDA 指令集架构(ISA)以及 GPU 内部的并行计算引擎。 开发人员现在可以使用 C 语言来为 CUDA™架构编写程序。主流的深度学习框架也都是基于 CUDA 进行 GPU 并行加速的,几乎无一例外。在这个平台上,可以使用 NV 公司提供给你的各种便捷计算工具来进行计算,不需要你自己再来开发这些工具。
计算行业正在从只使用 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 越来越强大,而且 GPU 为显示图像做了优化。在计算上已经超越了通用的 CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此 NVidia 推出 CUDA,让显卡可以用于图像计算以外的目的。
CUDA 体系结构的组成
开发库:开发库是基于 CUDA 技术所提供的应用开发库。
运行期环境:运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。
驱动:CUDA-enable 的 GPU 的设备抽象层,提供硬件设备的抽象访问接口。也就是需要安装有 nVIDIA 硬件的电脑上安装相应的驱动来实现 CUDA 通用运算。
什么是 CUDNN
NVIDIA cuDNN 是用于深度神经网络的 GPU 加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN 可以集成到更高级别的机器学习框架中,如谷歌的 Tensorflow、加州大学伯克利分校的流行 caffe 软件。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是简单调整性能,同时还可以在 GPU 上实现高性能现代并行计算。
CUDA 与 CUDNN 的关系
CUDA 看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。cuDNN 是基于 CUDA 的深度学习 GPU 加速库,有了它才能在 GPU 上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。但是 CUDA 这个工作台买来的时候,并没有送扳手。想要在 CUDA 上运行深度神经网络,就要安装 cuDNN,就像你想要拧个螺帽就要把扳手买回来。这样才能使 GPU 进行深度神经网络的工作,工作速度相较 CPU 快很多。