CUDA是什么

Fanly问答2020-08-12 16:04:34阅读(...)

CUDA是由NVIDIA所推出的一种集成技术,用户可利用NVIDIA的GeForce 8以后的GPU和较新的Quadro GPU进行计算。亦是首次可以利用GPU作为C-编译器的开发环境。

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 显卡上运行。

收藏0个人收藏
走进科技生活方式

评论交流

泪雪默认头像请「登录」后参与评论
  1. 加载中..