CUDA

常见问题(FAQ)

NVIDIA CUDA 是什么?

NVIDIA CUDA 是 NVIDIA 并行计算架构在 GPU 中的名称。NVIDIA 提供了 NVIDIA CUDA 架构编程的全套工具包,其中包括编译器、调试器、分析器、库以及开发者交付运用 CUDA 架构的生产质量产品所需的其它信息。NVIDIA CUDA 架构也支持 C 和 Fortran 等标准语言,以及 OpenCL 和 DirectCompute 等用于 GPU 计算的 API。

使用 NVIDIA CUDA 的性能提升如何?

这要取决于具体问题在该架构上的映射情况。对于数据并行应用,提速 10 倍到 200 倍不等。

有关使用 NVIDIA CUDA 加速应用程序的示例,请查看 NVIDIA CUDA 专区网页 www.nvidia.cn/cuda

NVIDIA CUDA 支持哪些操作系统?

NVIDIA CUDA 支持 Windows XP、Windows Vista、Windows 7、Linux 和 OS X。这些操作系统的 32 位和 64 位版本都支持。

哪些应用支持NVIDIA CUDA ?

一些消费类应用示例

  • Badaboom – 视频编码
  • MotionDSP – vReveal (视频增强 – 降噪、提高分辨率、稳定图像)
  • ArcSoft – SimHD (提升到高清)
  • CyberLink– PowerDirector 7 (编码、视频过滤)
  • Pegasys – TMPGEnc 4.0 Xpress (视频过滤,包括降噪、锐化)
  • SETI@home (分析搜寻外星人的无线电望远镜信号)

对于游戏玩家而言,「镜之边缘」、「圣域2」以及「雪域危机」等游戏可以用 NVIDIA CUDA 来进行 PhysX 游戏加速

CUDA 是一种编程语言吗?

CUDA 是我们用于 GPU 计算的架构,能在 GPU 上运行标准 C 语言。为实现这一点,NVIDIA 定义了一套通用计算指令集 (PTX) 和一小部分C语言扩展集,从而让开发者充分利用我们 GPU 中强大的并行计算能力。Portland Group 为 NVIDIA CUDA 架构上的 Fortran 提供支持,而其它一些公司则为 Java、Python、.NET 等其它语言提供支持。

我们用术语 “CUDA C” 来描述开发者指定 GPU 上要执行的功能、GPU 内存如何使用、应用程序如何使用 GPU 的并行处理功能所使用的语言和一小部分扩展集。

NVIDIA 的 C 语言编译器是使用 Edison Design Group C 语言分析器及 Open64 编译器构建的,并且它进行了扩展以支持 CUDA C 扩展。很多CPU公司在他们的编译器中都广泛使用 EDG 分析器和 Open64 编译器。

GPU 编程难吗?

这实际上就是重要代码的并行处理难不难的问题。无论是对于 CPU 还是对于 GPU,并行处理的行业难题都在于确定哪些算法占用了大量的计算时间 (关键路径),并且只移植这些将扩展的算法。

NVIDIA CUDA 架构大大减轻了手动管理并行机制的负担。为 NVIDIA CUDA 架构编写的算法实际上就是可以在多个不同处理器上同步运行的串行算法,常常称之为“内核”。GPU 通过在 GPU 中的多个处理器上启动成千上万个实例,来提取该内核并对它执行并行处理。由于大多数算法是作为串行算法启动的,因此移植程序到 NVIDIA CUDA 架构不费吹灰之力,就和使用 CUDA C 将一个循环转换为一个 CUDA 内核一样简单。您不必像对待现代多核 CPU 一样,将整个程序完全重构为多线程程序。

OpenCL 和 DirectCompute 在 NVIDIA CUDA 架构所使用的编程模式方面极其相似,很多开发者认为这种编程模式比并行处理的其它方法更容易获得出色、可扩展的性能。

现在有学生可以学的 GPU 计算课程吗?

在伊利诺伊大学上了第一堂计算课程的 12 个月内,就有300多所大学、学院和学校开设使用 CUDA SDK 和工具包的并行编程课程。另外,还有 1000 多所大学开设了一般性的并行编程课程,为学习如何对其专攻领域的算法应用并行处理的学生传授基础知识。这是几十年来计算机科学教学领域发生的最大转变之一。

有关提供 NVIDIA CUDA 架构编程课程的学校的完整地图和名单

NVIDIA 支持 OpenCL 或 DirectCompute 吗?

当然 - 我们支持所有标准 API。在 GDC 09 上,NVIDIA 展示了用我们的 C 语言编程环境以及 API、OpenCL、DirectCompute 编写的程序示例。OpenCL 是在 NVIDIA GPU 上开发的,而 NVIDIA 在十二月份举行的亚洲 SIGGRAPH 大会上率先展示了在 GPU 上运行的 OpenCL 应用程序。2009 年 8 月,NVIDIA 针对战略开发商发布了 OpenCL 驱动程序。同时 NVIDIA 也是在其 GPU 中率先提供 DirectCompute 支持的公司。

如需了解更多信息,敬请访问http://www.nvidia.cn/object/cuda_opencl_new_cn.htmlhttp://www.nvidia.cn/object/cuda_directcompute_cn.html

NVIDIA CUDA 与 OpenCL 有何关联?

OpenCL 及其它编程界面都是受 CUDA C 编程模式的启发。OpenCL、DirectCompute、CUDA C 和 Portland Group 的 CUDA Fortran 扩展都是使用相似的理念来将并行应用程序移植到 GPU 上。

NVIDIA 推荐开发者使用的语言有哪些? 是 OpenCL、CUDA C,还是 CUDA FORTRAN 或 DirectCompute? 为什么现在有了 OpenCL 有些开发者还是坚持使用 CUDA C? 它对开发者有什么好处?

这要归结于个人喜好。开发者喜欢使用他们最感得心应手的编程界面,也就是能支持他们惯用的开发环境、库以及操作系统的编程界面。

由于 NVIDIA 和 CUDA 架构支持以上所有语言,因此选择哪种语言完全在于开发者本人。开发者对编程环境的选择基于这几个典型的问题:要开始编码的时间、现在所使用的编程语言、需要支持的操作系统、需要实施的其它代码或库、供应商技术支持、开发者使用的传统代码等等。

随着其它语言和 API 的支持逐渐成熟,开发者可以根据需要来移植代码,因为很多编程理念都是相似的。现今 CPU 的开发就是这样,没人强迫开发者使用 C、C++、C#、Java – 而是由开发者自行选择,而最终开发者都会受益,因为他们的选择空间非常大。