CUDA是什么?

来源:TechTMT.Com  作者:整理  日期:2022-02-25 17:59:33

CUDA(Compute Unified Device Architecture,统一计算架构)是由NVIDIA所推出的一种集成技术,是该公司对于 GPGPU 的正式名称。透过这个技术,用户可利用 NVIDIA 的 GeForce 8 以后的 GPU 和较新的 Quadro GPU 进行计算。亦是首次可以利用 GPU 作为 C-编译器的开发环境。

CUDA

NVIDIA 营销的时候,往往将编译器与架构混合推广,造成混乱。实际上,CUDA 可以兼容 OpenCL 或者自家的 C-编译器。无论是 CUDA C-语言或是 OpenCL,指令最终都会被驱动程序转换成 PTX 代码,交由显示核心计算。

目前,已有软件厂商利用 CUDA 技术,研发出 Adobe Premiere Pro 的插件。通过插件,用户就可以利用显示核心去加速 H.264/MPEG-4 AVC 的编码速度。速度是单纯利用 CPU 作软件加速的 7 倍左右。

在 NVIDIA 收购 AGEIA 后,NVIDIA 获取相关的物理加速技术,即是 PhysX 物理引擎。配合 CUDA 技术,显卡可以模拟成一颗 PhysX 物理加速芯片。目前,全系列的 GeForce 8 显示核心都支持 CUDA。而 NVIDIA 亦不会再推出任何的物理加速卡,显卡将会取代相关产品。

为了将 CUDA 推向民用,NVIDIA 举行一系列的编程比赛,要求参赛者开发程序,充分利用 CUDA 的计算潜能。但是,要将 GPGPU 普及化,还要看微软能否在 Windows 操作系统中,提供相关的编程接口。

2008 年 8 月,NVIDIA 推出 CUDA 2.0。2010 年 3 月 22 日,NVIDIA 推出 CUDA 3.0,仅支持 Fermi 及之后的架构。

CUDA 是一种由 NVIDIA 提出的并由其制造的图形处理单元(GPUs)实现的一种并行计算平台及程序设计模型。CUDA 给程序开发人员提供直接访问 CUDA GPUs 中的虚拟指令集和并行计算组件的存储器。

使用 CUDA 技术,GPUs 可以用来进行通用处理(不仅仅是图形);这种方法被称为 GPGPU。与 CPUs 不同的是,GPUs 有着侧重以较慢速度运行大量并发线程的并发流架构,而非快速运行单一线程。

软件发展者可以通过 CUDA 加速库,编译器指令(如 OpenACC)以及符合工业标准的程序设计语言(如 C,C 和 Fortran)扩展对 CUDA 平台进行操作。C/C 程序师可以使用“CUDA C/C ”,使用“NVCC”——NVIDIA 基于 LLVM 的 C/C 编译器进行编译;Fortran 程序师可以使用“CUDA Fortran”,使用 PGI 公司的 PGI CUDA Fortran 编译器进行编译。除了库、编译器指令、CUDA C/C 和 CUDA Fortran,CUDA 平台还支持其它计算接口,如 Khronos Group 的 OpenCL,Microsoft 的 DirectCompute,以及 C AMP。其协力厂商封装也可用于 Python,Perl,Fortran,Java,Ruby,Lua,Haskell,MATLAB,IDL 及 Mathematica 的原生支持。

在电脑游戏行业中,GPUs 不仅用于进行图形渲染,而且用于游戏物理运算(物理效果如碎片、烟、火、流体),比如 PhysX 和 Bullet。在计算生物学与密码学等领域的非图形应用上,CUDA 的加速效果达到可以用数量级来表示的程度。

CUDA 同时提供底层 API 与高端 API。最初的 CUDA 软件发展包(SDK)于 2007 年 2 月 15 日公布,支持 Microsoft Windows 和 Linux。而后在第二版中加入对 Mac OS X 的支持,取代 2008 年 2 月 14 日发布的测试版。所有 G8x 系列及以后的 NVIDIA GPUs 皆支持 CUDA 技术,包括 GeForce,Quadro 和 Tesla 系列。CUDA 与大多数标准操作系统兼容。Nvidia 声明:根据二进制兼容性,基于 G8x 系列开发的程序无需修改即可在未来所有的 Nvidia 显卡上运行。

分类:资讯
标签:是什么
编辑:tmt
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。文章版权归原作者所有,内容不代表本站立场!
免责声明: 阁下应知本站所提供的内容不能做为操作依据。本站作为信息内容发布平台,不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考! 如文中内容影响到您的合法权益(含文章中文字、图片等),请及时联系本站,我们会及时删除处理。